En excel en un formulario rellenar un textbox3 y volcar el resultado de restar ese textbox3 al textbox2 y si es negativo volver

En excel en un formulario rellenar un textbox3 y volcar el resultado de restar ese (textbox3 menos textbox2) al textbox4, y si es negativo el textbox4 volver al textbox3, y si es positivo o (0) ir al cmdAceptar.

Puedo enviar intento de ejemplo pero no vuelve al textbox3 cuando es negativo, y cuando es positivo no va a cmdAceptar se va al textbox4.

Private Sub cmdAceptar_Click()

totalventa = Txttotalventa
COBROACTA = TxtCOBROACTA
ENTREGAELCLIENTE = TxtENTREGAELCLIENTE
CAMBIO = TxtDEVOLVERALCLIENTE
Range("B10:G24").Select
Selection.Copy
ActiveWindow.ScrollWorkbookTabs Sheets:=1
ActiveWindow.ScrollWorkbookTabs Position:=xlFirst
Sheets("DIARIO CAJA").Select
ult = Cells(Rows.Count, 2).End(xlUp).Row + 2
Range("A" & ult).Select
ActiveSheet.Paste
Final = Cells(Rows.Count, 1).End(xlUp).Row
Range("E" & Final) = TOTALVENTA
Range("F" & Final) = COBROACTA
Range("G" & Final) = ENTREGAELCLIENTE
Range("H" & Final) = CAMBIO
Range("I" & Final) = TOTALVENTA - COBROACTA
Sheets("FRM.ENTRADA PRENDAS").Select
Range("B10:G24").Select
Selection.ClearContents
Range("A3").Select
Unload frmcobrardeentradaprendas
End Sub

Private Sub cmdCancelar_Click()
Unload frmcobrardeentradaprendas
End Sub

Private Sub TxtCOBROACTA_Change()

End Sub

Private Sub TxtDEVOLVERALCLIENTE_ENTER()

If TxtCOBROACTA = 0 Then
Me.TxtDEVOLVERALCLIENTE = 0

Else
If TxtDEVOLVERALCLIENTE < 0 Then
MsgBox "ATENCION EL CLIENTE DEBE PAGAR LA ENTREGA A CUENTA"
'If TxtENTREGAELCLIENTE.Value < TxtCOBROACTA.Value Then
'MsgBox "ATENCION EL CLIENTE DEBE PAGAR LA ENTREGA A CUENTA"
'MsgBox "TxtCOBROACTA: " & TxtCOBROACTA
'MsgBox "TxtENTREGAELCLIENTE: " & TxtENTREGAELCLIENTE
'TxtENTREGAELCLIENTE.SetFocus
'TxtENTREGAELCLIENTE = ""
'Unload frmcobrardeentradaprendas
Else
Me.TxtDEVOLVERALCLIENTE = TxtENTREGAELCLIENTE - TxtCOBROACTA
End If
End If
End Sub

Private Sub TxtENTREGAELCLIENTE_Change()

End Sub

Private Sub TxtTOTALVENTA_Change()

End Sub

Private Sub UserForm_Activate()
TxtENTREGAELCLIENTE.SetFocus
End Sub

1 Respuesta

Respuesta
2

Envíame tu archivo y me explicas con ejemplos qué debo capturar en cada textbox y qué acciones debe realizar la macro.

Mi correo [email protected]

En el asunto del correo escribe tu nombre de usuario “Alfredo Blanco

Te anexo el código

Dim saliendo
'
Private Sub cmdAceptar_Click()
    If IsNumeric(TxtENTREGAELCLIENTE.Value) And TxtENTREGAELCLIENTE.Value > 0 Then
        wcliente = CDbl(TxtENTREGAELCLIENTE.Value)
        If IsNumeric(TxtCOBROACTA.Value) And TxtCOBROACTA.Value > 0 Then
             wcobro = CDbl(TxtCOBROACTA.Value)
            If wcliente < wcobro Then
                MsgBox "Atención el importe en efectivo que entrega el cliente es " & _
                       "inferior al importe del cobro a cuenta"
                TxtENTREGAELCLIENTE.SetFocus
                Exit Sub
            Else
                TxtDEVOLVERALCLIENTE.Value = wcliente - wcobro
            End If
        Else
            MsgBox "El valor en Cobro a Cuenta no es válido"
            TxtENTREGAELCLIENTE.SetFocus
            Exit Sub
        End If
    Else
        MsgBox "El valor en Entraga el Cliente no es válido"
        TxtENTREGAELCLIENTE.SetFocus
        Exit Sub
    End If
    TOTALVENTA = CDbl(TxtTOTALVENTA)
    COBROACTA = CDbl(TxtCOBROACTA)
    ENTREGAELCLIENTE = CDbl(TxtENTREGAELCLIENTE)
    CAMBIO = CDbl(TxtDEVOLVERALCLIENTE)
    Range("B10:G24").Select
    Selection.Copy
    ActiveWindow.ScrollWorkbookTabs Sheets:=1
    ActiveWindow.ScrollWorkbookTabs Position:=xlFirst
    Sheets("DIARIO CAJA").Select
    ult = Cells(Rows.Count, 2).End(xlUp).Row + 2
    Range("A" & ult).Select
    ActiveSheet.Paste
    Final = Cells(Rows.Count, 1).End(xlUp).Row
    Range("E" & Final) = TOTALVENTA
    Range("F" & Final) = COBROACTA
    Range("G" & Final) = ENTREGAELCLIENTE
    Range("H" & Final) = CAMBIO
    Range("I" & Final) = TOTALVENTA - COBROACTA
    Sheets("FRM.ENTRADA PRENDAS").Select
    Range("B10:G24").Select
    Selection.ClearContents
    Range("A3").Select
    Unload frmcobrardeentradaprendas
End Sub
'
Private Sub TxtENTREGAELCLIENTE_Exit(ByVal Cancel As MSForms.ReturnBoolean)
'Por.Dante Amor
    If saliendo Then Exit Sub
    If IsNumeric(TxtENTREGAELCLIENTE.Value) And TxtENTREGAELCLIENTE.Value > 0 Then
        wcliente = CDbl(TxtENTREGAELCLIENTE.Value)
        If IsNumeric(TxtCOBROACTA.Value) And TxtCOBROACTA.Value > 0 Then
             wcobro = CDbl(TxtCOBROACTA.Value)
            If wcliente < wcobro Then
                MsgBox "Atención el importe en efectivo que entrega el cliente es " & _
                       "inferior al importe del cobro a cuenta"
                Cancel = True
                Exit Sub
            Else
                TxtDEVOLVERALCLIENTE.Value = wcliente - wcobro
            End If
        Else
            MsgBox "El valor en Cobro a Cuenta no es válido"
            Cancel = True
            Exit Sub
        End If
    Else
        MsgBox "El valor en Entraga el Cliente no es válido"
        Cancel = True
        Exit Sub
    End If
End Sub
'
Private Sub TxtENTREGAELCLIENTE_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    If KeyAscii <> 46 And (KeyAscii < 48 Or KeyAscii > 57) Then
        KeyAscii = 0
    End If
End Sub
'
Private Sub UserForm_Activate()
    TxtENTREGAELCLIENTE.SetFocus
    saliendo = False
End Sub
'
Private Sub cmdCancelar_Click()
    Unload frmcobrardeentradaprendas
End Sub
'
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
    saliendo = True
End Sub

.

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

.

Avísame cualquier duda

.

funciona perfectamente, pero como me gusta aprender y entender los pasos, te ruego me indiques el significado de cdbl.

grascia anticipadas.

Lo que tienes en un textbox o Combobox o listbox, son textos, aunque visiblemente veas un número, internamente es un texto, la función CDbl( ) convierte un número en valor numérico.

Recuerda valorar la respuesta. G racias

.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas