Note: The other languages of the website are Google-translated. Back to English

Excel中单元格值更改时如何运行宏?

通常,在Excel中,我们可以按F5键或“运行”按钮执行VBA代码。 但是,您是否曾经尝试在单元格值更改时运行特定的宏代码? 本文中,我将介绍一些快速技巧来处理Excel中的这项工作。

当特定单元格值随VBA代码变化时运行或调用宏

当任何单元格值在使用VBA代码的范围内更改时,运行或调用宏


箭头蓝色右气泡 当特定单元格值随VBA代码变化时运行或调用宏

要通过更改单元格值来运行宏代码,请按照以下VBA代码执行操作:

1。 如果单元格值更改,请右键单击要执行宏的工作表选项卡,然后选择 查看代码 从上下文菜单中,然后在打开的 适用于应用程序的Microsoft Visual Basic 窗口,将以下代码复制并粘贴到空白模块中:

VBA代码:单元格值更改时运行宏:

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = "$A$1" Then
        Call Mymacro
    End If
End Sub

如果单元格更改,则doc运行宏1

备注:在上面的代码中, A1 是您要基于其运行代码的特定单元格, 是您要运行的宏名称。 请根据需要更改它们。

2。 然后保存并关闭代码窗口,现在,当您在单元格A1中输入或更改值时,将立即触发特定代码。


箭头蓝色右气泡 当任何单元格值在使用VBA代码的范围内更改时,运行或调用宏

如果要在单元格区域中任何一个单元格值更改时运行或触发宏,则以下代码可能会对您有所帮助。

1。 如果单元格值更改,请右键单击要执行宏的工作表选项卡,然后选择 查看代码 从上下文菜单中,然后在打开的 适用于应用程序的Microsoft Visual Basic 窗口,将以下代码复制并粘贴到空白模块中:

VBA代码:当任何单元格值在某个范围内变化时,运行宏:

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("A1:B100")) Is Nothing Then
Call Mymacro
End If
End Sub

如果单元格更改,则doc运行宏2

备注:在上面的代码中, A1:B100 是您要基于其运行代码的特定单元格, 是您要运行的宏名称。 请根据需要更改它们。

2。 然后保存并关闭代码窗口,现在,当您在A1:B100的任何单元格中输入或更改值时,将立即执行特定代码。


从多个工作簿中删除所有宏

Kutools for Excel's 批量删除所有宏 实用程序可以帮助您根据需要从多个工作簿中删除所有宏。 立即下载并免费试用Excel的Kutools!

Kutools for Excel:具有300多个方便的Excel加载项,可以在30天内免费试用,没有任何限制。 立即下载并免费试用!


相关文章:

如何在Excel中打印之前自动运行宏?

如何在Excel中根据单元格值运行宏?

如何基于从Excel的下拉列表中选择的值运行宏?

如何通过单击Excel中的超链接运行宏?

从工作簿中选择工作表时如何运行宏?


最佳办公效率工具

Kutools for Excel解决了您的大多数问题,并使您的生产率提高了80%

  • 重用: 快速插入 复杂的公式,图表 以及您以前使用过的任何东西; 加密单元 带密码 创建邮件列表 并发送电子邮件...
  • 超级公式栏 (轻松编辑多行文本和公式); 阅读版式 (轻松读取和编辑大量单元格); 粘贴到过滤范围...
  • 合并单元格/行/列 不会丢失数据; 拆分单元格内容; 合并重复的行/列...防止细胞重复; 比较范围...
  • 选择重复或唯一 行; 选择空白行 (所有单元格都是空的); 超级查找和模糊查找 在许多工作簿中; 随机选择...
  • 确切的副本 多个单元格,无需更改公式参考; 自动创建参考 到多张纸; 插入项目符号,复选框等...
  • 提取文字,添加文本,按位置删除, 删除空间; 创建和打印分页小计; 在单元格内容和注释之间转换...
  • 超级滤镜 (将过滤方案保存并应用于其他工作表); 高级排序 按月/周/日,频率及更多; 特殊过滤器 用粗体,斜体...
  • 结合工作簿和工作表; 根据关键列合并表; 将数据分割成多个工作表; 批量转换xls,xlsx和PDF...
  • 超过300种强大功能. 支持 Office / Excel 2007-2021 和 365。支持所有语言。 在您的企业或组织中轻松部署。 完整功能 30 天免费试用。 60 天退款保证。
kte选项卡201905

Office选项卡为Office带来了选项卡式界面,使您的工作更加轻松

  • 在Word,Excel,PowerPoint中启用选项卡式编辑和阅读,发布者,Access,Visio和Project。
  • 在同一窗口的新选项卡中而不是在新窗口中打开并创建多个文档。
  • 每天将您的工作效率提高50%,并减少数百次鼠标单击!
officetab底部
按评论排序
注释 (17)
还没有评分。 成为第一位评论!
该评论由网站上的主持人最小化
这个模块不适合我。 它说当单元格的 VALUE 发生变化时,它将执行代码。 我发现如果我在单元格中键入它可以工作,但是如果单元格的值被公式更改,例如 Counta,那么它不会执行。 当 VALUE 通过公式更改时,您是否有执行宏的解决方案? 谢谢,韦恩
该评论由网站上的主持人最小化
和韦恩一样的问题。 非常感谢任何帮助! 谢谢罗尼
该评论由网站上的主持人最小化
大家好,

是的,上述代码仅在单元格值手动更改时可用,如果您需要在公式结果随其相关单元格更改时自动运行特定宏代码,请访问此文章:
https://www.extendoffice.com/documents/excel/4618-excel-vba-run-macro-when-cell-formula-result-changes.html.
请尝试一下,希望得到您的回复。
该评论由网站上的主持人最小化
它不工作......&我正在手动更改单元格值。 是否有任何必须设置的预配置?
该评论由网站上的主持人最小化
在程序中对此进行测试并用作参数


Private Sub Worksheet_Change(ByVal Target As Range)

MsgBox Target.Address & "-" e Target.AddressLocal

END SUB
该评论由网站上的主持人最小化
是的,描述说它应该在值更改时触发,但是第二个代码说它是在值什么时候触发,而第一个代码在值更改时也不会触发,但是如果我在查看代码时按 F5,它想要触发 MyMacro,但似乎对价值变化的反应不如从无到有或相反。
该评论由网站上的主持人最小化
这对我来说是第一次使用基于列表选择显示文本的数据验证列表。
该评论由网站上的主持人最小化
对我来说很棒! 我的困境是我希望它是一个相对引用宏,并且按 Enter 保存条目和删除以清除单元格之间存在区别。
该评论由网站上的主持人最小化
嘿,有用的代码。 我在想是否可以在更改时更改的单元格周围插入一个环? 并每周一重置圈子?
该评论由网站上的主持人最小化
你好,凯文,
这里没有解决您的问题的想法,如果您有任何好的解决方案,请在此处发表评论。
该评论由网站上的主持人最小化
您正在调用的宏在哪里? 我在 Modules 文件夹中有我的,但是当我在工作表的任何单元格中输入任何值时,我得到一个编译错误,说:
预期的变量或过程,而不是模块。

请大家帮忙。
该评论由网站上的主持人最小化
嗨,卡特赖特博士,
很抱歉这么晚才回复你。
是的,正如您所说,宏代码应该位于模块中,您需要将代码名称更改为您自己的名称,如下图所示:
查看附件 (1 / 5)
该评论由网站上的主持人最小化
你好,下午好
quisiera saber el codigo para que se active una macro cuando cambia el valor de una celda de una columna, pero este valor cambia por formula, sin que el usuario introduzca ningun valor。
该评论由网站上的主持人最小化
大家好,我正在解决以下问题:我想在 A 列中插入链接时抓取网站的标题,并将此值放入 B 列中的相关单元格(旁边)。问题似乎是一旦我粘贴在 A 列中的网站,代码将整个列表从 A2 列重新运行到代码中定义的“最后一行”。 有没有办法只在修改单个列 A 后修改 B 列? 即,如果在 A36 列中粘贴一个链接,我会在 B36 中获得一个标题,无论单元格是在使用范围的中间还是在最底部。 我想使用它而不必重新运行当前的多个输入; (即循环“for i =2 to last row”)? 另外,我想将以下从模块化宏(即子)更改为对更改(即相交函数)做出反应的私有子,其中“目标”是 A:A 范围内的任何单元格。 非常感谢!


子 get_title_header()



将 wb 变暗为对象

将文档调暗为对象

将 sURL 变暗为字符串

Dim lastrow 只要

lastrow = Sheet1.Cells(Rows.Count, "A").End(xlUp).row



For i = 2 最后一行

设置 wb = CreateObject("internetExplorer.Application")

sURL = 单元格(i, 1)



wb.navigate 网址

wb.Visible = 假



而 wb.Busy

事件

蜿蜒



''HTML 文件

设置 doc = wb.document



单元格(i, 2) = doc.Title



出错时转到 err_clear

单元格(i, 3) = doc.GetElementsByTagName("h1")(0).innerText

错误清除:

如果 Err <> 0 那么

Err.Clear

继续下一步

结束如果

wb.退出

范围(单元格(i,1),单元格(i,3))。Columns.AutoFit

接下来,我



END SUB




谢谢!
该评论由网站上的主持人最小化
当另一个工作簿(零件状态)进行更改时,我正在尝试自动化 1 个工作簿(BOM)。 部件状态文件每 15 分钟更新一次。 当这些更改发生时,我需要知道如何自动化特定列? 有任何想法吗
该评论由网站上的主持人最小化
我正在使用下面的代码来隐藏各种列,具体取决于从位于单元格 C3 中的下拉框中的选择,但是在工作表中的任何位置执行计算后,所有列都变为 UNHIDDEN。 我该如何解决?

私人子Worksheet_Change(按目标的ByVal目标)

列(“D:F”).AutoFit

将 Proj1 调暗为字符串
将 Proj2 调暗为字符串
将 Proj3 调暗为字符串
将 Proj4 调暗为字符串
将 Proj5 调暗为字符串
将 Proj6 调暗为字符串
将 Proj7 调暗为字符串
将 Proj8 调暗为字符串
将 Proj9 调暗为字符串
将 Proj10 调暗为字符串

Proj1 = ActiveWorkbook.Sheets("Projects").Range("A1").Value
Proj2 = ActiveWorkbook.Sheets("Projects").Range("A2").Value
Proj3 = ActiveWorkbook.Sheets("Projects").Range("A3").Value
Proj4 = ActiveWorkbook.Sheets("Projects").Range("A4").Value
Proj5 = ActiveWorkbook.Sheets("Projects").Range("A5").Value
Proj6 = ActiveWorkbook.Sheets("Projects").Range("A6").Value
Proj7 = ActiveWorkbook.Sheets("Projects").Range("A7").Value
Proj8 = ActiveWorkbook.Sheets("Projects").Range("A8").Value
Proj9 = ActiveWorkbook.Sheets("Projects").Range("A9").Value
Proj10 = ActiveWorkbook.Sheets("Projects").Range("A10").Value

将 xRG 调暗为范围
将 xHrow 调暗为整数
设置 xRG = Range("C3")
If Not Intersect(Target, xRG) 什么都不是

如果 Target.Value = Proj1 那么
Application.Columns("E:F").Hidden = True
Application.Columns("D").Hidden = False

elseif target.value = proj2然后
Range("D:D, F:F").EntireColumn.Hidden = True
Application.Columns("E").Hidden = False

结束如果
结束如果
END SUB
该评论由网站上的主持人最小化
这正是我一直在寻找的。 当用户在单元格中输入值时,将运行一个简单的排序宏。 宏自行运行良好,但使用建议的代码时出现无效使用属性错误。

可能是什么问题?
这里还没有评论
留下你的意见
以访客身份发帖
×
评价此帖子:
0   产品特性
建议地点

关注我们

版权所有 © 2009 - extendoffice.com。 | 版权所有。 供电 ExtendOffice。 | 网站地图
Microsoft和Office徽标是Microsoft Corporation在美国和/或其他国家的商标或注册商标。
受Sectigo SSL保护