【问题标题】:Excel VBA Macro IssueExcel VBA 宏问题
【发布时间】:2016-06-22 17:55:37
【问题描述】:

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

【问题讨论】:

  • 我相信您的意思是拥有Sheets("Sheet1").Select,但最好不要选择任何内容。
  • 不,我正在尝试从表 2 中获取信息 - 我将其命名为“2”,以便我们的检查员可以快速单击它。所以我想做的是我们的承包商喜欢复制和粘贴,但他们不使用特殊的粘贴,所以它破坏了我们的命名范围。我隐藏了范围,我正在尝试写一些从第 2 天复制的东西,例如可以放入第 23 天。我想复制另一天的数据并将其发布到他们正在工作的当前工作表中
  • 你有一个名为“ActiveSheet”的工作表,如果你没有,只需擦除Sheets("ActiveSheet").Select
  • 看看here 避免在你的宏中使用Select
  • activesheet.select 有什么好处?!如果它已经激活,你为什么要重新激活它?

标签: vba excel


【解决方案1】:

考虑一下,而不是选择、剪切和粘贴

Sub Macro1()
    Worksheets("Sheet1").Range("A1:H44").Value = Worksheets("Sheet2").Range("A1:H44").Value
End Sub

【讨论】:

  • Worksheets("Sheet1").Range("A1:H44") = Worksheets("Sheet2").Range("A1:H44") 对我来说很有意义,但我该怎么做我正在处理的当前工作表。这是我遇到的问题
  • 然后将Worksheets("Sheet1").Range("A1:H44").Value更改为ActiveSheet.Range("A1:H44").Value。不要像我原来那样省略.Value
  • @hipster_pete - 只需更改公式的左侧部分以引用您正在处理的工作表。如果不是“Sheet1”,只需将其更改为“mySheetName”或其他...
  • 我不想这样做,因为我想运行一个可以在任何一天运行而无需更改发布位置的宏 - 我宁愿将它放在当前活动工作表上。跨度>
  • @hipster_pete 你看到我的评论了吗?
【解决方案2】:

改变

Sheets("ActiveSheet").Select

ActiveSheet.Select

但是,我同意马特的观点,即您应该尽量远离.Select

【讨论】:

  • 我也同意这一点 - 我喜欢 = 部分,我在获取当前工作表上的信息时卡住了
【解决方案3】:

"ActiveSheet" 是一个字符串。 Activesheet 是一个工作表对象。

Activesheet.range("A1").value 等价于Sheets(Activesheet.name).valueSheets(Activesheet.index).value

那是因为Sheets(或Worksheets,它们是相同的),可以在括号()中通过它们的名称(作为字符串)或它们的索引(数字,这是工作表在工作簿)。

Worksheets是工作簿工作表的一个集合(集合,我的意思是一种数组)。

Activesheet 是一种 VBA 简单的方法来访问已经处于活动状态的工作表,就像 ActiveWorkbook' for workbooks, orActiveCell` 用于单元格一样。它们都是 Objects ,而不是 Strings。

【讨论】:

    【解决方案4】:

    子宏1() ActiveSheet.Range("A1:H44").Value = Worksheets("2").Range("A1:H44").Value 结束子

    感谢马特的回答!

    【讨论】:

    • 请不要那样做。通过单击旁边的复选标记,将马特的答案标记为已接受。
    猜你喜欢
    • 2021-07-25
    • 2020-07-21
    • 1970-01-01
    • 2023-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-14
    相关资源
    最近更新 更多