Descargar datos al iniciar en una ListBox
He hecho un pequeño programita y mi pregunta seguramente será muy básica, pero estoy empezando.
Es sobre VBA y tengo una hoja excel con una serie de columnas.
Quiero que al abrir el programa me rellene dentro del formulario el ListBox con dos columnas de esta hoja excel.
Luego como verás puedo seguir añadiendo líneas a la hoja.
El programa está a falta de retoques casi hecho, pero estoy atascado en esto.
Igualmente verás que hay un Public Sub DatosPersonal(), pero no pasa por aquí el programa cuando abro la hoja excel, aunque si lo hace por el módulo y me abre el formulario.
Te adjunto el código del módulo y el resto del programa.
Gracias de forma anticipada.
Cándido
Modulo
Sub Auto_open()
frmPersonal.Show
End Sub
Código FORMULARIO
Public Sub DatosPersonal()
Dim Nombre, Apellido1, Apellido2, Telefono, Cargo, Despacho As String
Dim UltimaFila As Integer
UltimaFila = Range("A1").End(xlDown).Row + 1 'Busca la última línea con celda vacía
For a = 2 To UltimaFila
Nombre = Cells(a, 1)
Apellido1 = Cells(a, 2)
LstReporter.AddItem Nombre + " " + Apellido1
Next
End Sub
Private Sub cmdInsertar_Click()
'Dim Nombre, Apellido1, Apellido2, Telefono, Cargo, Despacho As String
'Dim UltimaFila As Integer
If TxtNombre + TxtApellido1 + TxtApellido2 + _
TxtTelefono + TxtCargo + TxtDespacho = Empty Then
LimpiarDatosFormulario
Exit Sub
End If
UltimaFila = Range("A1").End(xlDown).Row + 1 'Busca la última línea con celda vacía
LstReporter = Empty
For a = 2 To UltimaFila
Nombre = Cells(a, 1)
Apellido1 = Cells(a, 2)
LstReporter.AddItem Nombre + " " + Apellido1
Next
Nombre = TxtNombre.Value
Apellido1 = TxtApellido1.Value
Apellido2 = TxtApellido2.Value
Telefono = TxtTelefono.Value
Cargo = TxtCargo.Value
Despacho = TxtDespacho.Value
Worksheets("Hoja1").Rows(2).Insert Shift:=xlDown 'Inserta fila en blanco
Worksheets("Hoja1").Rows(2).Font.Bold = False
Cells(2, 1) = Nombre
Cells(2, 2) = Apellido1
Cells(2, 3) = Apellido2
Cells(2, 4) = Telefono
Cells(2, 5) = Cargo
Cells(2, 6) = Despacho
LimpiarDatosFormulario
End Sub
Private Sub cmdSalir_Click() 'Si se pulsa botón salir pregunta si o no
If MsgBox("¿Quiere salir de la aplicación?", vbQuestion + vbYesNo, "") = vbYes Then
CerrandoLibros
Application.Quit
End If
End Sub
Sub CerrandoLibros() 'Guarda y cierra el libro activo
ActiveWorkbook.Save
ActiveWorkbook.Close
End Sub
Sub LimpiarDatosFormulario() 'Limpia los campos del formulario
TxtNombre = Empty
TxtApellido1 = Empty
TxtApellido2 = Empty
TxtTelefono = Empty
TxtCargo = Empty
TxtDespacho = Empty
End Sub
Es sobre VBA y tengo una hoja excel con una serie de columnas.
Quiero que al abrir el programa me rellene dentro del formulario el ListBox con dos columnas de esta hoja excel.
Luego como verás puedo seguir añadiendo líneas a la hoja.
El programa está a falta de retoques casi hecho, pero estoy atascado en esto.
Igualmente verás que hay un Public Sub DatosPersonal(), pero no pasa por aquí el programa cuando abro la hoja excel, aunque si lo hace por el módulo y me abre el formulario.
Te adjunto el código del módulo y el resto del programa.
Gracias de forma anticipada.
Cándido
Modulo
Sub Auto_open()
frmPersonal.Show
End Sub
Código FORMULARIO
Public Sub DatosPersonal()
Dim Nombre, Apellido1, Apellido2, Telefono, Cargo, Despacho As String
Dim UltimaFila As Integer
UltimaFila = Range("A1").End(xlDown).Row + 1 'Busca la última línea con celda vacía
For a = 2 To UltimaFila
Nombre = Cells(a, 1)
Apellido1 = Cells(a, 2)
LstReporter.AddItem Nombre + " " + Apellido1
Next
End Sub
Private Sub cmdInsertar_Click()
'Dim Nombre, Apellido1, Apellido2, Telefono, Cargo, Despacho As String
'Dim UltimaFila As Integer
If TxtNombre + TxtApellido1 + TxtApellido2 + _
TxtTelefono + TxtCargo + TxtDespacho = Empty Then
LimpiarDatosFormulario
Exit Sub
End If
UltimaFila = Range("A1").End(xlDown).Row + 1 'Busca la última línea con celda vacía
LstReporter = Empty
For a = 2 To UltimaFila
Nombre = Cells(a, 1)
Apellido1 = Cells(a, 2)
LstReporter.AddItem Nombre + " " + Apellido1
Next
Nombre = TxtNombre.Value
Apellido1 = TxtApellido1.Value
Apellido2 = TxtApellido2.Value
Telefono = TxtTelefono.Value
Cargo = TxtCargo.Value
Despacho = TxtDespacho.Value
Worksheets("Hoja1").Rows(2).Insert Shift:=xlDown 'Inserta fila en blanco
Worksheets("Hoja1").Rows(2).Font.Bold = False
Cells(2, 1) = Nombre
Cells(2, 2) = Apellido1
Cells(2, 3) = Apellido2
Cells(2, 4) = Telefono
Cells(2, 5) = Cargo
Cells(2, 6) = Despacho
LimpiarDatosFormulario
End Sub
Private Sub cmdSalir_Click() 'Si se pulsa botón salir pregunta si o no
If MsgBox("¿Quiere salir de la aplicación?", vbQuestion + vbYesNo, "") = vbYes Then
CerrandoLibros
Application.Quit
End If
End Sub
Sub CerrandoLibros() 'Guarda y cierra el libro activo
ActiveWorkbook.Save
ActiveWorkbook.Close
End Sub
Sub LimpiarDatosFormulario() 'Limpia los campos del formulario
TxtNombre = Empty
TxtApellido1 = Empty
TxtApellido2 = Empty
TxtTelefono = Empty
TxtCargo = Empty
TxtDespacho = Empty
End Sub
1 Respuesta
Respuesta de asderpunk