我想复制列 D:I,K,O,AG,AH,AA 但它当前复制 D:AH

I want to copy column D:I,K,O,AG,AH,AA but it currently copies D:AH

Sub AutofillData()

    Dim wkbkSource As Workbook

    Dim strPath As String
    Dim myRange As Range
    Dim i As Integer
    Dim c As Range
    Dim wkbkTarget As Workbook

    Application.ScreenUpdating = False

    strPath = "\temp\"

    Set wkbkA = ThisWorkbook
    Set wkbkB = Workbooks.Open(strPath & Range("E8").Value)

        Set myRange = wkbkA.Sheets("Stand-up Request").Range("B13:B25")

        offs = 0
        For Each c In myRange

            i = c.Value

            wkbkB.Worksheets("Main Data").Range("D" & i & ":AH" & i).Copy

            wkbkA.Sheets("Stand-up Request").Range("C13").Offset(offs, 0).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, _
            SkipBlanks:=True, Transpose:=False

            Application.CutCopyMode = False
            offs = offs + 1

       On Error Resume Next

        Next

     wkbkB.Close savechanges:=False
    Application.ScreenUpdating = True

End Sub

如果您不介意列顺序,您应该只更改一行:

wkbkB.Worksheets("Main Data").Range("D" & i & ":I" & i & ",K" & i & ",O" & i & ",AG" & i & ",AH" & i & ",AA" & i).Copy

请注意,这样 AA 会粘贴在 AG 之前。如果您介意列顺序,您应该拆分您的范围并将它们 copy/paste 分开:

wkbkB.Worksheets("Main Data").Range("D" & i & ":I" & i & ",K" & i & ",O" & i & ",AG" & i & ",AH" & i).Copy

wkbkA.Sheets("Stand-up Request").Range("C13").Offset(offs, 0).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, _
        SkipBlanks:=True, Transpose:=False

wkbkB.Worksheets("Main Data").Range("AA" & i).Copy

wkbkA.Sheets("Stand-up Request").Range("C13").Offset(offs, 10).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, _
        SkipBlanks:=True, Transpose:=False

请注意,这是一个静态代码,如果您更改要复制的列,您还应该相应地设置第二次粘贴的偏移量的列值。如果你想要一个动态代码,你应该创建另一个你将复制的范围对象,你可以获得该范围的尺寸。

此外,最好完全避免使用 copy/paste,使用如下代码:

wkbkA.Sheets("Stand-up Request").Range("C13").Offset(offs, 0).Resize(1, 6).Value = wkbkB.Worksheets("Main Data").Range("D" & i & ":I" & i).Value

但是每个子范围都需要做,所以比较复杂。

另请注意,在没有 On Error Resume Next 的情况下,您的代码在 ActiveSheet 上对我来说工作正常,因此您最好再次检查您的代码:)