工作表事件在Excel VBA
当单元格更改其值,双击,选择工作表等时,您可能需要运行宏/ VBA代码段。在所有这些情况下,我们都使用工作表事件处理程序。每当某个事件发生时,事件处理程序都会帮助我们运行VBA代码。
在本文中,我们将简要了解每个工作表事件处理程序。
什么是工作表事件处理程序?工作表事件处理程序是工作表模块本地的子例程。
在哪里编写工作表事件处理程序代码?
工作表事件仅写在工作表对象中。如果您在某个模块或类模块中编写工作表事件,则不会有错误,但它们将无法工作。
要写入工作表对象。双击它或右键单击并单击查看代码。将显示代码编写区域。
如何为工作表上的特定事件编写代码?
现在,当您处于编辑模式时,在左上角的下拉菜单中将看到常规。单击下拉列表,然后选择工作表。
现在,在右上角的下拉列表中,将显示所有事件。选择所需的内容,该事件的骨架代码将为您编写。
每个事件都有一个固定的过程名称。这些是保留的子例程名称。您不能将它们用于图纸上的其他子例程。在模块中,它们将作为常规子例程工作。
重要提示:该列表中的每个子例程将在指定的事件上运行。
一种工作表事件过程只能在一张纸上写一次。如果在一张纸上写两个相同的事件处理过程,将导致错误,并且不会执行任何操作。当然,该错误将是模棱两可的子例程。
让我们简要地了解每个事件。
1. TheWorksheet_Change(按范围分配ByVal目标)事件当我们对包含工作表的任何更改(不包括格式设置)触发此事件。如果您想对整个工作表进行任何更改,则代码为:
Private Sub Worksheet_Change(ByVal Target As Range) 'do somehting Msgbox "done something" End Sub
“目标”始终是活动单元。
另一个示例:如果A1更改,您可能希望将日期和时间放入单元格B1中。在这种情况下,我们使用worksheet_change事件。代码如下所示:
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address = "$A$1" Then Range("B1").Value2 = Format(Now(), "hh:mm:ss") End If End Sub
这将仅针对单元格A1。
如果要定位范围,请使用以下示例:
`link:/ events-in-vba-run-macro-如果有任何更改,请在工作表范围内运行[如果在指定范围内对工作表进行了任何更改,请运行宏] ==== 2. The Worksheet_SelectionChange(ByVal目标范围)*事件顾名思义,此事件在选择更改时触发。换句话说,如果您的光标位于单元格A1中,并且移动到了其他某个单元格,则该子例程中的代码将运行。
下面的代码将改变活动单元格的颜色,只要它发生变化并且是偶数行。
现在,只要我的光标在偶数行上移动,它就会被着色。奇数行单元将被保留。
Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Target.Row Mod 2 = 0 Then Target.Interior.ColorIndex = 22 End If End Sub
Worksheet_SelectionChange事件的另一个示例:
链接:/ vba最简单的vba代码中的事件以突出显示当前行和列的使用[使用突出显示当前行和列的简单VBA代码]
3. Worksheet_Activate()事件包含工作表的事件代码激活时触发此事件。
此事件的骨架代码为:
一个简单的示例是在选择工作表名称时显示它。
Private Sub Worksheet_Activate() End Sub
一旦您进入包含此代码的工作表,该事件就会运行,并显示一条消息“您在工作表名称上”
Private Sub Worksheet_Activate() MsgBox "You are on " & ActiveSheet.Name End Sub
(在我的情况下是sheet2)。
4. Worksheet_Deactivate()事件离开包含工作表的代码时触发此事件。换句话说,如果您想做一些事情,例如在离开工作表时隐藏行或其他任何东西,请使用此VBA事件。语法为:
下面的示例Worksheet_Deativate事件将简单地弹出一条消息,提示您已离开母版纸,而您将离开该纸。
Private Sub Worksheet_Deactivate() 'your code ' End Sub
Private Sub Worksheet_Deactivate() MsgBox "You Left The Master Sheet" End Sub
===
5. Worksheet_BeforeDelete()* Event此事件在您确认删除包含VBA事件的图纸时触发。语法很简单:
以下代码将询问您是否要复制即将删除工作表的内容。
Private Sub Worksheet_BeforeDelete() End Sub
6. The Worksheet_BeforeDoubleClick(ByVal Target为Range,Cancel为Boolean)*事件双击目标单元格时触发此事件。此VBA工作表事件的语法为:
Private Sub Worksheet_BeforeDelete() ans = MsgBox("Do you want to copy the content of this sheet to a new sheet?", vbYesNo) If ans = True Then 'code to copy End If End Sub
如果您未设置目标单元格或范围,则每次在工作表上双击都会触发它。
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) End Sub
Cancel变量是一个布尔变量。如果将其设置为True,则默认操作不会发生。这意味着,如果双击该单元格,则不会进入编辑模式。
如果您双击任何单元格,则下面的代码将使单元格充满颜色。
下面的代码针对单元格A1。如果已经用指定的颜色填充,则它将消失。它很像一个类似按钮或复选框。
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) Cancel = True Target.Interior.ColorIndex = 7 End Sub
7. TheWorksheet_BeforeRightClick(ByVal目标为范围,取消为布尔值)*事件右键单击目标单元格时触发此事件。此VBA工作表事件的语法为:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) If Target.Address = "$A$1" Then Cancel = True If Target.Interior.ColorIndex = 4 Then Target.Interior.ColorIndex = xlColorIndexNone Else Target.Interior.ColorIndex = 4 End If End If End Sub
如果右键单击,下面的代码将用值1填充单元格。
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean) Cancel = True ' 'your code ' End Sub
由于我们将“取消”运算符设置为True,因此不会显示默认的右键单击选项。
8. TheWorksheet_Calculate()*事件如果您希望在excel计算工作表时发生某些事情,请使用此事件。每当excel计算工作表时,它将触发。语法很简单:
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean) Cancel = True Target.Value = 1 End Sub
6. Worksheet_FollowHyperlink(ByVal目标为超链接)*事件单击表上的超链接时,将运行此过程。此事件处理程序的基本语法为:
Private Sub Worksheet_Calculate() ' 'your code ' End Sub
您可以根据需要设置目标超链接。如果未设置目标超链接,则在包含工作表的代码上单击任何超链接时,该超链接将被执行。
Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink) ' 'your code ' End Sub
是的,这些是一些基本的工作表事件,如果您了解这些事件,它们将非常方便。以下是一些您可能想阅读的相关文章。
如果您对本文或任何其他与excel / VBA相关的文章有任何疑问,请在下面的评论部分中告诉我们。
相关文章:
`链接:/在进行任何更改时,使用提示将工作表更改事件运行到宏[使用进行任何更改的工作表更改事件在宏中运行] **因此,为了在工作表更新时运行宏,我们使用VBA的工作表事件。
`link:/ events-in-vba-run-macro-如果有任何更改,在工作表范围内运行[如果在指定范围内在工作表上进行了任何更改,则运行宏] **若要在指定范围内的值更改时运行宏代码,请使用此VBA代码。它检测到在指定范围内所做的任何更改,并将触发该事件。
`link:/ vba中的事件-最简单的vba代码以突出显示当前行和列使用[使用突出显示当前行和列的最简单VBA代码]“ |使用此VBA小片段突出显示工作表的当前行和列。
热门文章:
`链接:/ keyboard-formula-shortcuts-50-excel-shortcuts可提高您的生产率[50 Excel快捷方式以提高生产率]更快地完成任务。这50个快捷键将使您在Excel上的工作更加快捷。
Excel中的VLOOKUP函数 |这是excel中最常用和最受欢迎的功能之一,用于从不同范围和工作表中查找值。链接:/ tips-countif-in-microsoft-excel [在Excel 2016中为COUNTIF]使用此惊人的功能对条件进行计数。您无需过滤数据即可计算特定值。
Countif功能对于准备仪表板至关重要。
链接:/ excel-formula-and-function-excel-sumif-function [如何在Excel中使用SUMIF函数]这是仪表板的另一个重要功能。这可以帮助您汇总特定条件下的值。