Valor de una celda en MSGBOX

Esto haciendo una macro para informar a través de un MSGBOX el contenido de una celda, que esta en otra página.

Todo bien hasta que tengo que dar 4 variables para que me seleccione la columna,
Así voy

Hago doble click en una de las celdas de color y me aparece un msgbox con la información de la hoja

todo bien hasta ahi...

Solo necesito que me identifique la columna a la que pertenece, pensé hacerlo con un offset dando la información así

i = 3 + b

If Area = "JURIDICO" Then b = 0 Else

If Area = "DISEÑO" Then b = 1 Else

If Area = "ESPECIALIDADES" Then b = 2 Else

If Area = "PREINVERSION" Then b = 3 Else

pero no me resultó.

Aqui el codigo.

(solo he hecho esto con tutoriales)

Saludos y gracias.

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)

Dim BIP As Variant
Dim CeldaActiva As String
Dim OBS As String
Dim Celda As Range
Dim Area As String

Area = CeldaActiva
Area = ActiveCell.End(xlUp).Value

CeldaActiva = ActiveCell.Address

BIP = ActiveCell.End(xlToLeft).Select
BIP = ActiveCell.Offset(0, 1).Value

For Each Celda In Sheets("Observaciones_ESP").Range("$A$2:$A$30")
If Celda = BIP Then
OBS = Celda.Offset(0, 3).Value

End If
Next Celda

CeldaActiva = ActiveCell.Address

If Not Intersect(Target, Range("l2:O28")) Is Nothing Then

MsgBox OBS, vbOKOnly, Area

End If

End Sub

1 respuesta

Respuesta
2

No veo en tu imagen las filas y las columnas de excel, traté de suponer en dónde está la información en cada columna y fila.

Si tienes problemas con la macro, pon imágenes de tus 2 hojas, la hoja del msg y la hoja "Observaciones_ESP", pero completas, para ver las filas y las columnas de excel.

Prueba lo siguiente

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
  Dim BIP As Variant
  Dim OBS As String
  Dim Area As String
  Dim f As Range
  Dim fila As Long, colu As Long
  '
  If Not Intersect(Target, Range("L2:O28")) Is Nothing Then
    BIP = Cells(Target.Row, "B")            'Cambia "B" por la columna BIP
    Area = Cells(1, Target.Column)          'Cambia 1 por la fila de los títulos
    '
    Set f = Sheets("Observaciones_ESP").Range("$A$2:$A$30").Find(BIP, , xlValues, xlWhole, , , False)
    If Not f Is Nothing Then
      fila = f.Row
      colu = Target.Column - Columns("L").Column 'Cambia "L" por la columna "JURIDICO"
      OBS = f.Offset(0, colu + 3)
      MsgBox OBS, vbOKOnly, Area
    End If
    Cancel = True
  End If
End Sub

¡Gracias! Lo probaré!!! 

Gracias Dante Amor pero no me funciono mucho, Aquí adjunto el archivo con algunas notas.

Archivo

Gracias por la ayuda.

saludos

No puedo descargar tu archivo.

Explica con ejemplos lo que necesitas.

Hola Dante Amor aquí el ejemplo, saludos

Espero este entendible.

saludos y gracias

Así es cómo deben hacer las explicaciones de cada pregunta. TE FELICITO

Utiliza el siguiente código:

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
  Dim f As Range
  '
  If Not Intersect(Target, Range("L2:O28")) Is Nothing Then
    Set f = Sheets("Observaciones_ESP").Range("$A$2:$A$30").Find(Cells(Target.Row, "C"), , xlValues, xlWhole, , , False)
    If Not f Is Nothing Then MsgBox f.Offset(0, Target.Column - 9), , Cells(1, Target.Column)
    Cancel = True
  End If
End Sub

Muchas gracias... todo el código que hice, quedo reducido a su más mínima expresión, te pasaste funciona perfecto y me servirá para seguir aprendiendo.

Saludos y muchísimas gracias nuevamente.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas