Visual Basic para Aplicaciones - Registrar datos de un ListBox en un rango junto con datos de otros controles

Life is soft - evento anual de software empresarial
 
Vista:
Imágen de perfil de Willian Ernesto

Registrar datos de un ListBox en un rango junto con datos de otros controles

Publicado por Willian Ernesto (3 intervenciones) el 15/11/2014 20:55:40

"GUARDAR LOS ITEMS DE UN LISTBOX Y A LA VEZ LOS DE OTROS CONTROLES"


Hola amigos,
Antes que todo el Lenguaje es VBA
Soy novato en esto y necesito de su conocimiento para aclarar mi duda:
Tengo el siguiente Form:
fORM
En el tengo un ListBox el cual ya logre que se copiara en el rango deseado, así como también que los otros datos de los demás controles lo que no logro aún es que la fila donde estan los datos de los demás controles se rellenen junto con los del ListBox, para mayor referencia echen un vistazo al código
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
Private Sub CommandButton1_Click()
Sheets("GENERAL").Select
Range("A10000").Select
ActiveCell.End(xlUp).Select
ActiveCell.Offset(1, 0).Select
ActiveCell.Value = Me.TextBox1.Value
ActiveCell.Offset(0, 1).Select
ActiveCell.Value = Me.TextBox2.Value
ActiveCell.Offset(0, 1).Select
ActiveCell.Value = Me.TextBox3.Value
ActiveCell.Offset(0, 1).Select
ActiveCell.Value = Me.ComboBox1.Value
ActiveCell.Offset(0, 1).Select
ActiveCell.Value = Me.ComboBox6.Value
ActiveCell.Offset(0, 1).Select
ActiveCell.Value = Me.TextBox4.Value
ActiveCell.Offset(0, 1).Select
ActiveCell.Value = Me.ComboBox2.Value
ActiveCell.Offset(0, 1).Select
ActiveCell.Value = Me.ComboBox3.Value
ActiveCell.Offset(0, 1).Select
ActiveCell.Value = Me.TextBox5.Value
ActiveCell.Offset(0, 1).Select
ActiveCell.Value = Me.TextBox6.Value
ActiveCell.Offset(0, 1).Select
ActiveCell.Value = Me.TextBox7.Value
ActiveCell.Offset(0, 1).Select
ActiveCell.Value = Me.TextBox8.Value
ActiveCell.Offset(0, 1).Select
ActiveCell.Value = Me.TextBox10.Value
ActiveCell.Offset(0, 1).Select
ActiveCell.Value = Me.TextBox11.Value
ActiveCell.Offset(0, 1).Select
ActiveCell.Value = Me.TextBox12.Value
ActiveCell.Offset(0, 1).Select
ActiveCell.Value = Me.TextBox24.Value
ActiveCell.Offset(0, 1).Select
ActiveCell.Value = Me.TextBox23.Value
ActiveCell.Offset(0, 1).Select
ActiveCell.Value = Me.TextBox25.Value
ActiveCell.Offset(0, 1).Select
For J = 0 To ListBox1.ColumnCount
For X = 0 To ListBox1.ListCount - 1
ActiveCell.Offset(X, J).Value = ListBox1.List(X, J)
Next
Next
ActiveCell.Offset(0, -18).Select
Dim celda_inic As String
Dim celda_fin As String
celda_inic = LTrim("A" & Str(ActiveCell.Row))
celda_fin = LTrim("R" & Str((ActiveCell.Row + ListBox1.ListCount - 1)))
Dim rango_fill As Range
Set rango_fill = Range(celda_inic & ":" & celda_fin)
rango_fill.Select
Selection.FillDown
End Sub

Pero obtengo el siguiente resultado:
En la hoja:

hoja

y surge el siguiente Error:


error

yo deduzco que el problema es que no reconoce el rango que establezco luego del los For

Espero que me apoyen, creo que es una buena oportunidad para aprender... Espero sus mensajes
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de JuanC

Registrar datos de un ListBox en un rango junto con datos de otros controles

Publicado por JuanC (565 intervenciones) el 15/11/2014 23:52:33
publicá el libro completo mejor... y te aseguro que algo vas a aprender!

Saludos, desde Baires, JuanC
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Willian Ernesto

Registrar datos de un ListBox en un rango junto con datos de otros controles

Publicado por Willian Ernesto (3 intervenciones) el 16/11/2014 00:17:14
Gracias, por tu sugerencia JuanC... pero si tu me ayudas te lo agradecería mucho
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de JuanC

Registrar datos de un ListBox en un rango junto con datos de otros controles

Publicado por JuanC (565 intervenciones) el 16/11/2014 12:18:06
algunas sugerencias...

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
Private Sub CommandButton1_Click()
 
'//Declaración de variables con tipo al inicio del procedimiento...
Dim rng As Range, rango_fill As Range
Dim i&, j&, x&, nCol&
Dim celda_inic$, celda_fin$, vArray As Variant
 
'//Poner nombre a los componentes (botones, cuadros de lista y lo que sea)...
'//En lugar de:
'              Me.TextBox1 usar tbPeriodo
'              Me.ComboBox1 usar cbPrioridad
'              (la referencia Me. puede obviarse para que quede más limpio el código, además que no es necesario en este caso)
 
vArray = Array(Me.TextBox1, Me.TextBox2, Me.TextBox3, Me.ComboBox1, _
               Me.ComboBox6, Me.TextBox4, Me.ComboBox2, Me.ComboBox3, _
               Me.TextBox5, Me.TextBox6, Me.TextBox7, Me.TextBox8, _
               Me.TextBox10, Me.TextBox11, Me.TextBox12, Me.TextBox24, _
               Me.TextBox23, Me.TextBox25)  '//Declaro un array con los componentes para usar un bucle para guardar...
 
 
Set rng = Sheets("GENERAL").Range("A10000").End(xlUp)
Set rng = rng.Offset(1) '//Celda vacía donde empieza a guardar datos, no es necesario ni eficiente usar ActiveCell y Select
                        '//Basta con guardar la celda pivot en una variable y luego usar .Offset()
 
nCol = UBound(vArray)
For i = 0 To nCol       '//Usar bucle para recorrer componentes y guardar sus datos...
    rng.Offset(0, i).Value = vArray(i).Value  '//Siempre haciendo referencia a la celda pivot (rng)...
Next
 
nCol = nCol + 1
For j = 0 To ListBox1.ColumnCount      '//Cambiar nombre a ListBox1...
    For x = 0 To ListBox1.ListCount - 1  '//Usar sangría en el código, es más legible y fácil de entender, sobre todo en bucles anidados...
        rng.Offset(x, j + nCol).Value = ListBox1.List(x, j)
    Next
Next
 
'....
 
End Sub

Saludos, desde Baires, JuanC
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Willian Ernesto

Registrar datos de un ListBox en un rango junto con datos de otros controles

Publicado por Willian Ernesto (3 intervenciones) el 17/11/2014 22:33:17
Gracias por tu aporte, lo tomare muy en cuenta la próxima vez, y vaya que aprendí.... Te agradezco mucho
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Andres
Val: 26
Ha aumentado su posición en 3 puestos en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

Registrar datos de un ListBox en un rango junto con datos de otros controles

Publicado por Andres (14 intervenciones) el 02/05/2017 17:10:17
Hola. Buenos días. Estoy creando un pequeño programa para una biblioteca rural de mi país Venezuela. Aquí trabajan unas señoras bibliotecólogas de la manera rudimentaria. Pero no he podido concretar lo que les prometí por no tener experiencia como programador. De verdad necesito de su ayuda. El programa lo estoy realizando en VB para excel. El nombre de usuario es paez y la clave es paez45. Al entrar en la primera ventana arriba a la derecha hay un icono que al pulsarlo abre la interfax de programador.
1.- Necesito que en una misma ventana pueda registrar, modificar y eliminar datos.
2.- En un Userform tengo varios textbox para ingresar los datos, y el ID, la fecha y la hora actual lo carga automáticamente al iniciar el UserForm. También tengo un Listbox que carga los datos desde la hoja de excel al iniciar el UserForm. De igual forma tengo un control de imagen para tomar la foto del libro que se esta ingresando. Pues bien pero tengo los siguientes problemas:
3.- Al cargar los datos a la hoja de Excel me esta colocando unos ceros al inicio de los registros.
4.- Cuando ingreso los datos me da un error que tiene que ver con el listbox, pero no veo cual es.
5.- Al darle doble click en alguna línea del listbox debe cargar los datos de esa línea y distribuirlos en los textbox y control de imagen para que coloque la imagen de la portada del libro que estoy buscando, ya sea para corregir o eliminar algún dato. El hecho es que la fecha y la hora los coloca como decimales y no carga la imagen de cese libro.
6.- También no tengo un código para modificar datos y tampoco uno para eliminar.
7.- Por favor necesito que me ayuden a corregir este desastre, anexo el libro para que lo abran y me colaboren.
No he podido adjuntar el libro pero lo envié a tu correo.
Mil Gracias...
Andrés Álvarez
Correo: [email protected]
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar