有人可以帮助我理解为什么会有效:
Sub CommandButton1_Click()
Sheets("Inventory Data").Range("A1:G1").Copy
Sheets("Desig From Inv").Range("A1").PasteSpecial xlPasteValues
End Sub
但是,这不是吗?
Sub CommandButton1_Click()
Sheets("Inventory Data").Range(Cells(1, 1), Cells(1, 7)).Copy
Sheets("Desig From Inv").Range("A1").PasteSpecial xlPasteValues
End Sub
我真的希望列号最后成为一个变量。像这样:
Sub CommandButton1_Click()
Sheets("Inventory Data").Range(Cells(1, 1), Cells(1, i)).Copy
Sheets("Desig From Inv").Range("A1").PasteSpecial xlPasteValues
End Sub
我尝试了许多形式的获取"细胞"进入"范围"。
谢谢!
答案 0 :(得分:7)
本声明:
Sheets("Inventory Data").Range(Cells(1, 1), Cells(1, i)).Copy
真的这样做了:
ActiveWorkbook.Sheets("Inventory Data") _
.Range(ActiveSheet.Cells(1, 1), ActiveSheet.Cells(1, i)) _
.Copy
除非ActiveWorkbook.Sheets("Inventory Data")
是ActiveSheet
,否则该声明会爆炸,因为您正在另一张上使用范围来获取ActiveWorkbook.Sheets("Inventory Data")
的范围{1}}。
对所有事情进行鉴定!
... With
块使这更容易:
With Worksheets("Inventory Data")
.Range(.Cells(1, 1), .Cells(1, i)).Copy
End With
我允许自己插上一点点;我正在开发一个(免费和开源)VBE加载项,可以轻松找到这些错误 - 粘贴代码here(它可以更快地运行很多实际的VBE虽然看到了你的代码中可以找到的所有东西 - 它还不完美(但是),但它比没有任何东西更好:
答案 1 :(得分:1)
其他一些方式:
Sheets("Inventory Data").Cells(1, 1).Resize(,i).Copy
Sheets("Desig From Inv").Range("A1").PasteSpecial xlPasteValues
或
Sheets("Inventory Data").Range("A1").Resize(,i).Copy
Sheets("Desig From Inv").Range("A1").PasteSpecial xlPasteValues
或
Sheets("Desig From Inv").Range("A1").Resize(,i).Value = Sheets("Inventory Data").Range("A1").Resize(,i).Value
或
With Sheets("Inventory Data").Range("A1").Resize(,i)
Sheets("Desig From Inv").Range("A1").Resize(,i).Value = .Value
End With