Excel VBA宏问题

时间:2016-06-22 17:55:37

标签: excel vba excel-vba

我目前在编译我正在尝试制作的宏时遇到问题。我要么尝试在不同的工作表上使用命名范围或实际范围,要将该数据复制并粘贴到当前工作表中。我希望数据发布到当前工作表,以便我可以在每个月的每一天运行此宏。这是我编译的,但由于某种原因我不能使用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

4 个答案:

答案 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).valueSheets(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的答案!