Condicionar una macro según el valor de un Textbox en un formulario

Necesito ejecutar una macro si se cumplen tres condiciones especificas donde una de ellas es que el valor del Textbox sea cualquiera menos vacío... Tengo un formulario con un Textbox y un botón... La macro debe ejecutarse al presionar el botón.. Entonces

Private Sub CommandButton1_Click()
If TextBox1.Value <> "" And Sheets("hoja1").Range("I54").Value = "" Or Sheets("hoja1").Range("I54").Value = 0 Then
Cells(54, 9) = TextBox1.Value
Else
If MsgBox("desea reemplazar los valores, vbYesNo, "Reemplazar") = vbYes Then
Cells(54, 9) = TextBox1.Value
End If
End If
End Sub

Lo que deseo es que el valor que se coloque en el textbox, se registren en la celda I54 sólo si esta celda esta vacía o tiene valor cero, y únicamente si el textbox tiene un valor cualquiera. Esto es porque si la condición de la celda no se cumple y el textbox tiene un valor por registrar, pedirá autirización para el reemplazo del dato...

No se que está mal...

Respuesta
1

Intenta esto:

Private Sub CommandButton1_Click()
If Sheets("hoja1").Range("I54").Value = "" Or _
Sheets("hoja1").Range("I54").Value = 0 Then
Cells(54, 9) = Me.TextBox1.Value
Else
respuesta = MsgBox("desea reemplazar los valores", vbYesNo, "Reemplazar")
If respuesta = vbYes Then
    Cells(54, 9) = Me.TextBox1.Value
End If
End If
End Sub

Saludos!

RaduNordenhulk

https://www.youtube.com/channel/UCwnx_b0C6UGB0vnKOLMfGeA

2 respuestas más de otros expertos

Respuesta
2

La instrucción del Msgbox debe quedar así.

If MsgBox("desea reemplazar los valores", vbYesNo, "Reemplazar") = vbYes Then

Sdos.

Elsa

Respuesta
1

H o l a:

Te anexo la macro actualizada:

Private Sub CommandButton1_Click()
'Act.Por.Dante Amor
    If TextBox1.Value = "" Then Exit Sub    'si el texbox es vacío se sale
    '
    Set r = Sheets("Hoja1").Range("I54")
    If r.Value = "" Or r.Value = 0 Then
        r.Value = TextBox1.Value
    Else
        If MsgBox("desea reemplazar los valores", vbYesNo, "Reemplazar") = vbYes Then
            r.Value = TextBox1.Value
        End If
    End If
End Sub

Si quieres poner un mensaje en cada acción, quedaría así:

Private Sub CommandButton1_Click()
'Act.Por.Dante Amor
    If TextBox1.Value <> "" Then
        Set r = Sheets("Hoja1").Range("I54")
        If r.Value = "" Or r.Value = 0 Then
            r.Value = TextBox1.Value
            MsgBox "La celda se actualizó", vbInformation
        Else
            If MsgBox("desea reemplazar los valores", vbYesNo, "Reemplazar") = vbYes Then
                r.Value = TextBox1.Value
                MsgBox "Los valores se reemplazaron", vbInformation
            End If
        End If
    Else
        MsgBox "El textbox está vacío, no se actualiza", vbExclamation
    End If
    TextBox1.SetFocus
End Sub

':)
':)

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas