열의 모든 데이터를 복사할 수 없습니다 - Excel VBA

열의 모든 데이터를 복사할 수 없습니다 - Excel VBA

특정 열의 모든 데이터를 복사하여 VBA를 통해 내 통합 문서의 다른 시트에 붙여넣으려고 합니다. 이는 여러 열에 걸쳐 반복되기 때문입니다. 어떤 이유로 일부 데이터가 비어 있기 때문에 모든 데이터가 전송되지는 않습니다. VBA의 내 코드는 다음과 같습니다.

VBA를 처음 접했습니다. 모든 사람의 도움에 감사드립니다. 감사합니다!

wsRawT 및 wsDetI는 지정된 워크시트에 대해 정의된 변수입니다.

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

답변1

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

추신.Range("AU2").Column = 47

답변2

열 복사에는 사용자 양식을 사용할 수 있습니다. 사용자 양식에는 두 개의 목록 상자가 포함되어 있습니다. sheet1의 열 머리글은 첫 번째 목록 상자에 나열됩니다. 목록 상자 사이에서 버튼을 클릭하면 항목이 목록 상자 1에서 목록 상자 2로 이동합니다. . Listbox2에서 선택한 열은 고급 필터 방법을 사용하여 다른 시트(sheet2)로 복사됩니다.

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

여기에 이미지 설명을 입력하세요

예시 파일

관련 정보