Vincular comentarios

15/12/2004 - 04:15 por Robert | Informe spam
Saludos a los expertos

Quisiera preguntar algo, a ver si alguien tiene la respuesta (aunque se de
algunos que seguro la tienen)

Tengo dos hojas de XL, en una de ellas tengo una tabla con datos y en la
otra hago una búsqueda con BuscarV. Funciona de lo lindo, pero quisiera
saber si hay alguna forma por medio de VBA, de que al encontrar el dato
buscado, también se muestre su comentario.

Es decir si yo tipeo en la hoja de búsqueda en la
celda A2 : =Buscarv(a1,Historial,13, falso), que en la celda A2 se pueda
ver el comentario que tiene la celda con el dato encontrado.

Espero haberme explicado.

Gracias de antemano por su atención.

Preguntas similare

Leer las respuestas

#1 Héctor Miguel
15/12/2004 - 08:56 | Informe spam
hola, Roberto !

... dos hojas ... una tabla con datos y ... una busqueda con BuscarV [...]
... alguna forma por medio de VBA, de que al encontrar el dato buscado, tambien se muestre su comentario.
... si yo tipeo en la hoja de busqueda en la celda A2 : =Buscarv(a1,Historial,13, falso)
... que en la celda A2 se pueda ver el comentario que tiene la celda con el dato encontrado.



[mientras aparecen mas sugerencias]... aqui te va una propuesta [algo] 'larga' :( pero... 'entendible' [espero] :))
seguramente habra [ciertas] condiciones/variaciones que requieran 'ajustes' al codigo, pero con los datos que 'apuntas'...
estos son los 'supuestos' [+/- 'fijos']...
1.- el rango ['Historial'] esta en 'la otra' hoja
2.- la columna 13 es [siempre] 'la ultima' columna de dicha base de datos [aqui pudiera requerir 'ajustes']
3.- [en la hoja 'de la busqueda']...
a) el dato 'a buscar' esta en 'A1'
b) la celda con la formula ['A2'] ->YA tiene 'su' comentario<- [la macro SOLO lo 're-tipea' -si existe 'el otro'-]
4.- la macro es 'larga' porque/para [estoy 'tratando'] que sean 'de provecho' [algunos] 'tips' para [p.e.]...
-> desplazar y [re]dimensionar rangos y 'detectar' filas/columnas, etc. etc. etc. ;)

si NO 'se entiende'... ¿comentas?
saludos,
hector.
=> no te olvides de 'especificar correctamente' los nombres de 'la hoja' y 'el rango de la tabla' ;)

en el modulo de codigo de 'la hoja' [donde se hace la busqueda] ==Private Sub Worksheet_Change(ByVal Target As Range)
Dim Hoja As String, Tabla As String, Base As String, Col As String, _
Fila_1 As Long, Fila_n As Long
Hoja = "Hoja2"
Tabla = "Historial"
If Target.Address = "$A$1" Then
If Not (IsError([a2])) Then
With Worksheets(Hoja)
With .Range(Tabla)
Fila_1 = .Row
With .Offset(, .Columns.Count - 1).Resize(, 1)
Base = "'" & Hoja & "'!" & .Address
Col = Mid(.Address, 2, InStr(2, .Address, "$") - 2)
Fila_n = Evaluate("Match(""" & [a2] & """," & Base & ",0)") + Fila_1 - 1
End With
End With
On Error GoTo SinComentarios
If .Range(Col & Fila_n).Comment.Text <> "" Then
[a2].Comment.Text .Range(Col & Fila_n).Comment.Text
Exit Sub
End If
End With
End If
SinComentarios:
[a2].Comment.Text "¡ No se encontró comentario !!!"
End If
End Sub
Respuesta Responder a este mensaje
#2 rober
16/12/2004 - 14:39 | Informe spam
Héctor:
Muchas gracias por tu pronta respuesta.
Estuve tratando de entender tu lógica, sólo para descubrir que aún estoy
en pañales. Al probar el código, efectivamente hala el comentario y me
permite verlo, pero siempre me muestra el mismo, excepto en caso de no
tenerlo, situación en la que funciona ok.
Es decir, al abrir el libro y cambiar el valor buscado, lo devuelve junto
con su comentario, pero al cambiar a otro dato buscado, devuelve el dato
pero con el primer comentario devuelto.
Hoy voy a tratar de chequearlo para ver si consigo que se adapte a mis
necesidades.
Lo necesito para un archivo de XL que 'simula' un 'kardex', no se si te
suene familiar el término. Es una hoja de XL que muestra los datos
contenidos en varias otras, con información personal y laboral de los
trabajadores de mi compañía, así como su foto y su firma, una especie de
'visor' de información. En un área de la hoja se muestra una cuadrícula de
365 (ó 366) espacios que muestra información sobre las 'incidencias' de
todo el año. Es decir, vacaciones, faltas, etc.. Esta informacion está en
otros archivos de XL, en tablas en donde se 'carga' la información.
Lo que necesito es que al mostrar una 'F' (falta injustificada) en la
celda 01/ene [dato que se obtiene de la tabla historial, que esta en otro
libro], también se 'hale' el comentario que contenga.

Gracias de antemano por tu apoyo.


Héctor Miguel wrote:

hola, Roberto !

> ... dos hojas ... una tabla con datos y ... una busqueda con BuscarV [...]
> ... alguna forma por medio de VBA, de que al encontrar el dato buscado,


tambien se muestre su comentario.
> ... si yo tipeo en la hoja de busqueda en la celda A2 :


=Buscarv(a1,Historial,13, falso)
> ... que en la celda A2 se pueda ver el comentario que tiene la celda con


el dato encontrado.

[mientras aparecen mas sugerencias]... aqui te va una propuesta [algo]


'larga' :( pero... 'entendible' [espero] :))
seguramente habra [ciertas] condiciones/variaciones que requieran 'ajustes'


al codigo, pero con los datos que 'apuntas'...
estos son los 'supuestos' [+/- 'fijos']...
1.- el rango ['Historial'] esta en 'la otra' hoja
2.- la columna 13 es [siempre] 'la ultima' columna de dicha base de datos


[aqui pudiera requerir 'ajustes']
3.- [en la hoja 'de la busqueda']...
a) el dato 'a buscar' esta en 'A1'
b) la celda con la formula ['A2'] ->YA tiene 'su' comentario<- [la macro


SOLO lo 're-tipea' -si existe 'el otro'-]
4.- la macro es 'larga' porque/para [estoy 'tratando'] que sean 'de


provecho' [algunos] 'tips' para [p.e.]...
-> desplazar y [re]dimensionar rangos y 'detectar' filas/columnas, etc.


etc. etc. ;)

si NO 'se entiende'... ¿comentas?
saludos,
hector.
=> no te olvides de 'especificar correctamente' los nombres de 'la hoja' y


'el rango de la tabla' ;)

en el modulo de codigo de 'la hoja' [donde se hace la busqueda] ==> Private Sub Worksheet_Change(ByVal Target As Range)
Dim Hoja As String, Tabla As String, Base As String, Col As String, _
Fila_1 As Long, Fila_n As Long
Hoja = "Hoja2"
Tabla = "Historial"
If Target.Address = "$A$1" Then
If Not (IsError([a2])) Then
With Worksheets(Hoja)
With .Range(Tabla)
Fila_1 = .Row
With .Offset(, .Columns.Count - 1).Resize(, 1)
Base = "'" & Hoja & "'!" & .Address
Col = Mid(.Address, 2, InStr(2, .Address, "$") - 2)
Fila_n = Evaluate("Match(""" & [a2] & """," & Base & ",0)") +


Fila_1 - 1
End With
End With
On Error GoTo SinComentarios
If .Range(Col & Fila_n).Comment.Text <> "" Then
[a2].Comment.Text .Range(Col & Fila_n).Comment.Text
Exit Sub
End If
End With
End If
SinComentarios:
[a2].Comment.Text "¡ No se encontró comentario !!!"
End If
End Sub
Respuesta Responder a este mensaje
#3 Héctor Miguel
17/12/2004 - 04:33 | Informe spam
hola, Roberto !

... tratando de entender tu logica
... efectivamente hala el comentario ... pero siempre me muestra el mismo
... excepto en caso de no tenerlo, situacion en la que funciona ok.
... al ... cambiar el valor buscado, lo devuelve junto con su comentario
... pero al cambiar a otro dato buscado, devuelve el dato pero con el primer comentario devuelto [...]
... que al mostrar una 'F' (falta injustificada) en la celda 01/ene


==> [dato que se obtiene de la tabla historial, que esta en otro libro] <=> ... tambien se 'hale' el comentario que contenga.

no te sera dificil encontrar la logica 'empleada'... sin embargo..
[y segun parece] si el rango_nombre 'Historial' esta ->en varios libros<- [?]
el codigo del ejemplo NO tiene 'considerado' -aun- el buscar en otros libros :(
si tienes informacion que se hubiera 'quedado en el tintero'... ¿comentas datos adicionales?

saludos,
hector.
Respuesta Responder a este mensaje
#4 Juan Sánchez
17/12/2004 - 18:22 | Informe spam
Algo parecido me pidió un usuario acá y le hice la función indicada al
final. Es similar a la función BUSCARV pero en este caso devuelve el
comentario.
El único pero es que no se me recalcula si se modifica algún comentario, ni
presionando F9. Si se modifican los valores de las celdas a las que hace
referencia al función, allí si se actualiza. Si alguien puede corregir ese
problema, en buena hora.

Slds,
Juan


Function BuscarVComentario(Valor_Buscado As Variant, Matriz_Busqueda As
Range, Indicador_Columna As Integer, Optional Ordenado As Boolean = True) As
String

Dim PrimeraCol As Range
Dim ColResultado As Range
Dim Indice As Long
Dim PosDato As Long
Dim Buscar As Boolean


If Indicador_Columna >= 1 And Indicador_Columna <Matriz_Busqueda.Columns.Count Then
Set PrimeraCol = Matriz_Busqueda.Columns(1)
Set ColResultado = Matriz_Busqueda.Columns(Indicador_Columna)
BuscarVComentario = PrimeraCol.Address & ";" & ColResultado.Address

PosDato = 0
Indice = 1
Buscar = True

Do While Indice <= PrimeraCol.Cells.Count And Buscar
If Ordenado Then
If PrimeraCol.Cells(Indice).Value <= Valor_Buscado Then
PosDato = Indice
Indice = Indice + 1
Else
Buscar = False
End If
Else
If PrimeraCol.Cells(Indice).Value <> Valor_Buscado Then
Indice = Indice + 1
Else
PosDato = Indice
Buscar = False
End If
End If
Loop

BuscarVComentario = "(Sin comentario)"
If PosDato <> 0 Then
On Error Resume Next
BuscarVComentario = ColResultado.Cells(PosDato).Comment.Text
Else
BuscarVComentario = "#N/A!"
End If
Else
BuscarVComentario = "#REF!"
End If


End Function
Respuesta Responder a este mensaje
#5 Héctor Miguel
18/12/2004 - 03:42 | Informe spam
hola, Juan !

... hice la funcion indicada al final ... similar a ... BUSCARV pero ... devuelve el comentario.
... pero ... no se me recalcula si se modifica algun comentario, ni presionando F9 [...]



en tanto no exista algun evento que 'detecte' cambios en los comentarios de las celdas...
[creo que] sera necesario desarrollar codigo que 'haga lo propio' ;)
puedes consultar un topico con bastante informacion sobre comentarios en...
http://www.mvps.org/dmcritchie/excel/ccomment.htm

saludos,
hector.
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida