Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel VBA-不按顺序复制多个列_Vba_Excel_Range - Fatal编程技术网

Excel VBA-不按顺序复制多个列

Excel VBA-不按顺序复制多个列,vba,excel,range,Vba,Excel,Range,我想从一张纸复制到另一张纸上。宏应通过名称识别工作表: Dim Wb1 As Workbook, wb2 As Workbook, wB As Workbook Dim rngToCopy As Range Dim NewEnd As Long Dim NewEnd2 As Long Application.ScreenUpdating = False Application.Calculation = xlCalculationManual Sheets("CALC").Select W

我想从一张纸复制到另一张纸上。宏应通过名称识别工作表:

Dim Wb1 As Workbook, wb2 As Workbook, wB As Workbook
Dim rngToCopy As Range
Dim NewEnd As Long
Dim NewEnd2 As Long

Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual

Sheets("CALC").Select

Worksheets("CALC").Range("B5:J25000").ClearContents

For Each wB In Application.Workbooks
    If Left(wB.Name, 4) = "15B2" Then
        Set Wb1 = wB
        Exit For
    End If
Next

If Not Wb1 Is Nothing Then
    Set wb2 = ThisWorkbook

    With Wb1.Sheets("Data")
        Set rngToCopy = .Range("F7, H7, N7", .Cells(.rows.Count, "F").End(xlUp))
    End With
    wb2.Sheets("CALC").Range("B5:D5").Resize(rngToCopy.rows.Count).Value = rngToCopy.Value
End If
这一行给了我一个错误:

 Set rngToCopy = .Range("F7, H7, N7", .Cells(.Rows.Count, "F").End(xlUp))
在这种情况下,如何复制多个列?

您可以使用Union将多个列合并到一个范围


例如,将一列“F”中的lastrow获取到一个变量中,并根据以下内容为您的范围生成地址字符串:.RangeF7:F&lastrow&,H7:H&lstrow。。。。嗨,Shai,现在宏将F列复制了3次:O。@Bluesector尝试下面的更新代码,使用我的testsWorked!非常感谢。
Dim LastRow As Long

LastRow = .Cells(.Rows.Count, "F").End(xlUp).Row ' get last row with data from column "F"

Set rngToCopy = Application.Union(.Range("F7:F" & LastRow), .Range("H7:H" & LastRow), .Range("N7:N" & LastRow))

rngToCopy.Copy
wb2.Sheets("CALC").Range("B5").PasteSpecial xlPasteValues