|
在看vba自学宝典时,有个示例,是“录入数据时自动跳过公式所在单元格”。用到了SelectionChange事件。为了更好的弄明白事件,我在里面加了几个msgbox~~~~,来显示单元格变化。发现实际出现的结果与我的猜想出现较大的不同。想请教大家一下假如:当选中F2单元格,因为F2有公式,根据代码会又会自动选中其右侧的G2单元格,又因为G2也有公式,又会自动选中H2单元格。但是根据我添加在代码中的msgbox 显示target.address,发现比我想的复杂的多,msgbox依次弹出target的值分别为 f2,g2,h2,h2,h2,g2,g2,f2,f2.很奇怪啊,为何最后target的值又成F2了?
- '工作表的SelectionChange事件,选区变化时触发,参数target代表选区
- Private Sub Worksheet_SelectionChange(ByVal Target As Range)
- MsgBox Target.Address & "第一次"
- If Target.Count = 1 Then '如果Target只包含单个单元格
- Application.MoveAfterReturnDirection = xlToRight '设定单击回车键时向右移动
- If Target.HasFormula Then Target.Offset(0, 1).Select '如果Target有公式则选择右边一列
- MsgBox Target.Address & "第二次"
- If Target.Column = 9 Then Target.Offset(1, -8).Select '当选择I列时自动返回下一行的第1列
- MsgBox Target.Address & "第三次"
- End If
- End Sub
- Rem Range.HasFormula属性用于说明单元格中是否有公式
- Rem MoveAfterReturnDirection属性则代表单击回车键后,活动单元格向哪个方向移动
复制代码
|
|