Que esta mal con este codigo

02/12/2006 - 19:20 por zz | Informe spam
Despues de varios dolores de cabeza, me rindo y pido ayuda

tengo este codigo que me carga una lista guardada en una hoja de excel



Private Sub load_certifications()
Dim stritem, strdesc As String
Dim i As Integer
i = 0
Sheets("Entrenamientos").Activate
ActiveSheet.Range("a2").Activate
Do Until ActiveCell.Value = ""
With ActiveCell
stritem = CStr(.Offset(, 1).Value)
strdesc = CStr(.Offset(, 2).Value)
End With
Cmbtrainings.AddItem CStr(stritem)
Cmbtrainings.ColumnCount = 2
Cmbtrainings.ColumnHeads = True
Cmbtrainings.Column(2) = strdesc
i = i + 1
ActiveCell.Offset(1, 0).Activate
Loop
End Sub

pero al ejecutarlo me marca el error "381"

could not set the column property, Invalid property array index
la verdad no le encuentro donde esta el error




zz [MX]
cuasi-musico,semi-poeta y loco
 

Leer las respuestas

#1 Héctor Miguel
03/12/2006 - 00:45 | Informe spam
hola, ???

1) al codigo que expones -solo- le hace falta la aplicacion de tu variable 'i' que no le estas dando uso :))
2) [tambien] no es necesario estar 'machacando' con las propiedades: ColumnCount y ColumnHeads -> dentro del bucle Do While...
3) [ademas] la propiedad ColumnHeads no va a mostrar los encabezamientos de tus datos en la hoja de calculo
[a menos que en lugar de llenar el combo 'item por item' usaras el rango 'en si' [p.e. 'B2:C16'] dejando 'B1:C1' para ColumnHeads]
4) [finalmente] los elementos/campos/filas/columnas/... de controles activex se 'cuentan' desde 0 [cero] hasta n_elementos MENOS 1
o sea, si tu combo es de 2 columnas, la primera es CERO y la segunda es UNO ;)
[a menos que en ese modulo de codigo uses la instruccion Option Base 1 -> en el area de declaraciones] ;)
5) prueba con las siguientes -ligeras- modificaciones [aunque es posible que pudiera agilizarse por otros mecanismos] -?-

si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.

Private Sub load_certifications()
Dim stritem As String, strdesc As String, i As Integer
Cmbtrainings.ColumnCount = 2
Cmbtrainings.ColumnHeads = True
Sheets("Entrenamientos").Activate
ActiveSheet.Range("a2").Activate
Do Until ActiveCell.Value = ""
With ActiveCell
stritem = CStr(.Offset(, 1).Value)
strdesc = CStr(.Offset(, 2).Value)
End With
Cmbtrainings.AddItem
Cmbtrainings.List(i, 0) = stritem
Cmbtrainings.List(i, 1) = strdesc
i = i + 1
ActiveCell.Offset(1, 0).Activate
Loop
End Sub

__ la consulta original __
Despues de varios dolores de cabeza, me rindo y pido ayuda
tengo este codigo que me carga una lista guardada en una hoja de excel
Private Sub load_certifications()
Dim stritem, strdesc As String
Dim i As Integer
i = 0
Sheets("Entrenamientos").Activate
ActiveSheet.Range("a2").Activate
Do Until ActiveCell.Value = ""
With ActiveCell
stritem = CStr(.Offset(, 1).Value)
strdesc = CStr(.Offset(, 2).Value)
End With
Cmbtrainings.AddItem CStr(stritem)
Cmbtrainings.ColumnCount = 2
Cmbtrainings.ColumnHeads = True
Cmbtrainings.Column(2) = strdesc
i = i + 1
ActiveCell.Offset(1, 0).Activate
Loop
End Sub
pero al ejecutarlo me marca el error "381"
could not set the column property, Invalid property array index
la verdad no le encuentro donde esta el error...

Preguntas similares