Error al insertar encabezado en listbox excel

He tratado de colocar encabezado a un listbox, y efectivamente esta solucionado solo que en "parte", si; dado a que al ir insertando filas de datos lo hace dejando linea en blanco por en medio, es decir interlineado. Y en otras pruebas al cargar el formulario la primer fila de datos no la carga solo en encabezado. ¿Me podrían ayudar por favor? A continuación pego el código:

Dim X As Byte
With Me.DetalleIngreso
.AddItem
    'Cargo los datos
    X = .ListCount
    .AddItem
    .List(X, 0) = Me.TxtCtaIng.Text
    .List(X, 1) = Me.TxtDescIng.Text
    .List(X, 2) = Me.TxtDonIng.Text
    .List(X, 3) = Me.TxtNombDonIng.Text
    .List(X, 4) = Format(Me.TxtMontoIng.Value, "0.00")
    .List(X, 5) = Me.TxtBcoIng.Text
    .List(X, 6) = Me.TxtDepIng.Text
    .List(X, 7) = Me.TxtConcIng.Text
    .ColumnCount = 8
    .ColumnWidths = "45;150;30;120;70;40;50;100"
    'Adiciono un Item al ListBox reservado para cabecera y los respectivos títulos de columna
.List(0, 0) = "CUENTA"
.List(0, 1) = "DESCRIPCIÓN"
.List(0, 2) = "COD"
.List(0, 3) = "NOMBRE DONADOR"
.List(0, 4) = "MONTO"
.List(0, 5) = "BC/EF"
.List(0, 6) = "DEPÓSITO"
.List(0, 7) = "CONCEPTO"

1 respuesta

Respuesta
2

Esto se debe a que siempre estás insertando una fila para los títulos, cuando éstos deben colocarse una sola vez y si es posible desde las propiedades del control para no tener que agregar líneas al código.

Si vas a declarar las propiedades dentro del código, se hace una sola vez y generalmente en el evento Initialize del userform.

En mi ejemplo coloqué el pase de datos en un botón de comando... en tu caso ya sabrás dónde estaban esas instrucciones.

Private Sub UserForm_Initialize()
'se establecen las propiedades del Listbox si no se lo hizo desde el cuadro de propiedades
With ListBox1
    .ColumnCount = 3    'ajustar nro de col, ancho y textos
    .ColumnWidths = "45;150;30"
    'Adiciono un Item al ListBox reservado para cabecera y los respectivos títulos de columna
    X = .ListCount
    .AddItem
    .List(0, 0) = "CUENTA"
    .List(0, 1) = "DESCRIPCIÓN"
    .List(0, 2) = "COD"
End With
End Sub
'Instrucciones para el pase de datos
Private Sub CommandButton2_Click()
Dim X As Byte
With ListBox1
    'Cargo los datos
    X = .ListCount
    .AddItem
    .List(X, 0) = ComboBox1.Text
    .List(X, 1) = ComboBox2.Text
    .List(X, 2) = TextBox1.Text
'continuar con el resto
End With
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas