暂停for循环并通过更改活动单元格等待输入



我有一个For循环,它可以运行多次迭代。我希望它运行,然后在一次迭代后暂停,然后等待用户更改活动单元格,然后按enter键再次开始循环x次迭代。首先我声明三个公共变量:

Public PauseButton As Boolean
Public Iterations As Integer
Public NoPause As Boolean

在子I集合CCD_ 1。然后在for循环结束时:

If Not NoPause Then
Iterations = Iterations - 1
If Iterations = 0 Then
PauseButton = True
Do While PauseButton
DoEvents
Loop
End If
End If
Next i

然后在每次按下回车键时运行的另一个子系统中:

Sub EnterPress()
If Application.ActiveCell.Row = 1 And Application.ActiveCell.Column = 5 Then
PauseButton = False
Iterations = 1
ElseIf Application.ActiveCell.Row = 1 And Application.ActiveCell.Column = 6 Then
PauseButton = False
Iterations = 5
ElseIf Application.ActiveCell.Row = 1 And Application.ActiveCell.Column = 7 Then
PauseButton = False
Iterations = 10
ElseIf Application.ActiveCell.Row = 1 And Application.ActiveCell.Column = 8 Then
PauseButton = False
Iterations = 15
ElseIf Application.ActiveCell.Row = 1 And Application.ActiveCell.Column = 9 Then
PauseButton = False
Iterations = 20
ElseIf Application.ActiveCell.Row = 1 And Application.ActiveCell.Column = 10 Then
PauseButton = False
Iterations = 30
ElseIf Application.ActiveCell.Row = 1 And Application.ActiveCell.Column = 11 Then
PauseButton = False
Iterations = 60
ElseIf Application.ActiveCell.Row = 1 And Application.ActiveCell.Column = 12 Then
NoPause = True
ElseIf Application.ActiveCell.Row = 1 And Application.ActiveCell.Column = 3 Then
Call Plock   'The main sub
Else
Worksheets("Simulation").Cells(Application.ActiveCell.Row + 1, Application.ActiveCell.Column).Activate
End If
End Sub

基本上,如果活动小区是"0";A5〃;我想恢复for循环,并让它运行一次迭代。如果活动小区是"0";A6〃;我想恢复for循环,让它运行五次迭代等。

问题是,当我进入Do While循环时,我无法将光标更改为另一个活动单元格。

这有可能解决吗?还是我必须使用按钮?

我不太确定你想做什么,但如果你只是想暂停例程来更改活动单元格,也许你可以尝试这样的方法:

Sub test()
Dim newR As Integer
Dim newC As Integer
Iterations = 1
For i = 1 To 100
If Not NoPause Then
Iterations = Iterations - 1
If Iterations = 0 Then
PauseButton = True
Do While PauseButton
a = MsgBox("Change active cell?", vbYesNo)
If a = vbYes Then
newR = InputBox("new Row?")
newC = InputBox("new Column?")
End If
Cells(newR, newC).Activate
EnterPress
Loop
End If
End If
Next i
End Sub

最新更新