我目前在编译我正在尝试制作的宏时遇到问题。我要么尝试在不同的工作表上使用命名范围或实际范围,要将该数据复制并粘贴到当前工作表中。我希望数据发布到当前工作表,以便我可以在每个月的每一天运行此宏。这是我编译的,但由于某种原因我不能使用ActiveSheet。附上我的代码。
Sub Macro1()
' Daily Route Sheet
Sheets("2").Select
ActiveCell.Range("A1:H44").Select
Selection.Copy
Sheets("ActiveSheet").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
End Sub
答案 0 :(得分:3)
不考虑选择,剪切和粘贴,而是考虑
Sub Macro1()
Worksheets("Sheet1").Range("A1:H44").Value = Worksheets("Sheet2").Range("A1:H44").Value
End Sub
答案 1 :(得分:0)
更改
Sheets("ActiveSheet").Select
到
ActiveSheet.Select
但是,我同意马特关于你应该试图远离.Select
答案 2 :(得分:0)
"ActiveSheet"
是一个字符串。
Activesheet
是工作表对象。
Activesheet.range("A1").value
相当于Sheets(Activesheet.name).value
或Sheets(Activesheet.index).value
。
那是因为Sheets
(或Worksheets
,它们是相同的),可以在braquets()中通过它们的名称(作为字符串)或它们的索引(数字,这是表格在工作簿中的位置。)
Worksheets
是工作簿工作表的集合(按集合,我的意思是一种数组)。
Activesheet
是一种VBA访问已经活动的工作表的简便方法,与ActiveWorkbook' for workbooks, or
ActiveCell`用于单元格的方式相同。它们都是对象,而不是字符串。
答案 3 :(得分:-3)
Sub Macro1() ActiveSheet.Range(“A1:H44”)。值=工作表(“2”)。范围(“A1:H44”)。值 结束子
感谢Matt的答案!