![](/img/trans.png)
[英]How to copy the columns names from one sheet to another sheet using Excel VBA
[英]How can I copy columns from one sheet to another with VBA in Excel?
我正在尝试编写一个宏,将第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
以下在Excel 2007中对我来说很好。它很简单,并执行完整副本(保留所有格式等):
Sheets("Sheet1").Columns(1).Copy Destination:=Sheets("Sheet2").Columns(2)
“Columns”返回一个Range对象,因此这是使用“Range.Copy”方法。 “Destination”是此方法的一个选项 - 如果未提供,则默认为复制到粘贴缓冲区。 但是当提供时,它是一种简单的复制方式。
与在Excel中手动复制项目时一样,目标的大小和几何形状必须支持要复制的范围。
选择通常是不必要的。 试试这个
Sub OneCell()
Sheets("Sheet2").range("B1:B3").value = Sheets("Sheet1").range("A1:A3").value
End Sub
除非你的纸张实际上没有被称为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
如果您不想知道调用哪些工作表,可以使用整数索引,如下所示:
Sub OneCell()
Sheets(1).Select
Range("A1:A3").Copy
Sheets(2).Select
Range("b1:b3").Select
ActiveSheet.Paste
End Sub
如果你有合并的单元格,
Sub OneCell()
Sheets("Sheet2").range("B1:B3").value = Sheets("Sheet1").range("A1:A3").value
End Sub
它不会按原样复制单元格,以前的代码会像它们看起来一样复制(合并)。
Private Sub Worksheet_Change(ByVal Target As Range)
Dim rng As Range, r As Range
Set rng = Intersect(Target, Range("a2:a" & Rows.Count))
If rng Is Nothing Then Exit Sub
For Each r In rng
If Not IsEmpty(r.Value) Then
r.Copy Destination:=Sheets("sheet2").Range("a2")
End If
Next
Set rng = Nothing
End Sub
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.