Tag: 触发器

Excel工作表更改事件不会在多个单元格被删除时发生

我有代码来触发一个改变事件,将诉诸我的数据。 该图表在AD栏中有信息。 代码触发数据随时在列D中的值改变。 当我input新的数据时,以及当我删除列D中的单元格的内容,但是,如果我select在某一行的列AD中的信息,然后点击删除,删除所有四个单元格的内容与数据在那一行,事件不会触发。 为了做到这一点,我需要改变什么? 代码是 Private Sub Worksheet_Change(ByVal Target As Range) If Target.Column = 4 Then Application.EnableEvents = False Range(Cells(1, 1), Cells(90, 1)).Select ActiveWorkbook.Worksheets("Sheet2").Sort.SortFields.Clear ActiveWorkbook.Worksheets("Sheet2").Sort.SortFields.Add Key:=Range(Cells(2, 1), Cells(90, 1)) _ , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal With ActiveWorkbook.Worksheets("Sheet2").Sort .SetRange Range(Cells(1, 1), Cells(90, 4)) .Header = xlYes .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply […]

刷新所有不触发QueryTable的BeforeRefresh事件 – 为什么?

正如标题所述:我发现单击function区上的“全部刷新”button不会触发QueryTable的BeforeRefresh事件。 为什么这样? 有没有办法改变这种行为? 奇怪的是,完全相同的QueryTable的AfterRefresh事件触发完成! 为了分析这个行为,我在两个工作表中创build了两个表: 简单的,无链接的表格称为Source 称为Destination链接到Source表的表。 连接是使用Microsoft Query和Excel文件作为数据源创build的。 然后,我创build了TestClass ,如下所示: Option Explicit Private WithEvents qt As QueryTable Public Sub Init(pQt As QueryTable) Set qt = pQt End Sub Private Sub qt_BeforeRefresh(Cancel As Boolean) MsgBox "BeforeRefresh" End Sub Private Sub qt_AfterRefresh(ByVal Success As Boolean) MsgBox "AfterRefresh" End Sub 最后,我创build,初始化并存储了一个TestClass的实例。 右键单击“ Destination表并select“刷新”可获得预期的结果:MsgBox显示两次,确认触发“事件之前”和“事件之后刷新”事件。 但是,单击function区上的“全部刷新”将只显示一个MsgBox:AfterRefresh一个。 我已经准备了一个最小的Excel文件来重现所描述的行为。 它可以在这里下载: RefreshAllNotTriggeringBeforeRefresh.xlsm […]

将模块代码应用于多个表格

我创build了一个工作表,调用多个模块来进行不同的操作,如计算或隐藏行等。 我创build了该工作簿和代码,只能使用1张工作表,但现在我复制了该工作表并创build了10个以上,我正在尝试使用与创build的相同模块,并将该代码应用于新工作表。 我在excel VBA中很基本,而且我发现的话题是我不了解他们或者不符合我的需求。 我的代码示例: 我把这个代码放在Sheet1中 Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address = "$E$2" Then ModuloAct End If If Target.Address = "$E$10" Then Colaborador End If If Target.Address = "$E$11" Then Dias End If End Sub 模块示例 Sub ModuloAct() If Worksheets("Hoja1").Cells(2, 5).Value = "T" Then Worksheets("Hoja1").Cells(8, 5).Value = 0.16 Worksheets("Hoja1").Cells(2, 5).Value = "Tension" […]

如果包含链接到其他工作表的公式的单元格范围输出不同的值,如何触发macros

我正在运行以下macros以在一系列单元格上应用条件格式。 我想要的是macros随着时间的变化而被触发。 单元格值不会被手动更改(即不会由用户select并更改),它们会自动更改,因为它们包含链接到其他电子表格单元格的公式。 这样做最有效率是什么? Sub TestSub3() Dim i As Integer, j As Integer For i = 5 To 27 If i Mod 2 <> 0 Then For j = 2 To 16 If Cells(i, j) = 0 Then Cells(i, j).Interior.Color = RGB(146, 208, 80) 'light green fill Cells(i, j).Font.Color = RGB(0, 176, 80) 'dark green […]

Excel触发macros

我正在努力实施以下。 任何帮助将不胜感激。 marco只涉及一个excel工作表。 我有50行信息,在列A的每一行中有11列宽(A – K),其中有一个IF条件如果IF条件标记单词'OK',我想要一个macros触发,并执行以下操作将单元格B中的信息复制到K,并将其特殊粘贴到这些单元格中。 然后转到下一行 这50行信息将在一天之内填满。 A列中的每个ROW条件仅执行一次,从行1开始并工作到行50 触发事件“OK”即将到来,这只是等待事件发生的问题。 正如我所说的任何帮助将不胜感激