![26ac32811c7bc23b84603089ed2fe5bf.png](https://i-blog.csdnimg.cn/blog_migrate/52324e54df2f2948acf5c0cbef4d5ae4.png)
如果说工作簿事件是VBA事件的基础选手,那工作表事件就是VBA事件中的王牌选手。
毫不夸张的说,工作表事件是开发Excel应用程序时使用最多的。
对于工作表对象,只有在指定的工作表里的操作才能触发该事件。
VBA中Excel的工作表事件有很多,本次主要介绍三个常用事件:①Worksheet_Change事件②Worksheet_Activate事件③Worksheet_Caculate事件
一、如何打开工作表事件?
工作簿事件可以通过菜单栏中的【开发工具】-【Visual Basic】-【Sheet1】-【Worksheet】打开,下图右边的下拉框即是工作表事件。
【小贴士】工作表可以任意指定,具体的工作表事件只针对指定的工作表起作用。
![0c1b3afd5f5b47770b93c69d6f69f52a.png](https://i-blog.csdnimg.cn/blog_migrate/8871345318a4cf6a3014de732a22530c.jpeg)
二、Worksheet_Change事件
Worksheet_Change事件是更新工作表中的单元格的值时触发。
代码形式:Private Sub Worksheet_Change(ByVal Target As Range)
Worksheet_Change事件自带Target参数,通过对该参数的判断控制数据的修改。
举个栗子:若要判断年龄项和性别项的输入内容是否正确。
即年龄<0,或者 年龄>100 则显示错误信息。
性别不为"男"或者"女",则显示错误信息。
核心代码如下:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Select Case Target.Column '取列数
Case 2 '当列数等于2,执行下面的操作
If Target < 0 Or Target > 100 Or Target = "" Then
MsgBox "年龄设置错误,请重新输入!", vbOKOnly, "警告"
End If
Case 3 '当列数等于3,执行下面的操作
If Target <> "男" And Target <> "女" Then
MsgBox "性别设置错误,请重新输入!", vbOKOnly, "警告"
End If
End Select
End Sub
具体的操作如下:
![5d8b9b6b6babcda35e5aa2ec14d6119a.gif](https://i-blog.csdnimg.cn/blog_migrate/7289cbaf42c59231cea25ded4c2473c4.gif)
三、Worksheet_Activate事件
Worksheet_Activate事件是选中工作表、图表工作表时发生此事件。
代码形式:Private Sub Worksheet_Activate()
举个栗子:计算工作表中的指定位置前2个单元格的求和值。
核心代码如下:
Private Sub Worksheet_Activate()
ActiveCell.FormulaR1C1 = "=SUM(R[-2]C:R[-1]C)"
End Sub
具体的操作如下:
![d2d6dca040326f3e892fe43ca4ff72d9.gif](https://i-blog.csdnimg.cn/blog_migrate/296a2431fe3dbf828b4779895c21c95c.gif)
四、Worksheet_Caculate事件
Worksheet_Caculate事件在对工作表对象重新计算工作表之后, 发生此事件。
代码形式:Private Sub Worksheet_Calculate()
例如:当工作表重新计算之后,调整A列到F列的宽度。
核心代码如下:
Private Sub Worksheet_Calculate()
Columns("A:F").AutoFit
End Sub
看完三件事:
1.点赞,让更多的人也能看到这篇文章(收藏不点赞,都是耍流氓)
2.关注我和我的专栏,让我们共同成长
3.关注公众号"数据大作手",定期分享数据分析方面的干货
感谢你的支持!