需要帮助了解不合格的范围

1 excel vba excel-vba

有人可以帮助我理解为什么这有效:

Sub CommandButton1_Click()
    Sheets("Inventory Data").Range("A1:G1").Copy
    Sheets("Desig From Inv").Range("A1").PasteSpecial xlPasteValues
End Sub
Run Code Online (Sandbox Code Playgroud)

但是,这不是吗?

Sub CommandButton1_Click()
    Sheets("Inventory Data").Range(Cells(1, 1), Cells(1, 7)).Copy
    Sheets("Desig From Inv").Range("A1").PasteSpecial xlPasteValues
End Sub
Run Code Online (Sandbox Code Playgroud)

我真的希望列号最终成为一个变量.像这样:

Sub CommandButton1_Click()
    Sheets("Inventory Data").Range(Cells(1, 1), Cells(1, i)).Copy
    Sheets("Desig From Inv").Range("A1").PasteSpecial xlPasteValues
End Sub
Run Code Online (Sandbox Code Playgroud)

我尝试了很多将"细胞"放入"范围"的形式.

谢谢!

Mat*_*don 7

这个说法:

Sheets("Inventory Data").Range(Cells(1, 1), Cells(1, i)).Copy
Run Code Online (Sandbox Code Playgroud)

真的这样做:

ActiveWorkbook.Sheets("Inventory Data") _
              .Range(ActiveSheet.Cells(1, 1), ActiveSheet.Cells(1, i)) _
              .Copy
Run Code Online (Sandbox Code Playgroud)

除非ActiveWorkbook.Sheets("Inventory Data")ActiveSheet,否则声明会爆炸,因为你在另一张纸上使用一个范围来获得一个范围ActiveWorkbook.Sheets("Inventory Data").

合格所有的东西!

... With块使这更容易:

With Worksheets("Inventory Data")
    .Range(.Cells(1, 1), .Cells(1, i)).Copy
End With
Run Code Online (Sandbox Code Playgroud)

我会允许自己插上一点点; 我正在开发一个(免费和开源)VBE加载项,可以很容易地找到这些错误 - 将代码粘贴到本页底部(虽然它在实际的VBE中运行更快)看到一切Rubberduck可以在你的代码中找到 - 它还不完美(但是),但它总比没有好:

Rubberduck检查结果

  • 好!免费的百科全书 (3认同)