1

几乎我有一个想要运行的循环,但是我不希望它进入下一个“i”,直到按下按钮。我的代码如下。我相信我的麻烦是“If 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
4

1 回答 1

1

这是你正在尝试的吗?

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同时使用) 。NextNext按钮将增加行值,然后运行代码。这样,如果您不得不离开去喝杯咖啡,您就不会让 Excel 忙碌;)

创建应该如下所示的用户表单(未测试)

在此处输入图像描述

将此代码粘贴到用户表单中

'~~> 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

创建一个模块并将此代码粘贴到那里

Public rw As Long

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

要运行您的代码,您可以Sub Launch()直接运行或在工作表上创建一个命令按钮(表单控件 - 我猜这就是您正在使用的)并分配Sub Launch()给它。

于 2013-04-16T19:32:18.667 回答