【问题标题】:Program to run through functions in a single button (1 function = 1 click)在单个按钮中运行功能的程序(1 个功能 = 1 次单击)
【发布时间】:2021-04-14 02:18:31
【问题描述】:

我正在尝试编写一个在您每次单击时运行多个功能的按钮。我正在考虑运行一个循环,但似乎在库中找不到合适的循环语法。

这就是我认为应该的样子(几个月没碰过 VBA Excel)

Private Sub CommandButton15_Click() 
    i As Click
    r As Counter

    i = CommandButton15.Click

    For Each i In UserForm1    
        If r = 1 Then
            TextBox1.Text = "Do 1st function"
        ElseIf r = 2 Then
            TextBox1.Text = "Do 2nd function"
        Else
            TextBox1.Text = "Do 3rd function"
        End If
    Next i
End Sub

代码和按钮/文本框位于出现的用户表单中。 感谢是否有人可以帮助找出语法或示例。

谢谢!

【问题讨论】:

    标签: excel vba button


    【解决方案1】:

    在您的用户表单中,存储一个全局变量并在您的按钮的 Click 事件中增加计数器。

    Option Explicit
    
    Private clickCount As Long
    
    Private Sub CommandButton15_Click()
            
        clickCount = clickCount + 1
        
        Select Case clickCount
            Case 1
                TextBox1.Text = "Do 1st function"
            Case 2
                TextBox1.Text = "Do 2nd function"
            Case Else
                TextBox1.Text = "Do 3rd function"
        End Select
    End Sub
    

    【讨论】:

    • 如果clickCount 没有在除CommandButton15_Click 之外的任何其他过程中使用,那么不要将其设为全局变量,而应设为局部静态变量。因此在过程CommandButton15_Click 中声明Static clickCount As Long。 • 另请参阅Static statement • 好的做法是使变量尽可能本地化。
    【解决方案2】:

    在我看来,您有两个简单的选择:

    • 如果您在工作表中使用您的代码,您可以在隐藏单元格中存储一个“currentStep”标志。 (可能是最后一行,最后一列,一个)
    • 如果您没有工作表,或者您不使用它,也许您可​​以创建一个简单的 txt 文件,将您的标志存储在那里,并在每次运行代码时加载它。

    在这两种情况下,在读取 'currentStep' 值后,您可以决定运行哪一部分代码。

    【讨论】:

      【解决方案3】:

      感谢您的所有回答!

      我还没有尝试过,但好消息是我最终通过一个简单的 If-Else 没有循环函数找到了答案。

      Option Explicit
      Public i As Integer
      Private Sub CommandButton15_Click()
      
          If i = 0 Then
              TextBox1.Text = "Do 1st function"
              i = 1
          ElseIf i = 1 Then
              TextBox1.Text = "Do 2nd function"
              i = 2
          Else
              TextBox1.Text = "Do 3rd function"
              i = 0
          End If
      
      
      End Sub
      

      变量我必须是全局变量,但不确定原因,因为如果它是局部变量,它会给出“类型块”错误。

      【讨论】:

        猜你喜欢
        • 2016-09-07
        • 1970-01-01
        • 2013-03-02
        • 1970-01-01
        • 1970-01-01
        • 2021-10-03
        • 2013-10-31
        • 2022-07-16
        相关资源
        最近更新 更多