Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Mi hoja tiembla

170 views
Skip to first unread message

Alfonso

unread,
Sep 14, 2008, 4:25:50 PM9/14/08
to
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


Héctor Miguel

unread,
Sep 14, 2008, 10:37:35 PM9/14/08
to
hola, Alfonso !

por los detalles que (no) expones en tu consulta, no se alcanza a "ver" alguna posible causa del comportamiento -?-

- algun codigo desgastante/repetitivo/... que consuma los recursos de que dispone excel (como la memoria) ?
p.e. en los eventos '_calculate', '_change, '_selectionchange', ... en las hojas y/o en el libro

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

__ OP __


> 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 gustaria saber a que puede ser debido este 'baile' de la hoja

Alfonso

unread,
Sep 15, 2008, 10:41:09 AM9/15/08
to
Hola Héctor.
Nos agobiamos enseguida en cuanto tenemos un problema, y aunque la mayoria
damos vueltas y vueltas probando distintos supuestos, antes de pasarlo al
foro, quiza si dejaramos algunas veces el tema para la mañana siguiente, se
pondrian la mitad de las cuestiones aqui.
La hoja SOLO 'tiembla' cuando la tengo Desprotejida, y TENGO OCULTAS 8
filas. Si no está protejida pero las Filas estan a la vista, meto los datos
(1,2,3,4...)
y no 'tiembla'. Para darte mas pistas te recuerdo que hace unos dias te
decia que esta misma hoja yo la cerraba SIN PROTEGER, y que cuando la abria
se me protegia sola, y que no sabia el porque. Me distes unas pistas y
elimine (sin pensar mas) una macro que me habias pasado hace ya tiempo y que
estaba justificada para que me abriera las filas de esta hoja segun
incorporaba nombres en otra del mismo libro (MASTERS), y que en ese momento,
se me paso. La macro es:
"Private Sub Workbook_Open()
Worksheets("TECNICOSyEXPERTOS").Protect _
Password:="malcaca0674", _
UserInterfaceOnly:=True
End Sub"
Por ello cuando me di cuenta la copie nuevamente, en el mismo modulo, en la
hoja del VB donde pone _izquierda 'Workbook' _derecha 'Open'
pero quiza esto haya afectado al libro y a esta hoja y por eso tengo este
problema. No tendría importancia si esta hoja no tuviera que estar
Protegida, porque funcionaria bien, pero al ser donde se incluyen los datos
por parte de otras personas, no puedo dejarla sin proteger.
Te adjunto las otras macros, tuyas, que tiene este libro y que funcionan
perfectamente, para que tengas todos los datos y asi puedas mejor valorarlo.
En VBAProyect en la HOJA1 (TECNICOSyEXPERTOS) abre ventana _izquierda
(Worksheet) _derecha (Calculate) esta la macro:
"Private Sub Worksheet_Calculate()
Dim Celda As Range
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 la HOJA2 (MASTERS) abre ventana que pone _izquierda (Worksheet) _derecha
(Change) tiene:

"Private Sub Worksheet_Change(ByVal Target As Range)

End Sub"

En la HOJA3 (MANUALES) abre ventana que pone _izquierda 'Worksheet'
_derecha 'SelectionChange' tiene:

"Private Sub Worksheet_SelectionChange(ByVal Target As Range)

End Sub"

Y en Modulos, en Modulo1, abre la ventana _izquierda (General) _derecha
(TomarClientes) la macro:
"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"

Espero no haber sido demasiado profuso en detalles y con esto puedas mejor
ver por donde vienen los 'tiros' y determinar una solucion.
Como siempre gracias por tu interes y el tiempo que me dedicas.
Saludos
Alfonso.
-------------------------------

"Héctor Miguel" <NOhemio...@PLShotmail.com> escribió en el mensaje
news:uzGqGwtF...@TK2MSFTNGP04.phx.gbl...

> ---
> avast! Antivirus: Mensaje entrante limpio.
> Base de datos de Virus (VPS): 080914-0, 14/09/2008
> Comprobado el: 15/09/2008 15:49:27
> avast! - copyright (c) 1988-2008 ALWIL Software.
> http://www.avast.com
>
>
>


Héctor Miguel

unread,
Sep 15, 2008, 8:53:53 PM9/15/08
to
hola, Alfonso !

__ 1 __
> ... quiza si dejaramos algunas veces el tema para la mañana siguiente, se pondrian la mitad de las cuestiones aqui.

1) (yo creo que) si le agregamos una costumbre a consultar la ayuda en linea {F1}, seria mas de la mitad :))

__ 2 __


> La hoja SOLO 'tiembla' cuando la tengo Desprotejida, y TENGO OCULTAS 8 filas.

> Si no esta protejida pero las Filas estan a la vista, meto los datos (1,2,3,4...) y no 'tiembla'...
> ... en la HOJA1... esta la macro:


> Private Sub Worksheet_Calculate()
> Dim Celda As Range
> 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

2) a) cuando la hoja esta "protegida" (y habiendo quitado la re/proteccion en el evento '_open' solo a la interfase del usuario)
esta macro "falla" a las primeras de cambio e inmediatamente "salta" a la linea de "Salida:" (o sea, NO se ejecuta realmente)
b) cuando la hoja NO esta "protegida"... el codigo se ejecuta tantas veces como celdas donde uses la funcion (TomarClientes)
y como se puede apreciar, su objetivo es (re)dimensionar alto/ancho de la celda donde se obtienen los datos

-> prueba agregado una instruccion: Application.ScreenUpdating = False
ANTES de la linea que dice: -> Application.EnableEvents = False

saludos,
hector.


Alfonso

unread,
Sep 16, 2008, 12:36:28 PM9/16/08
to
hola, Héctor.
Funciona a la perfección, no vibra nada. Perfecto como siempre.
Ahora ya solo me queda una cosa en este Libro por solucionar, que no he
conseguido aún, y que no te había vuelto a comentar.
Cuanto tengo la hoja TECNICOSyEXPERTOS protegida (tiene que estarlo), al
recibir los nombres desde la hoja MASTERS, recibe todos los nombres en sus
filas, pero a pesar de la macro que creo me diste para ello, sigue sin
abrirme las filas. En cuanto la desprotejo y toco cualquier cosa en la hoja
desde donde vienen (MASTERS), me las abre automaticamente y queda todo
perfecto, y al quitar la información en origen, cierra las filas a su tamaño
original, que tengo en 'autoajustar' para ello, quedando estupendamente la
hoja de presentación.
Si se te ocurriera algo para erradicar este problema, te lo agradeceria.
Gracias y saludos cordiales.
Alfonso

-----------------------------
"Héctor Miguel" <NOhemio...@PLShotmail.com> escribió en el mensaje
news:eEEu0a5F...@TK2MSFTNGP03.phx.gbl...
> ---
> avast! Antivirus: Mensaje entrante limpio.
> Base de datos de Virus (VPS): 080915-0, 15/09/2008
> Comprobado el: 16/09/2008 17:54:34

Héctor Miguel

unread,
Sep 16, 2008, 2:07:48 PM9/16/08
to
hola, Alfonso !

> ... solo me queda una cosa... por solucionar, que no he conseguido ...
> Cuanto tengo la hoja... protegida (tiene que estarlo)... a pesar de la macro... sigue sin abrirme las filas.
> En cuanto la desprotejo... las abre automaticamente y queda todo perfecto
> y al quitar la informacion en origen, cierra las filas a su tamano original
> que tengo en 'autoajustar' para ello, quedando estupendamente la hoja de presentacion.
> Si se te ocurriera algo para erradicar este problema, te lo agradeceria...

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

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

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

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

- en el modulo de codigo de la hoja2


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


Alfonso

unread,
Sep 16, 2008, 4:19:32 PM9/16/08
to
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]


Héctor Miguel

unread,
Sep 16, 2008, 5:42:22 PM9/16/08
to
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.


Alfonso

unread,
Sep 16, 2008, 6:33:03 PM9/16/08
to
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" <NOhemio...@PLShotmail.com> escribió en el mensaje

news:u%23FndUEG...@TK2MSFTNGP03.phx.gbl...

> ---
> avast! Antivirus: Mensaje entrante limpio.

> Base de datos de Virus (VPS): 080916-0, 16/09/2008
> Comprobado el: 17/09/2008 0:03:58

Héctor Miguel

unread,
Sep 16, 2008, 10:34:17 PM9/16/08
to
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.


Alfonso

unread,
Sep 17, 2008, 3:18:02 PM9/17/08
to
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" <NOhemio...@PLShotmail.com> escribió en el mensaje
news:eyyjl3G...@TK2MSFTNGP02.phx.gbl...

Héctor Miguel

unread,
Sep 18, 2008, 12:27:22 AM9/18/08
to
hola, Alfonso !

> ... a ver si me arroja algo de luz y me vale para resolver esta dificultad.

lo siento... yahoo ha rechazado el envio a "esa" direccion de correo
(sin el "NO...SPAM" obviamente) :-((

saludos,
hector.


Alfonso

unread,
Sep 20, 2008, 4:46:15 PM9/20/08
to
hola, Héctor.
Perdona, la cuenta que tenia la 'elimine' hace tiempo por culpa de los Spam,
y como habitualmente no mando/me mandan nada en estos foros, no la habia
sustituido en mis 'propiedades' hasta que tu la has necesitado. Ya la he
modificado.
Saludos.
Alfonso
----------------

"Héctor Miguel" <NOhemio...@PLShotmail.com> escribió en el mensaje
news:eSOpZbU...@TK2MSFTNGP06.phx.gbl...
0 new messages