Mostrar comentarios como si fuesen un buscarv

Buenas tardes;
Tengo una relación de profesionales en excel y algunos tienen algún dato en la celda de al lado, pues bien, desde otro libro necesito que cuando alguien introduce uno de esos profesionales en una tabla la máquina compruebe si tiene o no dato en la otra hoja y en caso afirmativo me lo muestre pero como si fuese un comentario, o sea, oculto pero con el triangulito rojo en la esquina, como si fuese un BUSCARV pero a nivel de comentario.
No se es me he explicado con claridad.
Agradecería vuestra respuesta.
Un saludo Juan Carlos.
{"Lat":37.3157637552232,"Lng":-6.84513688087463}

1 respuesta

Respuesta
1
Si tienes dominio de macros puedes hacer el lo siguiente:
En una celda oculta puedes agregar la Función Buscarv, para que busque el dato en la hoja o libro correspondiente supongamos que lo realizas en la celda C1 y quieres agregarlo como comentario en la celda A1 lo realizas de la siguiente manera:
Range("A1").NoteText Range("C1").Value
Ahora tendrías hacer que el código se dispare cada vez que el profesional cambie.
Suponiendo que los profesionales esta en la celda B3
tienes que agregar este código.
If Target.Address(False, False) = "B3" Then Call ver
End Sub
Sub ver()
Range("A1").NoteText Range("C1").Value
End Sub
Ok, me va de escándalo, ahora bien, si resulta que la relación de profesionales ocupa toda una columna, ¿cómo hago para poder ejecutar la macro según en que celda me encuentre de esa columna?
Muchas gracias por tu ayuda.
Un saludo Juan Carlos.
Tendrías que ejecutar un ciclo para la macro .
Supongamos que la columna es la "A" considerando que el código cells = cells( fila, columna)
hoja2 = donde se presentan los datos
hoja1= profecionales
Sub Macro()
ULT = Sheets("Hoja2").Range("a65536").End(xlUp).Row 'obtienes la cantidad de datos 'de la hoja de presentacion
Dim r, s As String
Dim r1 As Range
r = "A:B"
s = "Hoja1" ' hoja donde se buscan los datos
Set r1 = Worksheets(s).Range(r)
For x = 1 To ULT  'repites el ciclo desde 1 hasta la cantidad de datos que necesitas.
On Error GoTo errorhandling2: ' este es el control de error
dato = Hoja2.Cells(x, 1).Value ' este es el valor buscado
m = Application. WorksheetFunction. VLookup(dato, r1, 2, False) ' realizas el buscarv 'interno
Cells(x, 1).NoteText m
Next x
errorhandling2:
Select Case Err
Case 1004
m = Empty
Resume Next
End Select
End Sub
Una consideración para hacer que la funcion buscarv haga la busqueda dentro de otros libros, verifica esta pregunta
http://www.todoexpertos.com/categorias/tecnologia-e-internet/software-y-aplicaciones/microsoft-excel/respuestas/1878355/variable-para-matriz-en-vb
Ok. Otra vez de escándalo, muchas gracias, pero necesitaría un último empujón:
Ahora cada vez que ejecuto la macro me pone los comentarios en todos los profesionales, y solo quiero que lo haga en el que yo este señalando, es decir, si estoy en el profesional situado en la a176, que solo me ponga los datos de este y no de todos los demás, así ademas de no cargar todos los datos siempre que la ejecuto imagino que no me machacara el dato ya existente en las demás, lo que me ayudaría a poder en un momento dado revisar lo antiguo.
Gracias por tu ayuda y tu tiempo.
Creo que de esta forma funcionaría muy bien:
Sub Macro()
dato = ActiveCell.Value
x = ActiveCell.Row
z = ActiveCell.Column
Dim r, s As String
Dim r1 As Range
r = "A:B"
s = "Hoja1" ' hoja donde se buscan los datos
Set r1 = Worksheets(s).Range(r)
On Error GoTo errorhandling2: ' este es el control de error
m = Application.WorksheetFunction.VLookup(dato, r1, 2, False) ' realizas el buscarv 'interno
Cells(x, z).NoteText m
errorhandling2:
Select Case Err
Case 1004
m = Empty
End Select
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas