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 juanc2942@gmail.com (431 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 juanc2942@gmail.com (431 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