跨多个工作表的 VBA 宏

标签 vba excel excel-2007

我正在尝试运行一个在多个工作表上执行功能的宏。假设我已经在工作表 4 上分配了宏按钮。我已经列出了我希望它逐步执行的功能:

1) 选择工作表 4 中的某些单元格并复制到工作表 4 中的相邻单元格。
2) 删除工作表 3 中的单元格区域。
3) 剪切工作表 2 中的单元格范围,然后将此单元格范围粘贴到工作表 3 中。
4) 从单独的工作簿中获取单元格范围并复制到工作表 2 中。(我知道这是一个完全不同的问题,因为工作簿是自动发布的,我必须找到一种方法来链接两者。)
5) 更新位于工作表 4 和工作表 3 中的数据透视表。

我希望获得有关前 3 个功能的帮助。我已将当前代码粘贴在下面。

Sub START()

Dim sh1 As Worksheet
Dim sh2 As Worksheet
Dim sh3 As Worksheet
Dim sh4 As Worksheet

Set sh1 = ActiveWorkbook.Sheets("Brand")
Set sh2 = ActiveWorkbook.Sheets("CurrentWeek")
Set sh3 = ActiveWorkbook.Sheets("PriorWeek")
Set sh4 = ActiveWorkbook.Sheets("Pivot")

sh4.Range("B29:B30").Select
Selection.Copy

sh4.Range("C29").Select
ActiveSheet.Paste

sh3.Range("A4:AC1000").Select
Selection.Delete

sh2.Range("A4:AC1000").Select
Selection.Copy

sh3.Range("A4").Select
ActiveSheet.Paste

End Sub

它有效......但只有当我在正确的工作表中执行特定功能时它才有效。

最佳答案

通过删除selectselectionactivesheet,您将能够使该工作表独立

Sub START()

Dim sh1 As Worksheet
Dim sh2 As Worksheet
Dim sh3 As Worksheet
Dim sh4 As Worksheet

Set sh1 = ActiveWorkbook.Sheets("Brand")
Set sh2 = ActiveWorkbook.Sheets("CurrentWeek")
Set sh3 = ActiveWorkbook.Sheets("PriorWeek")
Set sh4 = ActiveWorkbook.Sheets("Pivot")

sh4.Range("B29:B30").Copy sh4.Range("C29")

sh3.Range("A4:AC1000").Delete

sh2.Range("A4:AC1000").Copy sh3.Range("A4")

End Sub

关于跨多个工作表的 VBA 宏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13054960/

相关文章:

excel - 双击复制相邻单元格的内容

excel - 'Find' 命令的表达式

statistics - 如何在 Excel 中使用 T 检验确定统计显着性?

vba - 连接和迭代多个单元格VBA excel

VBA On.Time() 背景检查与常规用法相结合

excel - 将自定义数字字段拆分字符串给出类型不匹配

Excel 数组替换公式 - VBA

vba - 如何检测 COM 类方法是否在 VBA 中失败

vba - 该程序选择整行,如何将选择限制为A到M

vba - 获取上一季度的最后一天