注册 登录
编程论坛 VB6论坛

事件触发次数(有能解答的大神没有?)

新忆随风 发布于 2019-03-05 13:32, 2306 次点击
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Row > 1 Then
   ActiveCell.Offset(-1, 0).Select
Else
   MsgBox "已是最上一行"
End If
End Sub
以上VBA代码在Excel表格中为什么只能运行101行?求大神指点。

[此贴子已经被作者于2019-3-5 20:52编辑过]

3 回复
#2
沉默的痞子2019-03-09 08:01
只能运行101行是什么意思?
#3
新忆随风2019-03-12 15:39
回复 2楼 沉默的痞子
以上代码是只要上一个单元格不是第一行,就像上移动一个单元格,比如如果点击A101它可以运行至A1,但点击A102它只运行至A2。

[此贴子已经被作者于2019-3-12 15:41编辑过]

#4
jjww29992019-03-13 19:57
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
Static s

If Target.Row > 1 Then
   ActiveCell.Offset(-1, 0).Select
Else
   MsgBox "已是最上一行"
End If
s = s + 1
Debug.Print s
End Sub


验证属实。
个人认为,每次的事件都自动陷入循环造成堆栈积累,那么就会有堆栈积累的限制,所以才有101次的限定就会自动强行退出循环。
1