To allow the user to control long operations, use a single CommandButton to control starting and stopping a looping process:
Dim Running As BooleanPrivate Sub CmdStartStop_Click() If Running Then ' Stop the process. Running = False CmdStartStop.Caption = "Start" CmdStartStop.Enabled = False Else ' Start the process. Running = True CmdStartStop.Caption = "Stop" RunLongProcess CmdStartStop.Enabled = True End IfEnd SubPrivate Sub RunLongProcess() Do While Running ' Do something repeatedly. : DoEvents LoopEnd Sub