lunes, 6 de mayo de 2013

FACTURA EN EXCEL Y VISUAL BASIC.


Este sera nuestro formato de la factura en Excel.


Los formularios que utilizaremos en Visual Basic seran:




Y sus codigos 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.



3 comentarios:

  1. 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

    ResponderEliminar
  2. ME PUEDES ENVIAR EL ARCHIVO A distrimuebleslacosta1@gmail.com

    ResponderEliminar