MSGBOX de acuerdo con texto variable segun celda elegida?

Hola tengo este código:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'x Elsamatilde
'controla que se esté seleccionando celda en col A
If Not Intersect(Target, Columns("A")) Is Nothing Then
'controla que se haya seleccionado 1 sola celda
Dim respuesta As Variant
respuesta = MsgBox("¿Este producto necesitas?", vbYesNo + vbExclamation, "ADVERTENCIA")
      If respuesta = vbYes Then
    If Target.Count = 1 Then
        Application.ScreenUpdating = False
        Sheets("NUEVO SERVICIO A DOMICILIO").Select
        'si la celda activa está fuera  del rango 18:24 no se ejecuta
        If ActiveCell.Row < 18 Or ActiveCell.Row > 24 Then
            MsgBox "Ya no hay filas para ingresar productos.", , "ERROR"
            Exit Sub
              If respuesta = vbNo Then
              Exit Sub
        End If
        End If
        'ya estará la celda destino seleccionada
        'desprotejo
        ActiveSheet.Unprotect "28021990"
        'ActiveSheet.Range("D" & ActiveCell.Row) = Cells(Target.Row, "A")    'clave
        ActiveSheet.Range("G" & ActiveCell.Row) = Cells(Target.Row, "C")                     'producto
        ActiveSheet.Range("L" & ActiveCell.Row) = Cells(Target.Row, "D")    'precio
        'se vuelve a proteger
        ActiveSheet.Protect "28021990"
        'pasar a la fila sgte para seguir agregando productos a hoja NOTA
        ActiveCell.Offset(1, 0).Select
        'vuelvo a la hoja VER PRODUCTO
        Sheets("PRODUCTOS").Select
     End If
End If
End If
End Sub
  'If respuesta = vbNo Then Exit Sub

el cual al seleccionar cualquier celda de la comuna A, este me copia y pega a otra HOJA el texto que contiene esa celda que seleccionaste pero de la columna C... Tengo un msgbox que dice:¿Este producto necesitas?, lo que si se pudiera hacer es que al seleccionar la celda este me arroje el "texto" que aparece en la columna C osea que me diga que estoy seleccionado...

Un msgbox que diga: HAZ SELECCIODO "UN PAN CON FRUTA" y sea variable segun lo que yo seleccione..

Gracias

1 respuesta

Respuesta
2

Dejo algunos ajustes, luego lo probas y me coments. Controla que se haya seleccionado 1 celda va antes, así la corrí.

If Not Intersect(Target, Columns("A")) Is Nothing Then
'controla que se haya seleccionado 1 sola celda
If Target.Count = 1 Then
Dim respuesta As Variant
'muestro el valor de la col C
respuesta = MsgBox("Seleccionaste " & range("C" & target.row) & " ¿Este producto necesitas?", vbYesNo + vbExclamation, "ADVERTENCIA")
      If respuesta = vbYes Then
'respondió x Si
        Application.ScreenUpdating = False
        Sheets(

Luego revisa que tengas todos los End if ... si te da algún error volveme a escribir aquí como te quedó la macro.

Sdos

Elsa

Mejor cambiamos el modo de preguntar porque nos vamos a perder entre tantos IF

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'x Elsamatilde
'controla que se esté seleccionando celda en col A
If Intersect(Target, Columns("A")) Is Nothing Then Exit Sub
'controla que se haya seleccionado 1 sola celda
If Target.Count > 1 Then Exit Sub
Dim respuesta As Variant
respuesta = MsgBox("Seleccionaste " & Range("C" & Target.Row) & " ¿Este producto necesitas?", vbYesNo + vbExclamation, "ADVERTENCIA")
'si la respuesta es NO cancela aquí
If respuesta <> vbYes Then Exit Sub
  Application.ScreenUpdating = False
  Sheets("NUEVO SERVICIO A DOMICILIO").Select
  'si la celda activa está fuera  del rango 18:24 no se ejecuta
  If ActiveCell.Row < 18 Or ActiveCell.Row > 24 Then
      MsgBox "Ya no hay filas para ingresar productos.", , "ERROR"
      'EVALUA AQUÍ A QUÉ HOJA REGRESAR 
      Exit Sub
  End If
  'ya estará la celda destino seleccionada
    'desprotejo
    ActiveSheet.Unprotect "28021990"
    'ActiveSheet.Range("D" & ActiveCell.Row) = Cells(Target.Row, "A")    'clave
    ActiveSheet.Range("G" & ActiveCell.Row) = Cells(Target.Row, "C")                     'producto
    ActiveSheet.Range("L" & ActiveCell.Row) = Cells(Target.Row, "D")    'precio
    'se vuelve a proteger
    ActiveSheet.Protect "28021990"
    'pasar a la fila sgte para seguir agregando productos a hoja NOTA
    ActiveCell.Offset(1, 0).Select
    'vuelvo a la hoja VER PRODUCTO
    Sheets("PRODUCTOS").Select
End Sub

Solo resta que decidas a qué hoja regresar cuando ya no haya filas..

Sdos!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas