Forums Últimos mensajes - Powered by IBM
 

Bloqueo de hoja con macros

31/05/2010 - 14:35 por Alfonso | Informe spam
Al abrir el libro(5 hojas), (las macros están deshabilitadas), en la 1ª
aparecen en varias filas, por distintos conceptos, todos los 'Nombres', que
mediante la macro incluida en el apartado 'Módulo' del VBAProyect::

"Function TomarClientes(Clientes As Range, Claves As Range, Clave) As String
Dim Celda As Range, Fila As Long: TomarClientes = "": Fila = 1
For Each Celda In Claves
If LCase(Celda) = LCase(Clave) Then
If TomarClientes <> "" Then TomarClientes = TomarClientes & ", "
TomarClientes = TomarClientes & Clientes.Cells(Fila)
End If: Fila = Fila + 1
Next
End Function"

toma de las hojas 2, 3, 4, donde se ponen estos 'Nombres'. El primer
problema es que si en una de cualquiera de las filas, de las hojas 2, 3 ó 4,
donde se incluyen estos 'Nombres', incluyo uno o varios más, en lugar de
aparecer todos los nombres, incluidas las filas donde NO he modificado,
desaparecen los 'Nombres' y aparece #¿NOMBRE? y no vuelven a poder verse
hasta que habilito las macros.

Además de la macro anterior, este Libro tiene también otra macro:

"Private Sub Worksheet_Calculate()
Dim Celda As Range
Application.ScreenUpdating = False
Application.EnableEvents = False
On Error GoTo Salida
For Each Celda In Cells.SpecialCells(xlCellTypeFormulas)
If InStr(Celda.Formula, "TomarClientes") _
Then Celda.WrapText = False: Celda.WrapText = True
Next
Salida:
Application.EnableEvents = True
End Sub"

Que creo que es para que las filas se abran y se ajusten, en función del
número de 'Nombres' que se incluyan

Y por último en 'ThisWorkbook' tiene otra macro, porque las hojas están
protegidas con clave de acceso:

"Private Sub Workbook_Open()
Worksheets("LIQUIDACION").Protect _
Password:="xxxxxxx0000", _
UserInterfaceOnly:=True
End Sub"

Y el segundo problema y, realmente importante, es que una vez deshabilitadas
las macros, y accedo mediante la clave para abrir las hojas y modificar
campos, fórmulas o formatos, cualquier "copiar - pegar" sencillo tanto de
formato como de fórmulas, rotulo o cualquier otra cosa, me bloquea lo hoja y
tengo que salirme de ella. Se que es un tema de las macros, porque sin
habilitarlas trabajo en las hojas sin problema, pero como no son mias (me
las facilitó Hertor Miguel), y yo de macros no entiendo nada absolutamente,
es por lo que recabo vuestra ayuda.
Espero haberme expresado para hacerme entender.
Gracias y saludos.
 

Leer las respuestas

#1 Héctor Miguel
01/06/2010 - 00:13 | Informe spam
hola, Alfonso !

el inconveniente numero 1 me parece logico:
mientras NO habilites las macros, no se ejecuta ningun procedimiento (ni Sub ni Function)
por esto es que las funciones personalizadas, al no ser "reconocidas" (por excel) devuelven el valor de error: "nombre"

el segundo inconveniente (me parece que) estaria provocado por algun codigo en eventos de la hoja (como el '_change' ?)

comentas (si encuentras) algun detalle mas significativo ?
saludos,
hector.

__ OP __
Al abrir el libro(5 hojas), (las macros estan deshabilitadas), en la 1ª aparecen en varias filas
por distintos conceptos, todos los 'Nombres', que mediante la macro incluida en el apartado 'Módulo' del VBAProyect::

"Function TomarClientes(Clientes As Range, Claves As Range, Clave) As String
Dim Celda As Range, Fila As Long: TomarClientes = "": Fila = 1
For Each Celda In Claves
If LCase(Celda) = LCase(Clave) Then
If TomarClientes <> "" Then TomarClientes = TomarClientes & ", "
TomarClientes = TomarClientes & Clientes.Cells(Fila)
End If: Fila = Fila + 1
Next
End Function"

toma de las hojas 2, 3, 4, donde se ponen estos 'Nombres'.
El primer problema es que si en una de cualquiera de las filas, de las hojas 2, 3 ó 4
donde se incluyen estos 'Nombres', incluyo uno o varios mas, en lugar de aparecer todos los nombres
incluidas las filas donde NO he modificado, desaparecen los 'Nombres' y aparece #¿NOMBRE?
y no vuelven a poder verse hasta que habilito las macros.

Además de la macro anterior, este Libro tiene también otra macro:

"Private Sub Worksheet_Calculate()
Dim Celda As Range
Application.ScreenUpdating = False
Application.EnableEvents = False
On Error GoTo Salida
For Each Celda In Cells.SpecialCells(xlCellTypeFormulas)
If InStr(Celda.Formula, "TomarClientes") _
Then Celda.WrapText = False: Celda.WrapText = True
Next
Salida:
Application.EnableEvents = True
End Sub"

Que creo que es para que las filas se abran y se ajusten en funcion del numero de 'Nombres' que se incluyan

Y por último en 'ThisWorkbook' tiene otra macro, porque las hojas estan protegidas con clave de acceso:

"Private Sub Workbook_Open()
Worksheets("LIQUIDACION").Protect _
Password:="xxxxxxx0000", _
UserInterfaceOnly:=True
End Sub"

Y el segundo problema y, realmente importante, es que una vez deshabilitadas las macros
y accedo mediante la clave para abrir las hojas y modificar campos, formulas o formatos
cualquier "copiar - pegar" sencillo tanto de formato como de fórmulas, rotulo o cualquier otra cosa
me bloquea lo hoja y tengo que salirme de ella.
Se que es un tema de las macros, porque sin habilitarlas trabajo en las hojas sin problema ...

Preguntas similares