sábado, 9 de mayo de 2009

Ejemplo 3, prototipo de una cuenta corriente


Este prototipo ingresa nuevas cuentas con sus datos, va ingresando movimientos, entrega los saldos y emite una cartola de movimientos

El primer form que se ingresa es el que entrega los saldos y permite ir a ingresar cuentas y cartolas, Insertar, Userform


La programación de los componentes de este form es:

Para el ComboNombre

Private Sub ComboNombre_Click()
Rem al escoger un item del combobox hace lo siguiente
    Rem coloca el costo en textbox1
    saldo = 0
    CodCliente = ComboNombre.ListIndex + 1
    TextBox1.Text = Hoja1.Cells(CodCliente, 2)
    Rem coloca el precio de venta (lista) en textbox2
    TextBox2.Text = Hoja1.Cells(CodCliente, 3)
    TextBox3.Text = Hoja1.Cells(CodCliente, 4)
    ultimo = Hoja2.Cells(1, 1)
    For z% = 2 To ultimo
        If CodCliente = Hoja2.Cells(z%, 1) Then
            monto = Hoja2.Cells(z%, 4)
            If Hoja2.Cells(z%, 5) = "Debe" Then
                monto = -1 * monto
            End If
            saldo = saldo + monto
        End If
    Next z%
    TextBox4.Text = saldo
End Sub



Para el Command Button 1 (Agregar nueva cuenta)

Private Sub CommandButton1_Click()
    Rem para agregar nueva cuenta
    Rem se carga userform3
    Load UserForm3
    Rem se muestra userforrm2
    UserForm3.Show
End Sub



Para el Command Button 3 (para ir agregando movimientos)

Private Sub CommandButton3_Click()
    Rem para agregar un nuevo movimiento
    Rem se carga userform2
    Load UserForm2
    Rem se muestra userforrm2
    UserForm2.Show
End Sub



Para el Command Button 4 (para emitir cartola)

Private Sub CommandButton4_Click() Rem para emitir cartola Rem se carga userform4 Load UserForm4 Rem se muestra userforrm4 UserForm4.Show End Sub


Para Text Box 3 (coloca total venta)

Private Sub TextBox3_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    Rem calcula el total de la venta y lo coloca en textbox4.text
    TextBox4.Text = TextBox2.Text * TextBox3.Text
End Sub



Para cuando se activa la User Form

Private Sub UserForm_Activate()
    Rem llena los valores del combo cada vez que parte el programa userform_activate
    Rem para ello primero parte de la posicion 2
    Rem y cambia los valores de z desde 1 a 500
    Rem y con el metodo additem llena al combo de valores (nombres de articulos)
    If Hoja1.Cells(1, 1) <> "" Then
        For z = 1 To 500
            ComboNombre.AddItem Hoja1.Cells(z, 1)
        Next z
        Rem deja en blanco el combo
        ComboNombre.Text = ""
    End If
End Sub



Luego Insert, User form para el User Form de Insertar Movimiento



Cuyos componentes programables son

La User Form al activarse (ingresar el movimiento)

Private Sub UserForm_Activate()
    Rem llena los valores del combo cada vez que parte el programa userform_activate
    Rem para ello primero parte de la posicion 2
    Rem y cambia los valores de z desde 1 a 500
    Rem y con el metodo additem llena al combo de valores (nombres de articulos)
    If Hoja1.Cells(1, 1) <> "" Then
        For z = 1 To 500
            ComboNombre.AddItem Hoja1.Cells(z, 1)
        Next z
        Rem deja en blanco el combo
        ComboNombre.Text = ""
    End If
End Sub



El Comand Button1

Private Sub CommandButton1_Click()
    Rem posicion del indice en la celda 1,1
    indice = Hoja2.Cells(1, 1)
    Rem si el indice es cero se cambia a uno
    If indice = "" Then
        indice = 1
        Hoja2.Cells(1, 1) = indice
    End If
    Rem incrementa el indice en 1 lugar que es la fila donde debe grabar
    indice = indice + 1
    Rem coloca el nuevo valor del indice -incrementado- en la celda 1,1
    Hoja2.Cells(1, 1) = indice
    Rem escribe los contenidos de los textbox en la hoja 1
    Rem la fila es el valor del indice y la columna varia segun el contenido
    Hoja2.Cells(indice, 1) = ComboBox2.ListIndex + 1
    Hoja2.Cells(indice, 2) = TextBox1.Text
    Hoja2.Cells(indice, 3) = TextBox2.Text
    Hoja2.Cells(indice, 4) = TextBox3.Text
    Hoja2.Cells(indice, 5) = ComboBox1.Text
    Rem limpia todos los textbox
    TextBox2.Text = ""
    TextBox3.Text = ""
    Rem coloca el foco en textbox1
    ComboBox2.SetFocus
End Sub



Luego el User Form 3 para agregar nuevas cuentas, Insert, User Form



Cuyo código asl activarse es:

Private Sub UserForm_Activate()
    ComboBox1.AddItem "Haber"
    ComboBox1.AddItem "Debe"
    ComboBox1.Text = ComboBox1.List(1)
    TextBox1.Text = Date
    ComboBox2.SetFocus
    If Hoja1.Cells(1, 1) <> "" Then
        For z = 1 To 500
            ComboBox2.AddItem Hoja1.Cells(z, 1)
        Next z
        Rem deja en blanco el combo
        ComboBox2.Text = ""
    End If
End Sub


Para el Command Button 1 (ingresar cuenta)

Private Sub CommandButton1_Click()
    Rem posicion del indice en la celda 1,1
    indice = Hoja1.Cells(1, 1)
    Rem si el indice es cero se cambia a uno
    If indice = "" Then
        indice = 1
        Hoja1.Cells(1, 1) = indice
    End If
    Rem incrementa el indice en 1 lugar que es la fila donde debe grabar
    indice = indice + 1
    Rem coloca el nuevo valor del indice -incrementado- en la celda 1,1
    Hoja1.Cells(1, 1) = indice
    Rem escribe los contenidos de los textbox en la hoja 1
    Rem la fila es el valor del indice y la columna varia segun el contenido
    Hoja1.Cells(indice, 1) = TextBox1.Text
    Hoja1.Cells(indice, 2) = TextBox2.Text
    Hoja1.Cells(indice, 3) = TextBox3.Text
    Hoja1.Cells(indice, 4) = TextBox4.Text
    Rem limpia todos los textbox
    TextBox1.Text = ""
    TextBox2.Text = ""
    TextBox3.Text = ""
    TextBox4.Text = ""
    Rem coloca el foco en textbox1
    TextBox1.SetFocus
End Sub



Finalmente se inserta el User From 4 para emitir cartola Insert, User Form 

Solo contiene un Combo Box con el siguiente código

Private Sub UserForm_Activate()
    If Hoja1.Cells(1, 1) <> "" Then
        For z = 1 To 500
            ComboBox1.AddItem Hoja1.Cells(z, 1)
        Next z
        Rem deja en blanco el combo
        ComboBox1.Text = ""
    End If
End Sub
    indice = indice + 1
    Rem coloca el nuevo valor del indice -incrementado- en la celda 1,1
    Hoja1.Cells(1, 1) = indice
    Rem escribe los contenidos de los textbox en la hoja 1
    Rem la fila es el valor del indice y la columna varia segun el contenido
    Hoja1.Cells(indice, 1) = TextBox1.Text
    Hoja1.Cells(indice, 2) = TextBox2.Text
    Hoja1.Cells(indice, 3) = TextBox3.Text
    Hoja1.Cells(indice, 4) = TextBox4.Text
    Rem limpia todos los textbox
    TextBox1.Text = ""
    TextBox2.Text = ""
    TextBox3.Text = ""
    TextBox4.Text = ""
    Rem coloca el foco en textbox1
    TextBox1.SetFocus
End Sub


Y eso sería todo

No hay comentarios:

Publicar un comentario