打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Worksheet的Change事件

Worksheet的Change事件

  “事件”在前面的贴子里我们已经接触过了,如果你还不清楚,回过头去花上几分钟看一看。
  当工作表单元格数值被修改后,就会触发Worksheet的Change事件,我们可以通过写一些语句响应这个事件来完成一些工作,下面我们通过一些例子来认识它。
  打开一个工作薄,点击工作表名称标签,选择“查看代码”命令进入VBE编辑窗口,在代码窗口的对象列表中选择“Worksheet”,在事件列表中选择“Change”,这时代码窗口中会出现一段代码:
复制内容到剪贴板
代码:
Private Sub Worksheet_Change(ByVal Target As Range)
   
End Sub
  相关说明:
  1、Worksheet是对象名,Change是事件名称,对象名称和事件名称用下划线连接;
  2、(ByVal Target As Range):括号里的是程序运行传递的参数,Target是一个Range对象,即单元格区域,指触发Change事件的单元格,也就是数值被修改了的单元格。
  3、我们只需要将所需要执行的代码写在Sub与End Sub之间,这样,在工作表的某个单元格发生改变时,就自动执行Sub与End Sub之间的程序代码。

  如果我们需要在每一次单元格修改之后都告诉我们这个单元格的地址是多少,则代码可以为:
复制内容到剪贴板
代码:
Private Sub Worksheet_Change(ByVal Target As Range)
   MsgBox "刚刚修改的单元格地址是:" & Target.Address
End Sub
  这样,当我们修改了某个单元格后,都会自动弹出一个对话框告诉我们刚刚修改的格的地址是多少。

  如果我们想只有修改某个单元格区域,比如D列的单元格的时候,才弹出这个对话框告诉我们,也是可以的,那代码为:
复制内容到剪贴板
代码:
Private Sub Worksheet_Change(ByVal Target As Range)
  If Target.Column = 4 Then '当改变的单元格的列号为4,即为D列时执行程序
      MsgBox "刚刚修改的单元格地址是:" & Target.Address
  End If
End Sub
  有时,为了减少工作表信息的输入工作,我们会利用到Worksheet的Change事件,例如有一相记录学生借书或还书情况的工作表,C列2行以下的区域记录图书“借出”或“归还”的情况,需要在每一次更改“借出”或“归还”状态时,都在同行的D列记录下更改的日期,则代码可以为:
复制内容到剪贴板
代码:
Private Sub Worksheet_Change(ByVal Target As Range)
'当被修改的单元格只有一个,且列号等于3,行号大于2时执行程序
    If Target.Count = 1 And Target.Column = 3 And Target.Row > 2 Then
        Target.Offset(0, 1) = Date '被修改的单元格的右面一个单元格的值为当前日期
    End If
End Sub
  因为工作的原因,很久没有来了,今天就给大家讲这个很简单的事件,很容易理解。由于时间匆忙,难免有不全面的地方,如有不明白的,希望大家跟贴一起讨论,最后,也给大家留一个练习的题目吧!

  相关附件:
    1、实例:图书—自动录入时间
图书-自动录入时间.rar (7.61 KB)

    2、作业:信息录入—一举两得
信息录入—一举两得.rar (10.37 KB)

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
VBA后,当前表里的单元格无法进行复制和粘贴
VBA中工作表事件 参数Target
Xcel事件
【VBA初学者教程】- 第一章 VBA入门知识:使用Excel对象的事件
 Excel-工作表change事件
VBA入门:事件优先级
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服