LISTVIEW EN EXCEL

23/07/2005 - 22:52 por hector barajas | Informe spam
ESTROY TRATANDO DE USAR UN LISTVIEW EN UNA HOJA DE EXCEL PONIENDO ESTE
CODIGO
Sub agregarregistro()
Dim x As ListItem
Set x = LISTADEREGISTROS.ListItems.Add(, , txtcodigo.Text)
x.Tag = txtcodigo.Text
x.SubItems(1) = txtdescripcion.Text
x.SubItems(2) = txtprecio.Text
End Sub

Sub vaciarcampos()
txtcodigo.Text = ""
txtdescripcion.Text = ""
txtprecio.Text = ""

End Sub


Me bota el error 424 se requiere un objeto en la linea
Set x = LISTADEREGISTROS.ListItems.Add(, , txtcodigo.Text)

El control listview tiene en la propiedad name el nombre "listaderegistros"
y no me reconoce dicho control en el codigo. Alguien tiene alguna sujerencia
 

Leer las respuestas

#1 Héctor Miguel
24/07/2005 - 06:38 | Informe spam
hola, 'tocayo' !

... UN LISTVIEW EN UNA HOJA DE EXCEL... ESTE CODIGO
Sub agregarregistro()
Dim x As ListItem
Set x = LISTADEREGISTROS.ListItems.Add(, , txtcodigo.Text)
x.Tag = txtcodigo.Text
x.SubItems(1) = txtdescripcion.Text
x.SubItems(2) = txtprecio.Text
End Sub [...]
Me bota el error 424 se requiere un objeto en la linea
Set x = LISTADEREGISTROS.ListItems.Add(, , txtcodigo.Text)
El control listview tiene en la propiedad name el nombre "listaderegistros" y no me reconoce dicho control en el codigo



-> 'asumiendo' que los controles [listview y textboxes] estan en un userform...
1) el error 424 'significa' que el codigo NO 'sabe' en que 'objeto' esta el control [listview]
2) igual sucederia con 'el resto' de las referencias a los controles textbox [por lo cual]... 'asumo' que...
3) el procedimiento ->Sub agregarregistro()<- esta en un modulo de codigo 'distinto' al objeto con los controles -?-
-> si lo anterior es acertado... sera necesario 'calificar' ->cada control<- anteponiendo el nombre del objeto que los contiene [p.e.]
Set x = UserForm1.LISTADEREGISTROS.ListItems.Add(, , UserForm1.txtcodigo.Text) [etc. etc. etc.]
o... usar un bloque 'With' con el nombre del formulario y 'calificar' los objetos SOLO por un punto previo [p.e.]
With UserForm1
Set x = .LISTADEREGISTROS.ListItems.Add(, , .txtcodigo.Text) [etc. etc. etc.]
End With
-> otro 'punto de error' que [probablemente] te vas a encontrar es que...
para poder agregar 'SubItems' a controles [como el listview] se necesita PRIMERO agregar 'encabezados de columna'
-> [finalmente] podrias evitar/prevenir/corregir/... -posibles- 'errores de duplicidad' [p.e. dos ejecuciones seguidas del 'agregarregistros']
si en lugar de utilizar procedimientos 'separados' para agregar registros ->y posteriormente otro<- para 'borrar' los textboxes...
'vacias' los textboxes inmediatamente despues de agregar [cada uno de] los registros ;)

si sigo 'estando correcto' [con que los controles son de un formulario de usuario]...
has una prueba con el ejemplo al final de este mensaje [con un control commandbutton1 para 'agregar' cada regisgtro] ;)
si cualquier duda [o informacion adicional]... comentas?
saludos,
hector.
en el modulo de codigo del formulario ==Private Sub UserForm_Initialize()
With ListaDeRegistros
.View = lvwReport
.ColumnHeaders.Add Text:="Principal"
.ColumnHeaders.Add Text:="Sub 1"
.ColumnHeaders.Add Text:="Sub 2"
' la siguiente propiedad es False por omision = los titulos/encabezados SE MUESTRAN '
.HideColumnHeaders = True
End With
End Sub
Private Sub CommandButton1_Click()
With ListaDeRegistros.ListItems.Add(, , txtCodigo)
.Tag = txtCodigo
.SubItems(1) = txtDescripcion
.SubItems(2) = txtPrecio
End With
txtCodigo = ""
txtDescripcion = ""
txtPrecio = ""
End Sub

Preguntas similares