Mi hoja tiembla

14/09/2008 - 22:25 por Alfonso | Informe spam
Hola a todos.
Una hoja de un libro, que llevo tiempo usando, y modificando, segun
necesidad y que tiene unas 10 filas ocultas, por primera vez al introducir
los datos (numeros) en cada una de las celdas donde corresponde, 'tiembla'
la hoja durante algo menos que un segundo y asi cada vez que meto un nuevo
dato.
Desoculto las 10 lineas y no me hace este 'tembleque'. Como nunca antes me
lo habia hecho, ni con las filas ocultas y sin ocultarlas, he guardado la
hoja, he cerrado el excel, he borrado temporales y cokies, etc como cuando
cierro el PC, y he vuelto a abrir el Libro, y en la hoja con las 10 lineas
ocultas como siempre, he introducido los datos y no me lo ha vuelto hacer.
Me gustaría saber a que puede ser debido este 'baile' de la hoja, porque
puede ser una coincidencia el que despues de cerrar y abrir nuevamente, no
vuelva a dar este problema y en el futuro se vuelva a repetir y no se me
arregle con los pasos citados.
Gracias y saludos

Preguntas similare

Leer las respuestas

#6 Alfonso
16/09/2008 - 22:19 | Informe spam
hola, Héctor
Te paso información adicional, a la par de la tuya, cerrada entre corchetes,
para que tu veas.
Hay algunas diferencias, entre lo que tu me indicas y lo que yo te expongo,
a ver si tengo suerte y en algunas de estas diferencias pueda estar la
solución.
Gracias y saludos.
Alfonso

"> he corrido pruebas y no logro reproducir el comportamiento que describes
(que al modificar la clave solicitada no se auto-ajuste la celda donde se
usa la funcion TomarClientes)

revisa como hice las pruebas y si cualquier duda (o informacion
adicional)... comentas ?
saludos,
hector.

probado bajo este escenario:

- hoja1 un listado de nombres y claves


[hoja1(TECNICOSyEXPERTOS), Protegida, es la del problema, estan los nombres
de los cursos(B48:B69, dato fijo), numero de cursos(C48:c69, vacias hasta
que recogen datos de la hoja2), nombre de los alumnos(E48:E69, vacias hasta
que recojen datos de la hoja2), y aquí en este rango es donde tengo el
problema porque no abren hasta recoger todos los nombres que se ponen en la
hoja2, pero que si quito la protección y muevo cualquier dato de la hoja2,
ya amplía.]

- hoja2 protegida (salvo celdas donde se piden claves) y llamadas a la
funcion (TomarClientes)


[hoja2(MASTERS), Protegida, aquí es donde se pone el numero de master y
todos los nombres de los alumnos, en cada fila del master que corresponda,
abriendo la fila en funcion del numero de nombres que contenga, y estos
datos son los que pasa a la anterior hoja1]

- se hacen cambios tanto en la hoja con el listado (hoja1) como en las
celdas donde se indica cual clave se busca (hoja2)


[la hoja1 se rellena con los datos que toma (numero, nombres) de la hoja2, y
en las columnas de resultados ayacentes, con el producto de numero por
precio]

- en el modulo de codigo del libro (ThisWorkbook)
Private Sub Workbook_Open()
Worksheets("hoja2").Protect _
UserInterfaceOnly:=True
End Sub


[aquí yo tengo todo igual (incluyendo la clave de proteger, que no haces
figurar), pero la hoja del Worksheets que yo tengo es: ("TECNICOSyEXPERTOS),
que en mi Libro es la hoja1, NO la hoja2]

- en el modulo de codigo de la hoja2


[en el raiz de 'Microsoft Excel Objetos', click en la
hoja1(TECNICOSyEXPERTOS), y ahí la tengo yo]
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

- en un modulo de codigo estandar
Function TomarClientes(Clientes As Range, Claves As Range, Clave As Range)
As String
Dim Celda As Range, ListaClientes As String, Fila As Long
For Each Celda In Claves: Fila = Fila + 1
If Celda = Clave Then ListaClientes = ListaClientes & ", " &
Clientes.Cells(Fila)
Next: TomarClientes = Mid(ListaClientes, 3)
End Function


[yo la tengo en 'Modulos' como Modulo1, y ES PARECIDA, pero NO igual, quiza
esto afecte o no, pero la mia es:
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 Celda = Clave Then
If TomarClientes <> "" Then TomarClientes = TomarClientes & ", "
TomarClientes = TomarClientes & Clientes.Cells(Fila)
End If: Fila = Fila + 1
Next
End Function]
Respuesta Responder a este mensaje
#7 Héctor Miguel
16/09/2008 - 23:42 | Informe spam
hola, Alfonso !

Hay algunas diferencias, entre lo que tu me indicas y lo que yo te expongo
a ver si tengo suerte y en algunas de estas diferencias pueda estar la solucion...



no me quedo claro si la funcion personalizada (TomarClientes) la utilizas en ambas hojas -?-

1) el procedimiento de evento: -> Private Sub Worksheet_Calculate()
debera estar en el modulo de codigo de la hoja (u hojas)
-> donde se requiera que el codigo auto-ajuste las dimensiones (alto/ancho)
de las celdas donde se hagan llamadas a la funcion (tomarClientes)

2) en el codigo de apertura: -> Private Sub Workbook_Open()
deberas incluir (a todas) las hojas donde se requiera que su evento '_calcuate' ajuste celdas

si cualquier duda... comentas ?
saludos,
hector.
Respuesta Responder a este mensaje
#8 Alfonso
17/09/2008 - 00:33 | Informe spam
hola, Héctor
no me quedo claro si la funcion personalizada (TomarClientes) la utilizas
en ambas hojas -?-


[No. Solo los nombres que se ponen en la hoja2(que abre perfectamente la
fila), pasan a la hoja1(que es la que no abre la fila cuando esta
protegida)]
Perdona. Finalizo el tema con una ultima respuesta a la tuya, porque
considero que ya me has dispensado demasiado tiempo, y te lo agradezco.
Tampoco pasa nada por tener que desproteger y volver a proteger la hoja,
como he estado haciendo hasta ahora para que amplien esas filas.
Solamente recordarte que la hoja y las macros tuyas funcionan perfectamente,
y aunque disto mucho de comprender totalmente lo de 'eventos', 'modulos',
'llamadas a funciones', etc. yo creo (una vez mas estare equivocado), que
todo esta en 'su sitio' y que SOLO falta el 'toque', en alguna de ellas,
para que no sea necesario desproteger/proteger la hoja constantemente.
Otra vez gracias por tu tiempo y dedicacion a este foro.
Saludos cordiales
Alfonso
-

"Héctor Miguel" escribió en el mensaje
news:u%
hola, Alfonso !

Hay algunas diferencias, entre lo que tu me indicas y lo que yo te
expongo
a ver si tengo suerte y en algunas de estas diferencias pueda estar la
solucion...



no me quedo claro si la funcion personalizada (TomarClientes) la utilizas
en ambas hojas -?-

1) el procedimiento de evento: -> Private Sub Worksheet_Calculate()
debera estar en el modulo de codigo de la hoja (u hojas)
-> donde se requiera que el codigo auto-ajuste las dimensiones
(alto/ancho)
de las celdas donde se hagan llamadas a la funcion (tomarClientes)

2) en el codigo de apertura: -> Private Sub Workbook_Open()
deberas incluir (a todas) las hojas donde se requiera que su evento
'_calcuate' ajuste celdas

si cualquier duda... comentas ?
saludos,
hector.




avast! Antivirus: Mensaje entrante limpio.
Base de datos de Virus (VPS): 080916-0, 16/09/2008
Comprobado el: 17/09/2008 0:03:58
avast! - copyright (c) 1988-2008 ALWIL Software.
http://www.avast.com



Respuesta Responder a este mensaje
#9 Héctor Miguel
17/09/2008 - 04:34 | Informe spam
hola, Alfonso !

... Tampoco pasa nada por tener que desproteger y volver a proteger la hoja, como he estado haciendo hasta ahora ...



(creo que) el siguiente "paso final" pudiera ser enviarte un ejemplo "trabajando" (bajo el escenario comentado) ;)

saludos,
hector.
Respuesta Responder a este mensaje
#10 Alfonso
17/09/2008 - 21:18 | Informe spam
hola, Héctor
Te lo agradezco, a ver si me arroja algo de luz y me vale para resolver esta
dificultad.
Gracias y saludos
Alfonso.
"Héctor Miguel" escribió en el mensaje
news:
hola, Alfonso !

... Tampoco pasa nada por tener que desproteger y volver a proteger la
hoja, como he estado haciendo hasta ahora ...



(creo que) el siguiente "paso final" pudiera ser enviarte un ejemplo
"trabajando" (bajo el escenario comentado) ;)

saludos,
hector.

Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida