Este sera nuestro formato de la factura en Excel.
Los formularios que utilizaremos en Visual Basic seran:
Private Sub CommandButton1_Click()
Sheets("Base de Datos").Select
On Error Resume Next
Cells.Find(What:=TextBox1, After:=ActiveCell, LookIn:=xlFormulas, LookAt _
:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
False, SearchFormat:=False).Activate
comparacion.Caption = ActiveCell
If comparacion.Caption = TextBox1 Or TextBox2 = Empty Then
MsgBox "¡Codigo no valido o Codigo Repetido!", vbOKOnly, "¡Error!"
TextBox1 = Empty
TextBox1.SetFocus
Else
Range("A2").Select
Do While Not IsEmpty(ActiveCell)
ActiveCell.Offset(1, 0).Select
Loop
ActiveCell = TextBox1.Value
ActiveCell.Offset(0, 1).Select
ActiveCell = TextBox2.Value
ActiveCell.Offset(0, 1).Select
ActiveCell = TextBox3.Value
ActiveCell.Offset(0, 1).Select
ActiveCell = TextBox4.Value
ActiveWorkbook.Save
MsgBox "Los datos fueron guardados con èxito", vbOKOnly, "Aceptar"
TextBox1 = Empty
TextBox2 = Empty
TextBox3 = Empty
TextBox4 = Empty
TextBox1.SetFocus
End If
End Sub
Private Sub CommandButton2_Click()
UserForm1.Hide
UserForm4.Show
End Sub
EL SEGUNDO FORMULARIO SERÁ EL DISEÑO DE LA FACTURA:
Y SUS CODIGOS SON:
Private Sub CommandButton1_Click()
If nit.Value = Empty Or c1.Value = Empty Then
MsgBox "Debe agregar datos para procesar", vbOKOnly, "Error en ingreso de datos"
If c1.Value = Empty Then
c1.SetFocus
End If
If nit.Value = Empty Then
nit.SetFocus
End If
Else
ActiveCell = e1.Value
Sheets("factura").Select
On Error Resume Next
Range("a12").Select
Do While Not IsEmpty(ActiveCell)
ActiveCell.Offset(1, 0).Select
Loop
ActiveCell = cod1.Value
ActiveCell.Offset(0, 1).Select
ActiveCell = p1.Value
ActiveCell.Offset(0, 1).Select
ActiveCell = pu1.Value
ActiveCell.Offset(0, 1).Select
ActiveCell = c1.Value
ActiveCell.Offset(0, 1).Select
ActiveCell = s1.Value
Range("e28").Select
total = Val([E28])
cod1 = Empty
p1 = Empty
pu1 = Empty
c1 = Empty
s1 = Empty
cod1.SetFocus
Sheets("factura").Select
Range("a12").Select
End If
End Sub
Private Sub CommandButton2_Click()
Sheets("clientes").Select
Range("a1").Select
If comparacion.Caption <> nit.Value Then
Range("A2").Select
Do While Not IsEmpty(ActiveCell)
ActiveCell.Offset(1, 0).Select
Loop
ActiveCell = nombre.Value
ActiveCell.Offset(0, 1).Select
ActiveCell = direccion.Value
ActiveCell.Offset(0, 1).Select
ActiveCell = nit.Value
End If
Sheets("factura").Select
Range("B6").Select
ActiveCell = nombre
Range("B7").Select
ActiveCell = direccion
Range("e7").Select
ActiveCell = nofac
Range("E8").Select
ActiveCell = fecha
Range("E9").Select
ActiveCell = nit
MsgBox "La factura se ha imprimido con exito", vbOKOnly, "Resultado"
[XFD1] = [XFD1] + 1
End Sub
Private Sub c1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
On Error Resume Next
If cod1.Value <> Empty Then
e1.Value = e1.Value - c1.Value
End If
End Sub
Private Sub c1_Change()
If Val(e1) < Val(c1) Then
MsgBox "No hay suficientes en existencia", vbOKOnly, "¡ERROR!"
c1 = Empty
End If
c1.SetFocus
If c1 = "" Then
s1 = ""
Else: s1 = Val(pu1) * Val(c1)
End If
End Sub
Private Sub cod1_Change()
If cod1 >= 5000 Then
Sheets("Base de Datos").Select
On Error Resume Next
Cells.Find(What:=cod1.Value, After:=ActiveCell, LookIn:=xlFormulas, LookAt _
:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
False, SearchFormat:=False).Activate
comparacion.Caption = ActiveCell
If comparacion.Caption = cod1.Value Then
ActiveCell.Offset(0, 1).Select
p1 = ActiveCell
ActiveCell.Offset(0, 1).Select
pu1 = ActiveCell
ActiveCell.Offset(0, 1).Select
e1 = ActiveCell
c1.SetFocus
Else
MsgBox "Codigo no existente, intente con otro", vbOKOnly, "Error"
cod1 = Empty
cod1.SetFocus
End If
If nit = "" Then
MsgBox "Debe ingresar NIT", vbOKOnly, "¡ERROR!"
nit.SetFocus
End If
End If
End Sub
Private Sub CommandButton4_Click()
UserForm2.Hide
UserForm4.Show
End Sub
Private Sub CommandButton5_Click()
nit = Empty
direccion = Empty
nombre = Empty
total = Empty
nit.SetFocus
End Sub
Private Sub nit_Change()
Sheets("clientes").Select
Range("a1").Select
On Error Resume Next
Cells.Find(What:=nit.Value, After:=ActiveCell, LookIn:=xlFormulas, LookAt _
:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
False, SearchFormat:=False).Activate
comparacion.Caption = ActiveCell
If comparacion.Caption = nit.Value Then
ActiveCell.Offset(0, -2).Select
nombre.Value = ActiveCell
ActiveCell.Offset(0, 1).Select
direccion.Value = ActiveCell
Else
nombre = Empty
direccion = Empty
End If
End Sub
Private Sub UserForm_Initialize()
nit.SetFocus
fecha = Date
Sheets("Base de datos").Select
nofac = [l20] + 1
End Sub
Private Sub CommandButton3_Click()
UserForm2.Hide
End Sub
Private Sub e1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
On Error Resume Next
If cod1 > 5000 Then
e1.Value = c1.Value - e1.Value
End If
End Sub
Private Sub total_Change()
total = Val(s1)
End Sub
EL TERCER FORMULARIO ES EL DE USUARIO
Y SUS CODIGOS SON:
Private Sub CommandButton1_Click()
Sheets("Usuarios").Select
Range("A2").Select
On Error Resume Next
Cells.Find(What:=NOM, After:=ActiveCell, LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False).Activate
COMPAN = ActiveCell
ActiveCell.Offset(0, 1).Select
COMPAC = ActiveCell
If NOM.Value <> COMPAN Or CONTRA.Value <> COMPAC Then
MsgBox "Nombre o contraseña erroneos", vbOKOnly, "¡ERROR!"
CONTRA = Empty
CONTRA.SetFocus
Else
UserForm3.Hide
UserForm4.Show
End If
End Sub
Y POR ULTIMO HACEMOS EL FORMULARIO DE OPCIONES
Y SUS CODIGOS SON
Private Sub CommandButton2_Click()
UserForm4.Hide
UserForm2.Show
End Sub
Private Sub CommandButton3_Click()
UserForm4.Hide
UserForm1.Show
End Sub
Private Sub CommandButton4_Click()
UserForm4.Hide
End Sub
Y ASI TERMINAMOS UNA FACTURA EN EXCEL Y VISUAL BASIC.
Hola, me podrias regalar una copia de tu archivo, soy principiante en esto, ya mas o menos lo hice pero me da errores, gracias, mi correo carlos.soto.ojeda@gmail.com
ResponderEliminarmuito bom
ResponderEliminarME PUEDES ENVIAR EL ARCHIVO A distrimuebleslacosta1@gmail.com
ResponderEliminar