Pasar datos de Listbox a celdas de excel

Tengo una serie de listbox que pasan a celdas de excel pero hay algunos que tienen que pasar en blanco en determinados casos, ¿cómo puedo poner "N/A" cuando un Listbox esta en blanco? ¿Y cómo puedo ponder efemplo numero factura a cada celda cuando pasann los Listbox?

1 respuesta

Respuesta
1

De esta forma:

Private Sub CommandButton1_Click()
'Pasa los valores de un listbox a la última celda
'Por.Dam
    For i = 0 To ListBox1.ListCount - 1
        If ListBox1.List(i, 0) = "" Then
            Range("B" & Range("B" & Rows.Count).End(xlUp).Row + 1) = "N/A"
        Else
            Range("B" & Range("B" & Rows.Count).End(xlUp).Row + 1) = "Número factuta " & ListBox1.List(i, 0)
        End If
    Next
End Sub

Saludos.Dam

me da un error en esta linea :

Range("B" & Range("B" & Rows.Count).End(xlUp).Row + 1) = "Número factuta " & ListBox1.List(i, 0)

y lo que quiero es que ponga por ejemplo la fecha o numero de factura pero en cada una de listbox que pase a excel

¿Pero qué error te envía?

¿Y quieres que aparezca el texto "Número de factura" o un número de factura que debe extraer de alguna parte?

¿Estás ocupando el mismo código que te envié o le hiciste algún cambio? La duda es porque a mí, me funciona bien.

Disculpa, el código no da ningún error era que le tenia que cambiar el nombre al listbox1.

Pero entonces como me hago para que se genere un numero aumentándole 1 (este comenzando de cero), y (otro aumentándole 5 comenzando desde un numero x), la fecha y la hora.

Es para ir creando una base de datos que luego utilizare para imprimir.

Pero quieres que se genere ese número en la misma celda donde estás poniendo el valor del listbox o quieres que ese número se ponga en otra celda a la par de donde estás poniendo el valor del listbox?

Para el caso, generar un número en otra celda en la misma fila donde estás poniendo el valor del listbox:

Private Sub CommandButton1_Click()
'Pasa los valores de un listbox a la última celda
'Por.Dam
For i = 0 To ListBox1.ListCount - 1
If ListBox1.List(i, 0) = "" Then
Range("B" & Range("B" & Rows.Count).End(xlUp).Row + 1) = "N/A"
Else
ufila = Range("B" & Rows.Count).End(xlUp).Row + 1
Range("B" & ufila) = ListBox1.List(i, 0)
Range("C" & ufila) = "Número factura " & i + 1
End If
Next
End Sub

Para la otra pregunta, dices: "otro aumentándole 5 comenzando desde un numero x", a qué te refieres? quieres aumentar 5 filas ó 5 columnas ó solamente un contador que aumente de 5 en 5?

Puedes ser:

x= 1

otronum = x + 5

La fecha y la hora la pones de la siguiente forma

Range("D1") = now

En la macro podría ser así

Range("D" & ufila) = Now

Saludos. Dam

El numero de factura es para que se genere en otra celda la par.

Es un contador que aumente de 5 en 5.

y que estos datos que se generen por cada linea de la listbox que tenga datos pero que si por ejemplo tengo 5 registros en la listbox estos 5 registros tengan el mismo numero de factura...

Gracias

Esta sería la macro

Private Sub CommandButton1_Click()
'Pasa los valores de un listbox a la última celda
'Por.Dam
'obtiene el último número de factura y le aumenta 1
numfac = Application.Max(Columns("C")) + 1
For i = 0 To ListBox1.ListCount - 1
If ListBox1.List(i, 0) = "" Then
Range("B" & Range("B" & Rows.Count).End(xlUp).Row + 1) = "N/A"
Else
ufila = Range("B" & Rows.Count).End(xlUp).Row + 1
Range("B" & ufila) = ListBox1.List(i, 0)
Range("C" & ufila) = numfac
Range("D" & ufila) = Now
End If
Next
End Sub

La macro hace lo siguiente, en la columna B pone el valor del listbox, en la columna C pone el número de factura, en la columna D pone la fecha y la hora

Con esta línea obtienes el último número de la columna C y le incrementa 1.

numfac = Application.Max(Columns("C")) + 1

Por otra parte el contador de 5 en 5 podría ser así

x= 0

contador = x

for i = 1 to 50

contador = contador + 5

next

Significa que el contador se incrementará de 5 en 5, 50 veces.

Saludos. Dam

Esta bien pero fecha y el numero de factura solo lo pone en la primera fila y debería ser en todas las filas que pase del listbox.

numfac = Application.Max(Columns("J")) + 1
For i = 0 To No2.ListCount - 1
If No2.List(i, 0) = "" Then
Range("c" & Range("c" & Rows.Count).End(xlUp).Row + 1) = "N/A"
Else
ufila = Range("c" & Rows.Count).End(xlUp).Row + 1
Range("c" & ufila) = No2.List(i, 0)
Range("J" & ufila) = numfac
Range("G" & ufila) = Date
End If

No2 = Listbox1

Ya probé el código que me enviaste y si me pone la fecha y el número en cada fila.

¿Tienes más de un dato en la columna A?

Tienes la instrucción Next, ¿ya qué en el código no la pusiste?

O si quieres envíame tu archivo y lo reviso y adapto la macro,

Hola, ya te envíe el archivo y gracias por tu ayuda.

Ya te contesté el correo.

Saludos. Dam

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas