总结: 事件的前世今生 控件事件: 1. “MouseMove”是移动鼠标事件。如果你想在鼠标移动到CommandButton2时返回什么信息或者修改某单元格的值,那么你应该把代码写在 中间. Private Sub CommandButton2_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single) '这里写代码 End Sub 2. MouseDown 与 Click 好像是同一回事,MouseDown 与 Click 好像是同一回事,点击鼠标左键既触发“Click”事件,又触发“MouseDown”事件 ,它们之间的区别是,“MouseDown”发生在鼠标按下按钮还没有松开的那一段时间,接着松开鼠标又触发“MouseUp”事件,“Click”是整个过 程,点击过按钮后,先触发“MouseDown”事件,后触发“Click”事件。另一个区别是,鼠标右键点击控件,不触发“Click”事件。 3. 激活工作表的时候,触发Activate事件。 当用鼠标右键单击工作表时产生BeforeRightClick事件。 打开工作簿时,触发Open事件。 打印工作表时,触发BeforePrint事件。 4. 不同对象间的事件不一定相同,如按钮有13个事件,工作表有9个事件,工作簿有28个事件 5. 四楼的习题是让按钮向右移,想用.right 属性,但是没有. 只能用*.left=*.left +*.width. 这个也是看答案才知道的,自己想是想不出来的. 例: Private Sub cmdBut1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single) cmdBut1.Top = cmdBut1.Top + 10 cmdBut1.ForeColor = Int(Rnd * 16777215) End Sub Private Sub cmdBut2_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single) cmdBut2.Top = cmdBut1.Top cmdBut2.ForeColor = Int(Rnd * 16777215) End Sub
工作表事件:
1. ①选定新的单元格区域时,产生SelectionChange事件。 ②改变单元格的值时,产生Change事件。 2. Private Sub Worksheet_SelectionChange(ByVal Target As Range) ' 当工作表的选定区域发生改变时,将产生本事件,运行以下代码
' UsedRange: 代表工作表中已使用的单元格区域 ' Counta(): 工作表函数,含有字符的单元格区域 ' WorksheetFunction: 在VBA 中调用工作表函数的调用格式 ' 计算结果表示当前工作表中含有字符的单元格的个数 n = WorksheetFunction.CountA(UsedRange) + 1 ' Targe:这个是关键,代表当前选定的单元格 ' 把 n 保存到当前选定的单元格 Target = n End Sub 3. Application.EnableEvents = False Range("b2:b30").ClearContents Application.EnableEvents = True |