[英]how to extract multiple column data in Excel VBA
我正在做一個宏,它從另一個文件的某些列中提取數據。 我遇到了一條錯誤消息
類型不匹配
在行Set row = Columns("O,Q,W")
我知道這是不正確的,我也嘗試過使用Union,但這也不起作用。
Sub ImportDatafromotherworksheet()
Dim wkbCrntWorkBook As Workbook
Dim wkbSourceBook As Workbook
Dim rngSourceRange As Range
Dim rngDestination As Range
Dim row As Range
Dim row1 As Integer
Dim hello As Range
Dim hello1 As Range
Dim lastRow As Long, i As Long
Dim CopyRange As Range
Set wkbCrntWorkBook = ActiveWorkbook
With Application.FileDialog(msoFileDialogOpen)
.Filters.Clear
.Filters.Add "Excel 2007-13", "*.xlsx; *.xlsm; *.xlsa"
.AllowMultiSelect = False
.Show
If .SelectedItems.Count > 0 Then
Workbooks.Open .SelectedItems(1)
Set wkbSourceBook = Workbooks.Open(.SelectedItems(1))
With wkbSourceBook.Worksheets(1)
lastRow = .Range("A" & .Rows.Count).End(xlUp).row
For i = 4 To lastRow
If Len(Trim(.Range("A" & i).Value)) <> 0 Then
If CopyRange Is Nothing Then
Set CopyRange = .Rows(i)
Else
Set CopyRange = Union(CopyRange, .Rows(i))
Set row = Columns("O,Q,W")
End If
End If
Next
If Not CopyRange Is Nothing Then
wkbCrntWorkBook.Activate
Set rngDestination = Application.InputBox(Prompt:="Select destination cell", Title:="Select Destination", Default:="A1", Type:=8)
row.Copy rngDestination
rngDestination.CurrentRegion.EntirdoeColumn.AutoFit
wkbSourceBook.Close False
'~~> Change Sheet2 to relevant sheet name
End If
End With
End If
End With
End Sub
用這個:
Set MyRange = Union(Columns(1), Columns(4))
一次可以捕獲多列
您不能像這樣使用Columns()
。 還要避免將Row
用作變量。 這是保留字。
更改為
Set rw= .Range("O:O,Q:Q,W:W")
或喜歡@KKowalczyk的建議
Set rw = Union(.Columns(15), .Columns(17), .Columns(23))
忘了提及,請同時限定您的單元格對象。 注意到前面的點了嗎? 如果您不這樣做,那么他們將解決Activesheet
,這可能是也可能不是您實際認為的工作表。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.