跨多个工作表的VBAmacros

我正试图运行一个单一的macros,执行多个工作表上的function。 假设我已经在工作表4上分配了macrosbutton。我已经列出了我希望它逐步执行的function:

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

我会很乐意帮助这个的前3个function。 我已经粘贴了下面的当前代码。

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 

它的工作原理…但它只适用于当我在正确的工作表执行特定的function。

通过删除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 

你是一个伟大的开始。 只需稍微改进一下,你就能拥有它。

基本上,没有必要。至less在这种情况下,select你的范围(工作表,工作簿等)。 您可以直接使用它们,并使用“ Copy提供Copy的目标位置。

见下面的代码:

 Sub START() Dim sh1 As Worksheet Dim sh2 As Worksheet Dim sh3 As Worksheet Dim sh4 As Worksheet Dim wkb As Workbook Set wkb = Workbooks("wkbName") '-> best to call workbooks by name, as opposed to "ActiveWorkbook", also best to set it to object With wkb '-> now we can work with this object directly and succinctly Set sh1 = .Sheets("Brand") Set sh2 = .Sheets("CurrentWeek") Set sh3 = .Sheets("PriorWeek") Set sh4 = .Sheets("Pivot") sh4.Range("B29:B30").Copy sh4.Range("C29") 'sh3.Range("A4:AC1000").Delete -> you don't need this if you are overwritting it sh2.Range("A4:AC1000").Copy sh3.Range("A4") End With End Sub 

(“名称1”)。范围(“B29:B30”)。复制目标:=工作表(“名称2”)。范围(“C29”)

假设表名是name1和name2,将从一个表复制到另一个表

 Sub START() Sheet("Pivot").Range("B29:B30").Copy Sheet("Pivot").Range("C29") Sheet("CurrentWeek").Range("A4:AC1000").Copy Sheet("PriorWeek").Range("A4") End Sub