有macros的循环,需要油门,只有按下一个新的button时移动到下一个我

几乎我有一个循环,我想贯穿,但是我不希望它进入下一个“我”,直到按下button。 我的代码如下。 我相信我的麻烦是“如果GoGo”的位置,但我已经在很多地方尝试过了。

Sub GoGo() Public GoGo As Boolean GoGo = True End Sub Sub Runn() Dim lastrow As Long, i As Long For i = 23 To 32 DoEvents If GoGo = True Then If Cells(i, 1) <> 0 Then Range("B5").Value = Cells(i, 2).Value Range("E5").Value = Cells(i, 3).Value Range("E11").Value = Range("C33").Value Application.Run ("Realcount") Application.Run ("Realcount2") End If End If Next i End Sub 

这是你正在尝试?

 Public GoGo As Boolean Sub GoGoProc() GoGo = True End Sub Sub Runn() Dim lastrow As Long, i As Long i = 23 Do DoEvents If GoGo = True Then If Cells(i, 1) <> 0 Then Range("B5").Value = Cells(i, 2).Value Range("E5").Value = Cells(i, 3).Value Range("E11").Value = Range("C33").Value Application.Run ("Realcount") Application.Run ("Realcount2") End If i = i + 1 GoGo = False End If Loop End Sub 

跟随(从评论)

不用循环,我能想到的最好的方法是使用一个无模式的用户窗体( 这样你就可以同时使用Workbook/Worksheet )和一个Nextbutton。 Nextbutton将增加行值,然后运行代码。 这样,如果你不得不离开一杯咖啡说话,你将不会使Excel繁忙;)

创buildUserform(UNTESTED)应该看起来像这样

在这里输入图像说明

将此代码粘贴到用户窗体中

 '~~> Next Button Private Sub CommandButton1_Click() Range("B5").Value = Cells(rw, 2).Value Range("E5").Value = Cells(rw, 3).Value Range("E11").Value = Range("C33").Value Application.Run ("Realcount") Application.Run ("Realcount2") rw = rw + 1 End Sub '~~> Canecel Button Private Sub CommandButton2_Click() Unload Me End Sub 

创build一个模块并粘贴这个代码

 Public rw As Long Sub Launch() rw = 23 UserForm1.Show vbModeless End Sub 

要运行你的代码,你可以直接运行Sub Launch() ,或者在你的工作表上创build一个命令button( Form Control – 我想这就是你正在使用的 ),并为它分配Sub Launch()