簡體   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