.
El formulario de ejemplo está compuesto por dos combobox que uno extrae los datos de los Clientes que están registrados en la hoja2; en cambio el combobox2 al inicializarse el formulario se agregan dos items solamente, sin necesidad de recorrer las filas e ir agregando registro por registro hasta que se llegue a la última fila con datos como en el caso del combobox1.
Además de los combobox de los que se hablaba en el párrafo anterior el formulario de ejemplo está presenta tres textbox para capturar datos y dos botones de comando, uno para cerrar el formulario y otro para guardar los datos cargados en los combobox y textbox.
La programación de la Macro de Excel realizada en VBA, para el botón que realiza la función de cerrar el formulario es muy simple, Unload Me, en el botón de comando guardar se concentra la mayor parte del código, una vez cargados los datos; en este ejemplo, en caso de haber algún control vacío, hace que salga un msgbox avisando que se deben completar todos los campos, luego el procedimiento de VBA, abre el libro, que en este caso se encuentra en una carpeta compartida, guarda los datos de los combobox y textbox y luego guarda el libro, haciendo foco en el combobox1 para seguir con la siguiente carga de datos. Haciendo click en la imagen podrás agrandarla y ver una primera impresión del libro.
Se debe tener en cuenta a los fines de la utilización del ejemplo, que cuando se descarga el mismo, se baja un archivo comprimido con dos archivos de excel; en uno esta la plantilla, que se observa en la imagen, con el formulario para ingreso de datos y otro archivo, denominado libro4, en donde guarda los datos el formulario; aquí se debe tener la precaución de cambiar el código que está en el botón «SAVE» del formulario, básicamente es modificar la dirección en donde la macro va a buscar el libro y luego va a guardar el archivo llamado libro4.
Este es el códigos que se debe adaptar por la dirección correcta del libro donde cada uno guardó el archivo de ejemplo bajado y denominado libro4:
Application.Workbooks.Open «C:UsersMyNotebookDocumentslibro4.xlsx»
Este ejemplo de macro es bastante útil cuando existen varios usuarios que cargan o ingresan datos sobre una misma base, por ello el libro con la base de datos se guarda en una carpeta compartida para que todos tengan acceso y en la PC de cada usuario se debe cargar un archivo liviano que contiene solamente el formulario de ingreso de datos, también se puede implementar cuando se desea guardar datos en cualquier otro archivo que no sea el archivo actual desde el cual se ejecuta la macro.
Al abrir el libro de Excel primero se ejecuta un procedimiento de VBA que se encuentra en ThisWorkbook, está línea de código llama a otro procedimiento que se encuentra en el Módulo 1, el cual procede a mostrar el UserForm1, que contiene los combobox y cuadros de texto de los cuales venimos hablando.
Private Sub Workbook_Open()
show
End Sub
Código que se inserta en un módulo
Sub show()
UserForm1.show
End Sub
Código que se inserta en el formulario
Private Sub CommandButton1_Click()
Dim uf As String
Dim importe As Currency
Application.ScreenUpdating = False
If ComboBox1 = Empty Or TextBox1 = Empty Or TextBox2 = Empty Or TextBox3 = Empty Or ComboBox2 = Empty Then
MsgBox («Debe completar todos los campos»), vbCritical, «AVISO»
ComboBox1.SetFocus
Exit Sub
End If
‘Abrimos el libro donde se va a copiar
Application.Workbooks.Open «C:UsersMyNotebookDocumentslibro4.xlsx» ‘Cambiar por la dirección correcta del libro en la PC
‘determines last row with data
uf = Sheets(«Hoja1»).Range(«A» & Rows.Count).End(xlUp).Row
uf = uf + 1
importe = TextBox3.Value
Sheets(«hoja1»).Cells(uf, 1) = ComboBox1
Sheets(«hoja1»).Cells(uf, 2) = TextBox1
Sheets(«hoja1»).Cells(uf, 3) = TextBox2
Sheets(«hoja1»).Cells(uf, 4) = importe
Sheets(«hoja1»).Cells(uf, 5) = ComboBox2
‘Cierra libro guardando cambios sin preguntar
Workbooks(«libro4.xlsx»).Close True
ComboBox1 = Clear
TextBox1 = Clear
TextBox2 = Clear
TextBox3 = Clear
ComboBox2 = Clear
ComboBox1.SetFocus
Application.ScreenUpdating = True
End Sub
Private Sub CommandButton2_Click()
Unload Me
End Sub
Private Sub UserForm_Initialize()
Application.ScreenUpdating = False
ComboBox1.Clear
Sheets(«hoja2»).Select
Range(«A2»).Select
While ActiveCell <> Empty
ComboBox1.AddItem ActiveCell
ActiveCell.Offset(1, 0).Select
Wend
ComboBox2.Clear
ComboBox2.AddItem («CANCELLED»)
ComboBox2.AddItem («PENDING»)
Sheets(«hoja1»).Select
Application.ScreenUpdating = True
End Sub
.
Si te gustó por favor compártelo con tus amigos
If you liked please share it with your friends