exc*_*l34 12 excel vba excel-vba
我正在尝试编写一个宏,将第1列的内容从第1页的第1列复制到第2列.这就是模块的外观,但是,当我运行它时,我得到了
运行时错误9,下标超出范围.
Sub OneCell()
Sheets("Sheet1").Select
'select column 1 A1'
Range("A1:A3").Select
Selection.Copy
Range("B1:B3").Select
ActiveSheet.Paste
Sheets("Sheet2").Select
Application.CutCopyMode = False
End Sub
Run Code Online (Sandbox Code Playgroud)
Dav*_*vid 27
以下在Excel 2007中对我来说很好.它很简单,并执行完整副本(保留所有格式等):
Sheets("Sheet1").Columns(1).Copy Destination:=Sheets("Sheet2").Columns(2)
Run Code Online (Sandbox Code Playgroud)
"Columns"返回一个Range对象,因此这是使用"Range.Copy"方法."Destination"是此方法的一个选项 - 如果未提供,则默认为复制到粘贴缓冲区.但是当提供时,它是一种简单的复制方式.
与在Excel中手动复制项目时一样,目标的大小和几何形状必须支持要复制的范围.
gui*_*wer 11
选择通常是不必要的.试试这个
Sub OneCell()
Sheets("Sheet2").range("B1:B3").value = Sheets("Sheet1").range("A1:A3").value
End Sub
Run Code Online (Sandbox Code Playgroud)
我不确定为什么你的下标会超出范围,除非你的工作表实际上没有被调用Sheet1
或Sheet2
。当我将其重命名Sheet2
为时Sheet_2
,我遇到了同样的问题。
此外,您的一些代码似乎是错误的方式(您在选择第二张纸之前粘贴)。这段代码对我来说效果很好。
Sub OneCell()
Sheets("Sheet1").Select
Range("A1:A3").Copy
Sheets("Sheet2").Select
Range("b1:b3").Select
ActiveSheet.Paste
End Sub
Run Code Online (Sandbox Code Playgroud)
如果您不想知道工作表的名称,可以使用整数索引,如下所示:
Sub OneCell()
Sheets(1).Select
Range("A1:A3").Copy
Sheets(2).Select
Range("b1:b3").Select
ActiveSheet.Paste
End Sub
Run Code Online (Sandbox Code Playgroud)