Pasar contenido del listbox a la hoja

[Para Dante Amor

El código que me has enviado funciona bien y es lo que necesitaba. Ahora me gustaría saber si se puede corregir para que cuando pase los datos a la hoja, las dos últimas columnas (E y F) lo haga como valores y no como texto. Es una tontería, pero si se puede hacer te lo agradezco.

1 Respuesta

Respuesta
1

En mis pruebas los pasa como valores.

¿Tienes algún formato en el listbox?

Puedes poner una imagen de tu listbox.

Prueba lo siguiente para pasar dato por dato del listbox a la hoja:

Private Sub CommandButton1_Click()
  Dim sh As Worksheet
  Dim lr As Long, i As Long, j As Long
  '
  Set sh = Sheets("Hoja1")
  lr = sh.Range("A" & Rows.Count).End(3).Row + 1
  With ListBox1
    For i = 0 To .ListCount - 1
      For j = 0 To .ColumnCount - 1
        If j < 4 Then
          sh.Cells(lr, j + 1).Value = .List(i, j)
        Else
          If .List(i, j) <> "" Then
            sh.Cells(lr, j + 1).Value = CDbl(.List(i, j))
          End If
        End If
      Next
      lr = lr + 1
    Next
  End With
End Sub

Me da el siguiente error. Pero como dije al principio, es una tontería que se puede ignorar. Gracias de todos modos.

Pon la imagen de tu listbox, para ver qué tienes.

Ok. Este es el código para cargar el listbox

Private Sub CommandButton1_Click()
 Dim t As Double
 Dim x As Long
 Dim r As Variant
 ListBox1.Clear
 With ActiveSheet
    r = .Range("A2").CurrentRegion
    With ListBox1
      .List = r
      For x = 1 To .ListCount - 1
        If .List(x) <> "" Then
          .List(x, 4) = Format(.List(x, 4), "#,##0.00")
          .List(x, 5) = Format(.List(x, 5), "#,##0.00")
          t = t + .List(x, 5)
        End If
      Next
    End With
 End With
End Sub

Aaaaahhhh lo que pasa es que el encabezado no es un valor numérico.

¿Quieres pasar también el encabezado?

Entonces así:

Private Sub CommandButton1_Click()
  Dim sh As Worksheet
  Dim lr As Long, i As Long, j As Long
  '
  Set sh = Sheets("Hoja1")
  lr = sh.Range("A" & Rows.Count).End(3).Row + 1
  With ListBox1
    For i = 0 To .ListCount - 1
      For j = 0 To .ColumnCount - 1
        If j < 4 Then
          sh.Cells(lr, j + 1).Value = .List(i, j)
        Else
          If .List(i, j) <> "" Then
            sh.Cells(lr, j + 1).Value = .List(i, j)
          End If
        End If
      Next
      lr = lr + 1
    Next
  End With
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas