VBA 用户表单代码仅在 sheet 可见时有效

VBA user-form code only works when sheet is visible

我确定我刚刚犯了一个小学生错误,但我看不到它:( 我有一个搜索作品 sheet(sheet 2) 并在列表框中显示结果的用户表单,但代码仅在 excel 可见并且 sheet 被搜索选中。任何建议都会收到:)

Private Sub Branch_Search_Button_Click()
'branch search
Dim rownum As Long
Dim searchrow As Long

Sheet5.Range("A2:C9999").ClearContents
rownum = 2
searchrow = 2
Do Until Sheet2.Cells(rownum, 1).Value = ""
    If InStr(1, Sheet2.Cells(rownum, 2).Value, TextBox1.Value, vbTextCompare) > 0 Then
        Sheet5.Cells(searchrow, 1).Value = Cells(rownum, 1).Value
        Sheet5.Cells(searchrow, 2).Value = Cells(rownum, 2).Value
        Sheet5.Cells(searchrow, 3).Value = Cells(rownum, 3).Value
        searchrow = searchrow + 1
    End If
    rownum = rownum + 1
Loop

If searchrow = 2 Then
    MsgBox "Area not found"
    Exit Sub
End If

ListBox2.RowSource = "Area_Search!a1:c" & Range("c" & Rows.Count).End(xlDown).Row
End Sub

就是这样!感谢您的帮助 Super Symmetry 真的很感激!!! :D

可能的解决方案

您应该完全限定所有您的范围。以下内容可能会修复您的错误。请注意以'*

开头的评论
Private Sub Branch_Search_Button_Click()
'branch search
Dim rownum As Long
Dim searchrow As Long

    Sheet5.Range("A2:C9999").ClearContents
rownum = 2
searchrow = 2
Do Until Sheet2.Cells(rownum, 1).Value = ""
    If InStr(1, Sheet2.Cells(rownum, 2).Value, TextBox1.Value, vbTextCompare) > 0 Then
        '* Change Sheet2 to the appropriate sheet code
        Sheet5.Cells(searchrow, 1).Value = Sheet2.Cells(rownum, 1).Value
        Sheet5.Cells(searchrow, 2).Value = Sheet2.Cells(rownum, 2).Value
        Sheet5.Cells(searchrow, 3).Value = Sheet2.Cells(rownum, 3).Value
        searchrow = searchrow + 1
    End If
    rownum = rownum + 1
    Loop

If searchrow = 2 Then
MsgBox "Area not found"
Exit Sub
End If

'* change Sheet5 to the appropriate sheet code
ListBox2.RowSource = "Area_Search!a1:c" & Sheet5.Range("c" & Rows.Count).End(xlDown).Row
End Sub