Estoy intentando copiar todos los datos en una columna específica y pegarlos en otra hoja de mi libro de trabajo a través de VBA, ya que esto se repetirá en varias columnas. Por alguna razón, no todos los datos se transfieren, ya que hay algunos datos en blanco. Mi código en VBA es el siguiente.
Soy nuevo en VBA, agradezco la ayuda de todos, ¡gracias!
wsRawT y wsDetI son mis variables definidas para la hoja de trabajo especificada.
wsRawT.Select
range("AU1").Select
ActiveCell.Offset(1, 0).range("A1").Select
range(Selection, Selection.End(xlDown)).Select
Selection.copy
wsDetI.Select
range("A1").Select
ActiveCell.Offset(1, 0).range("A1").Select
ActiveSheet.Paste
Respuesta1
Sub test()
Dim wsRawT As Worksheet, wsDetI As Worksheet
Set wsRawT = ThisWorkbook.Sheets("Sheet1")
Set wsDetI = ThisWorkbook.Sheets("Sheet2")
wsRawT.Range(wsRawT.Cells(2, 47), wsRawT.Cells(wsRawT.UsedRange.Rows.Count, 47)).Copy _
Destination:=wsDetI.Cells(2, 1)
End Sub
PD.Range("AU2").Column = 47
Respuesta2
Se puede utilizar un formulario de usuario para copiar columnas. El formulario de usuario contiene dos cuadros de lista. Los encabezados de columna de la hoja 1 se enumeran en el primer cuadro de lista. Entre los cuadros de lista, el elemento se mueve del cuadro de lista1 al cuadro de lista2 haciendo clic en el botón. . Las columnas seleccionadas del cuadro de lista2 se copian a otra hoja (hoja2) con el método de filtro avanzado.
Private Sub CommandButton1_Click()
Dim FirstCell, LastCell As Range
Dim basliklar As Integer
Dim baslangic_satiri As Long
Sheets("report").Select
If ListBox2.ListCount = 0 Then
MsgBox "You don't choose filter field "
Exit Sub
End If
ProgressDlg.Show 'Progress Bar
Set LastCell = Sheets("database").Cells(Sheets("database").Cells.Find(What:="*", SearchOrder:=xlRows, _
SearchDirection:=xlPrevious, LookIn:=xlValues).Row, _
Sheets("database").Cells.Find(What:="*", SearchOrder:=xlByColumns, _
SearchDirection:=xlPrevious, LookIn:=xlValues).Column)
Set FirstCell = Sheets("database").Cells(Sheets("database").Cells.Find(What:="*", After:=LastCell, SearchOrder:=xlRows, _
SearchDirection:=xlNext, LookIn:=xlValues).Row, _
Sheets("database").Cells.Find(What:="*", After:=LastCell, SearchOrder:=xlByColumns, _
SearchDirection:=xlNext, LookIn:=xlValues).Column)
For basliklar = 0 To ListBox2.ListCount - 1
baslangic_satiri = 2
Sheets("report").Cells(baslangic_satiri - 1, basliklar + 1) = ListBox2.List(basliklar, 0)
Sheets("database").Range(FirstCell, LastCell).AdvancedFilter _
Action:=xlFilterCopy, CriteriaRange:=Sheets("database").Range(FirstCell, LastCell), _
CopyToRange:=Sheets("report").Cells(baslangic_satiri - 1, basliklar + 1), _
Unique:=False
Next
Sheets("report").Columns.EntireColumn.AutoFit
CommandButton6.Enabled = True
End Sub