Tengo un Libro con dos hojas.
En la Hoja 2 tengo un Plan de Cuentas personalizado de Gastos e Ingresos.
En la Hoja 1 tengo la Entrada de datos, con las columnas de Fecha, Numero de cuenta, Concepto, importe Gasto, importe Ingreso...
Me gustaría hacer que cuando el cursor del raton, pase por la celda del numero de cuenta (sin necesidad de hacer ninguna acción, ni click, ni doble click, etc...), mostrara una ventanita con el Nombre de la cuenta (que esta en la Hoja 2) y se mantuviera visible mientras está el cursor sobre esa celda del numero de cuenta. Al salir de esa celda, la ventanita "informativa" desapareciera... Es eso posible...?
Ese comportamiento que describes se parece al que tienen los comentarios que puedes agregar a las celdas.
El problema es que los comentarios no se actualizan solos, ni pueden tener una fórmula, es un texto.
podrías crear una macro que cambie el comentario y ponga el nombre de la cuenta. (supongo que tendrás que ejecutarla cada vez que cambie la celda del número de cuenta para que se actualice el comentario)
' llamo celda a la celda donde quieres poner el comentario, pon la que corresponda
With celda
If .Comment Is Nothing Then .AddComment 'si no hay comentario lo añadimos
.Comment.text "nombre cuenta: " & _
Application.WorksheetFunction.VLookup(.Value, tu_rango_de_números_y_nombre_de_cuentas, columna_donde_esta_el_nombre, False)
End With
utilizo la función BuscarV para buscar el nombre de la cuenta. para eso empleo Application.WorsheetFunction.VLookup con los mismos argumentos que tendría si lo hiciese en la hoja de cálculo
------
Ya sé Excel, pero necesito más.
Hola Paco:
Una vez más, (y como siempre...) estás al quite para echar una mano al que pide ayuda en este Foro.
He "captado" la intención del planteamineto que sugieres... pero poco más...
Efectivamente lo que ando buscando se parece al comportamiento de los "comentarios" que se pueden poner en las celdas.
El macro al que haces referencia, no consigo hacerlo funcionar de ninguna manera. Es decir. Me da errores... para mi incomprensibles. Al decir incomprensibles, quiero decir, que no sé qué hacer... porque no sé si el problema está en los parámetros... en la sintaxis... o en la manera como quiero hacerlo funcionar.
Es decir: soy de los que prueban las cosas, primero de una manera sencilla... y si funciona, voy dando pasos poteriores... Pero como digo... no consigo ni lo más sencillo, que sería poner un comentario desde un macro, aunque ese comentario no fuera el nombre de la cuenta. Es decir, dejando para un segundo paso, que intervenga la funcion BuscarV (Vlookup)...
Estoy enviando el fichero Prueba1.xls a modo de ejemplo donde quisiera poner en marcha la idea. No se si es mucho pedir, que trataras de hacer una aplicacion sencilla de tu idea, a este fichero.
En la Hoja1 se meten los datos. En la Hoja2 están los números y nombres de las cuentas, en el Rango "A1:B37"
El comentario debería salir como un pop-up en las celdas de la columna B de la Hoja1
En esa Hoja1 hay 32 filas actualmente ocupadas, pero obviamente que a medida que se hagan más anotaciones se incrementará el número de filas. Comento esto, porque en la columna B a partir de la fila 33 en este momento no hay ningún numero de cuenta, pero posteriormente habrá... y no entiendo bien el comportamiento posible de este macro que me sugieres...
De todas maneras, te agradezco un montón, la aportacion.
K
Hola Paco:
Una vez más, (y como siempre...) estás al quite para echar una mano al que pide ayuda en este Foro.
He "captado" la intención del planteamineto que sugieres... pero poco más...
Efectivamente lo que ando buscando se parece al comportamiento de los "comentarios" que se pueden poner en las celdas.
El macro al que haces referencia, no consigo hacerlo funcionar de ninguna manera. Es decir. Me da errores... para mi incomprensibles. Al decir incomprensibles, quiero decir, que no sé qué hacer... porque no sé si el problema está en los parámetros... en la sintaxis... o en la manera como quiero hacerlo funcionar.
Es decir: soy de los que prueban las cosas, primero de una manera sencilla... y si funciona, voy dando pasos poteriores... Pero como digo... no consigo ni lo más sencillo, que sería poner un comentario desde un macro, aunque ese comentario no fuera el nombre de la cuenta. Es decir, deujando para un segundo paso, que intervenga la funcion
José Luis
He puesto este código en el evento Change de la hoja1
primero comprueba si la celda que cambia está en la columna 2 y luego añade el comentario.
Es simplemente una idea qu ese puede mejorar para contemplar el caso en que la cuenta no exista o para otras situaciones.
Private Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo salir
If Target.Column = 2 Then
'estamos en la segunda columna
With Target
If .Comment Is Nothing Then .AddComment 'si no hay comentario lo añadimos
.Comment.Text "cuenta: " & Application.WorksheetFunction.VLookup(.Value, Worksheets("hoja2").Range("Tabla1"), 2, False)
End With
End If
Exit Sub
salir:
'en caso de error
'
End Sub
adjunto el archivo.
He creado una tabla con los datos de la hoja 2, pruébalo en tu versión 2003 por si acaso.
------
Ya sé Excel, pero necesito más.
Muchas... muchas gracias Paco.
A la vez... te ruego que tengas un poco de paciencia... conmigo.
Creo que está muy cerca la solución que ando buscando.
Sin embargo de nuevo tropiezo con dificultades...
Entiendo ahora... casi..., el funcionamiento del macro, a la vez que la ubicación del mismo en el evento "change" de la Hoja1.
Sin embargo no consigo descubrir la manera de resolver la situación de que ante nuevos "apuntes" lo que me hace es crear un comentario "vacio" en las celdas de la columna 2...
He grabado la hoja, he salido... he vuelto a entrar (por si se ejecutaba al abrir la hoja... pero no...
Por otro lado, en el macro, interviene la "Tabla1" que es el área de la Hoja2 donde estan, los numeros y los nombres de las cuentas, donde va a buscar la funcion VLookup...
Donde y cuando la has creado y definido como Tabla1?
En mi afan pòr aprender... soy muy pregunton... Por eso te decia, amigo Paco, que tengas paciencia conmigo... :) :) :)
Te estoy volviendo a enviar la misma Prueba1_0.xls con tres nuevas anotaciones para que compruebes el comentario vacio que se crea...
Gracias... maestro...
Jose Luis
La Tabla1, en la versión 2003 de Excel se crea en Datos>lista>crear lista
esta Tabla1 contiene los datos de la Hoja2
la macro realiza un buscarV en esa tabla/lista, así que hay que crearla antes.
Como te decía en el comentario anterior, lo estoy creando con una versión más reciente, así que te pedía que comprobases si funciona en la version 2003, porque puede que no reconozca el nombre de la tabla.
prueba lo siguiente,
comenta la línea que evita que salten los errores
'On Error GoTo salir
Así podrás ver qué error se produce, aunque me huele a que no reconocerá el rango Tabla1, y por consiguiente la función Vlookup fallará.
Si es así, mira cómo se llama esa tabla1 en tu versión de Excel.
Prueba a crear un nombre que abarque toda tu lista y utilízalo en la macro en vez de Tabla1.
------
Ya sé Excel, pero necesito más.
Hola Paco:
Una vez más... has acertado...
El problema estaba efectivamente, en que no reconocia la Tabla1.
Siguendo tus sugerencias he hecho lo siguiente:
He borrado la Tabla1, porque no he podido ver el nombre que Excel 2003 le daba a esa Tabla1...
He intentado crear una lista desde Excel 2003 pero tampoco he encontrado el nombre que le da Excel a la lista.
Así que he ido a la segunda opción: he seleccionado el area ocupado por las cuentas y los nombres, y he creado un nombre: Tabla2.
En el macro, he sustituito Tabla1 por Tabla2... y ahora sí... todo funciona.
Es decir, la funcion VLookUp reconoce el area del "nombre" sin problemas.
Casi tan admirable como tu ciencia... es tu paciencia...
Muchas gracias, una vez mas.
Jose Luis
De nuevo, Paco... en busca de ayuda...
Puesto a pedir...
Estoy tratando de incorporar al macro, (que funciona de pelicula...) unos parametros que modificquen el tamaño, letra y aspecto del comentario que genera el macro.
En concreto, estoy tratando de introducir alfgo asi como los siguientes datos:
'Tipo de letra y tamaño
With Selection.Comment.Font
.Name = "Tahoma"
.Size = 11
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ColorIndex = xlAutomatic
End With
' Alineacion centrada vertical...
With Selection.Comment
.HorizontalAlignment = xlLeft
.VerticalAlignment = xlCenter
.ReadingOrder = xlContext
.Orientation = xlHorizontal
.AutoSize = False
End With
' Modificación final del tamaño del recuadro del comentario...
Selection.ShapeRange.ScaleHeight 0.46, msoFalse, msoScaleFromTopLeft
Selection.ShapeRange.ScaleWidth 2.46, msoFalse, msoScaleFromTopLeft
Pero no acierto (una vez mas... ) o en la sintaxis... o en la manera de integrarlo en el macro...
Otra ayudita...?
Jose Luis
bueno, no es tan directo como poner selection.comment.font
el comentario que vemos es una forma, que tiene un cuadro de texto, que a su vez contiene un texto, que es el que tiene la fuente con el formato, así que sería más bien algo así:
'Tipo de letra y tamaño
With Selection.Comment.Shape.TextFrame.Characters.Font
.Name = "Tahoma"
.Size = 11
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ColorIndex = xlAutomatic
End With
'alineación centrada vertical (si sólo quieres eso, quita lo demás)
With Selection.Comment.Shape.TextFrame
.VerticalAlignment = xlCenter
End With
' Modificación final del tamaño del recuadro del comentario...
With Selection.Comment.Shape
.ScaleHeight 0.46, msoFalse, msoScaleFromTopLeft
.ScaleWidth 2.46, msoFalse, msoScaleFromTopLeft
End With
------
Ya sé Excel, pero necesito más.
Hola Paco:
Gracias de nuevo por tus aclaraciones, al matizar que la cosa no es tan directa como yo pretencia hacerlo...
De todas maneras, he tratado de incorporar este último envío tuyo al macro que genera los comentarios... y hno acierto a situarlo dentro del macro...
Estoy llegando a pensar que quizas no va a funcionar nunca desde el mismo macro que genera el comentario, que es donde yo pretendo... y que esta rutina que me has enviado servirá posteriormente si es que se ejecuta llamando a otro macro expresamente... Eso no me gustaria tanto... Mi esperanza es que se genere la ventanita del comentario... con estos parametros de fuente, alineación y tamaño...
Estoy envbiando de nuevo el fichero con el macro incorporadas las rutinas... le he anulado temporalmente On error Goto Salir para ver donde da el error... y lo da en la primera instruccion: "With Selection.Comment.Shape.TextFrame.Characters.Font" ... con esta "explicación": Variable de objeto o bloque With no establecido...
Parece cerca la solución pero no termino de dar con ella...
Gracias, Paco por todo.
Jose Luis
en la macro que crea el comentario utilizas la celda que cambia, que es el objeto Target, y tienes un bucle with Target ...
El ejemplo para cambiar el tipo de letra utiliza Selection, es decir, la selección, pero para tu caso te interesaría más utilizar Target también, algo como:
With Target.Comment.Shape.TextFrame.Characters.Font
...
end With
------
Ya sé Excel, pero necesito más.
Hola Paco:
Genial...
Cambiado Seleccion por Target... y salio funcionando como deseaba.
Una vez aprendido el camino... se abre la puerta a muchas otras posibilidades, claro esta.
Pero ninguna de ellas, seria posible sin tu aportacion. Muchas gracias.
Jose Luis