Usar Msgbox para Cambiar el contenido de una celda (Que se encuentra en texto)

Tengo un Excel men el cual quiero generar una especie de Msg Box con VbYesNoCancel con el cual al tocar entre los rangos D11 a infinito D (Debido a que no se cual es la cantidad de informacion hasta ahora que agregare, genere un cambio en texto, es decir, al tocar la celda D11, que me pregunte si deseo cerrar la operacion y presione Si, me cambie la palabra a "Cerrado", si deseo darle a No, que me cambie la palabra a "Abierto". He intentado crear el macro pero al ser nueva pues me esta generando errores.

2 Respuestas

Respuesta
2

Pon la siguiente macro en los eventos de tu hoja.

Puedes seleccionar una celda o varias al mismo tiempo para cambiarles la palabra.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'---
'   Por.Dante Amor
'---
    '
    If Not Intersect(Target, Range("D11:D" & Rows.Count)) Is Nothing Then
        If Target.Count > 1000 Then Exit Sub
        res = MsgBox("Desea cerrar la operación", vbYesNoCancel, "CIERRE DE OPERACIONES")
        Select Case res
            Case vbYes:     palabra = "Cerrado"
            Case vbNo:      palabra = "Abierto"
            Case vbCancel:  Exit Sub
        End Select
        For Each c In Target
            If c.Row >= 11 Then
                c.Value = palabra
            End If
        Next
    End If
End Sub

Sigue las Instrucciones para poner la macro en los eventos de worksheet

  1. Abre tu libro de excel
  2. Para abrir Vba-macros y poder pegar la macro, Presiona Alt + F11
  3. Del lado izquierdo dice: VBAProject, abajo dale doble click a worksheet(tu hoja)
  4. En el panel del lado derecho copia la macro

'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias

H    o   l  a:

Te anexo la macro con un pequeño cambio

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'---
'   Por.Dante Amor
'---
    '
    If Not Intersect(Target, Range("D11:D" & Rows.Count)) Is Nothing Then
        If Target.Count > 1000 Then Exit Sub
        res = MsgBox("Desea cerrar la operación", vbYesNoCancel, "CIERRE DE OPERACIONES")
        Select Case res
            Case vbYes:     palabra = "Cerrado"
            Case vbNo:      palabra = "Abierto"
            Case vbCancel:  Exit Sub
        End Select
        For Each c In Target
            If c.Row >= 11 And c.Column = Columns("D").Column Then
                c.Value = palabra
            End If
        Next
    End If
End Sub

'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias
Respuesta
1

.23.03.17

Buenas tardes, Viviana

Aquí va una rutina que hace lo que estás solicitando.

Para que funcione, activa el editor de Visual Basic (presiona Alt+F11) y en el panel de la izquierda busca la hoja donde quieres que esto ocurra. Da doble click sobre ella. (Otra forma de llegar a este punto es hacer click derecho sobre la solapa de esta hoja y elegir la opción "Ver Código).

Allí pega el siguiente procedimiento de VBA:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'---- Variables modificables ----
'=== VIVIANA, modifica estos datos de acuerdo a tu proyecto:
    CeldaIni = "D11" 'celda desde donde se consultará
'---- fin Variables
'
'---- inicio de rutina:
'
If Target.Column = Range(CeldaIni).Column And Target.Row >= Range(CeldaIni).Row Then
    QueHago = MsgBox("Presione SI para cambiar a Cerrado" & Chr(10) & "o No para colocar Abierto", vbYesNo, "DESEA CERRAR LA OPERACION?")
    If QueHago = 6 Then
        Target.Value = "Cerrado"
    Else
        Target.Value = "Abierto"
    End If
End If
End Sub

Al inicio notarás una variable donde podrás modificar la celda desde donde iniciar el control.

Luego, cualquier celda de esa columna a partir de esa fila se comportará como pedías.

Coméntame si resuelve tu situación -y, en tal caso, agradeceré que califiques mi contribución- o escribeme de nuevo aquí, si necesitas más apoyo con esto.

Un abrazo

Fernando

.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas