繁体   English   中英

下一步按钮用户窗体Excel VBA

[英]Next buttons userform Excel VBA

我有一个管理表,其中包含一列包含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将是相同的?

多谢你们。

您可以执行以下操作:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM