Vba 创建一个宏,在不同工作表的每个月用下一列替换列数据

Vba 创建一个宏,在不同工作表的每个月用下一列替换列数据,vba,excel,Vba,Excel,我试图创建一个宏,它基本上从一个单元格中获取一列数据,并在每个月的不同工作表中用下一个单元格替换它。我已经附上了我录制的使用“查找和替换”宏的记录,以及我现在所做的操作 Sub Update() Update Macro Range("I6:I38").Select Selection.Replace What:="$AC:$AC", Replacement:="$AD:$AD", LookAt:=xlPart _ , SearchOrder:=xlByRo

我试图创建一个宏,它基本上从一个单元格中获取一列数据,并在每个月的不同工作表中用下一个单元格替换它。我已经附上了我录制的使用“查找和替换”宏的记录,以及我现在所做的操作

Sub Update()
    Update Macro

    Range("I6:I38").Select
    Selection.Replace What:="$AC:$AC", Replacement:="$AD:$AD", LookAt:=xlPart _
      , SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
      ReplaceFormat:=False 
End Sub
该范围与
$AC:$AC
$AD:$AD

如果我需要澄清什么,请告诉我

事先非常感谢你

好了,现在我明白了:

您需要使用工作簿更改事件。如果您不知道事件是如何工作的,请咨询谷歌。可以使用VBA编辑器(alt+F11)访问工作簿更改事件。然后单击工作簿,就像它是一个模块一样。然后将此代码的所有内容复制到工作簿中,保存、关闭、重新打开并调整范围以及工作表名称

那么它应该可以正常工作

Option Explicit
Public Enabled As Boolean


Private Sub Workbook_Open()
Enabled = True
End Sub

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)

If Enabled Then
Enabled = False
Dim summary As Worksheet, Jan As Worksheet, Feb As Worksheet, Mar As Worksheet
Set summary = Worksheets("Summary")
Set Jan = Worksheets("Jan")
Set Feb = Worksheets("Feb")
Set Mar = Worksheets("Mar")

summary.Range("B5").Value = Jan.Range("A1").Value
summary.Range("B6").Value = Feb.Range("A1").Value
summary.Range("B7").Value = Mar.Range("A1").Value
Enabled = True
End If

End Sub
有一个全局变量Enable,用于切换的事件。这是必需的,因为Sheetchange函数会更改触发该函数的工作表,从而得到一个无限循环。使用这个布尔值,你将关闭它。工作簿_open事件将布尔值设置为true,因此您将从启用开始,然后暂时关闭并再次打开它

像这样,每次更改工作簿时,您的摘要都会自动更新

祝你好运

好了,现在我明白了:

您需要使用工作簿更改事件。如果您不知道事件是如何工作的,请咨询谷歌。可以使用VBA编辑器(alt+F11)访问工作簿更改事件。然后单击工作簿,就像它是一个模块一样。然后将此代码的所有内容复制到工作簿中,保存、关闭、重新打开并调整范围以及工作表名称

那么它应该可以正常工作

Option Explicit
Public Enabled As Boolean


Private Sub Workbook_Open()
Enabled = True
End Sub

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)

If Enabled Then
Enabled = False
Dim summary As Worksheet, Jan As Worksheet, Feb As Worksheet, Mar As Worksheet
Set summary = Worksheets("Summary")
Set Jan = Worksheets("Jan")
Set Feb = Worksheets("Feb")
Set Mar = Worksheets("Mar")

summary.Range("B5").Value = Jan.Range("A1").Value
summary.Range("B6").Value = Feb.Range("A1").Value
summary.Range("B7").Value = Mar.Range("A1").Value
Enabled = True
End If

End Sub
有一个全局变量Enable,用于切换的事件。这是必需的,因为Sheetchange函数会更改触发该函数的工作表,从而得到一个无限循环。使用这个布尔值,你将关闭它。工作簿_open事件将布尔值设置为true,因此您将从启用开始,然后暂时关闭并再次打开它

像这样,每次更改工作簿时,您的摘要都会自动更新


祝你好运

我没有得到你想要的。是否要每月替换单元格,这意味着工作簿每月都会使用新工作表自行调整单元格。或者你有不同月份的不同工作表,你想循环浏览吗?请告诉我们有关您使用的工作簿的更多信息,功能应该是什么。工作簿有一个每月更新的工作表,更新反映在摘要选项卡上。我希望摘要选项卡自动从更新的工作表中提取。现在,我正在使用查找和替换手动执行此操作。我没有得到您想要执行的操作。是否要每月替换单元格,这意味着工作簿每月都会使用新工作表自行调整单元格。或者你有不同月份的不同工作表,你想循环浏览吗?请告诉我们有关您使用的工作簿的更多信息,功能应该是什么。工作簿有一个每月更新的工作表,更新反映在摘要选项卡上。我希望摘要选项卡自动从更新的工作表中提取。现在,我正在使用查找和替换手动执行此操作。感谢您的帮助。我不确定这是否正是我想要的,抱歉含糊不清。我有一个工作表,允许我输入每个月的值(收入、费用、利润)。之后,它将使用一个sumif函数,并将它们作为年初至今的显示放在summary选项卡上。我希望能够更新工作表选项卡中的列,然后将新更新的sumif函数发送到摘要选项卡。现在我正在使用“查找和替换”手动执行此操作。对不起,我也是宏新手,所以我不擅长此操作。没问题,这就是该网站的用途。请确保您对问题的定义非常详细,以便其他人可以重现您的问题。谢谢您的帮助。我不确定这是否正是我想要的,抱歉含糊不清。我有一个工作表,允许我输入每个月的值(收入、费用、利润)。之后,它将使用一个sumif函数,并将它们作为年初至今的显示放在summary选项卡上。我希望能够更新工作表选项卡中的列,然后将新更新的sumif函数发送到摘要选项卡。现在我正在使用“查找和替换”手动执行此操作。对不起,我也是宏新手,所以我不擅长此操作。没问题,这就是该网站的用途。只要确保你对问题的定义如此详细,其他人就可以重现你的问题。