下一个按钮用户窗体 Excel VBA

Posted

技术标签:

【中文标题】下一个按钮用户窗体 Excel VBA【英文标题】:Next buttons userform Excel VBA 【发布时间】:2018-06-23 18:12:42 【问题描述】:

我有一个管理表,其中有一列包含 True 和 False 列表。我正在构建一个用户表单 UI,以便用户可以单击下一步(现在 - 在进行下一步工作后构建上一个按钮),用户表单将在管理表中显示下一个 False 项目,其在 Sheet1 中的相应数据将显示在 Textbox1 中。

原因是管理表中的行 ID 与 Sheet1 相关。因此,如果 Sheet1 行 (31) 中的数据有问题,则管理表行 (31) 中的列 (13) 将为 False。

代码:

Dim n As Long
Private Sub CommandButton1_Click()
Dim LR As Long
LR = Sheets("Sheet1").Cells(Rows.count, "B").End(xlUp).row

n = 7
With Worksheets("Admin")
    For i = n To LR
        If .Cells(i, 13).Value = "False" Then
            With Worksheets("Sheet1")
                Me.TextBox1 = .Cells(i, 2).Value
                Exit For
            End With
        End If
    Next i
End With
n = i + 1

End Sub

这成功地转到下一个 False 项目并在 Textbox1 中正确显示。但是,它不会迭代到下一个..

无论我们使用什么逻辑来设置 Next,我都会假设 Previous 将是相同的?

谢谢大家。

【问题讨论】:

每次找到“False”时都必须“记住” i 的值,然后下次用户按 Next 时,在该值 +1 处开始循环您可以使用全局变量存储值。 好的 - 所以我将数据初始化为从第一行开始。并让这段代码运行并在最后添加 n + 1 。与我之前假设的逻辑相同吗?当你在两边都到达终点时会发生什么? 当你到达终点时通知用户。 n = 7 If n=0 then n=7 For i = n to 7 Step -1 【参考方案1】:

你可以这样做:

Sub cmdNext_Click()
    FindRow True
End Sub

Sub cmdPrev_Click()
    FindRow False
End Sub


Private Sub FindRow(bForward As Boolean)
    Const RW_START As Long = 7

    Dim LR As Long, t As Long, dir As Long, i As Long
    LR = Sheets("Sheet1").Cells(Rows.Count, "B").End(xlUp).Row

    'going forwards, or back?
    If bForward Then
        n = IIf(n = 0, RW_START, n + 1) '<< Start at top
        t = LR                          '<< towards here
        dir = 1                         '<< increasing
    Else
        n = IIf(n = 0, LR, n - 1)       '<< Start at bottom
        t = RW_START                    '<< towards here
        dir = -1                        '<< decreasing
    End If

    For i = n To t Step dir
        If Worksheets("Admin").Cells(i, 13).Value = "False" Then
            Me.TextBox1 = Worksheets("Sheet1").Cells(i, 2).Value
            n = i
            Exit For
        End If
    Next i

End Sub

【讨论】:

以上是关于下一个按钮用户窗体 Excel VBA的主要内容,如果未能解决你的问题,请参考以下文章

Excel 崩溃,VBA 用户窗体无法保存

单击保存按钮后如何在用户窗体中添加依赖于另一个组合框的excel vba组合框而不影响清除数据功能

excel VBA窗体按钮控件设置enter事件后,为啥会在启动窗体时,自动enter一次?

Excel VBA入门用户窗体开发

excel VBA窗体按钮控件设置enter事件后,为啥会在启动窗体时,自动enter一次?

Excel VBA,如果一个或多个文本框为空,如何禁用命令按钮