我试图运行代码来使用sap_a和sap_b(用户表单中的两个文本框)来查找变量 "Run"。我写的代码是为了让输入sap_a和sap_b值的人可以在其中一个框中输入值,然后'Run'变量就会被找到,这就是ErrorCheck1存在的原因。ErrorCheck2的存在只是为了在sap_ab中的值无法与'Run'变量匹配时提供一条消息。我遇到的问题是,即使sap_a或sap_b中的一个值不正确,这段代码也会生成一个 "Run "值(即sap_a是一个在电子表格中确实存在的值,sap_b是一个在电子表格中不存在的假值,而一个 "Run "变量仍然被生成)。对于我的代码的问题或者你看到的问题,你有什么具体的意见吗?代码附后。
谢谢你!我正在尝试运行代码来使用电子表格。
Private Sub SearchButtonTEST_Click()
Dim sap_a As Variant
Dim sap_b As Variant
Dim Run_ As Variant
Sheets("R_Database Sheet").Activate
sap_a = textbox5.Value
sap_b = textbox8.Value
If sap_a = "" And sap_b = "" Then
Run_ = ""
Let textbox1.Text = Run_
Msgbox "Must enter SAP Codes in SAP # A and SAP # B to search."
Exit Sub
Else
Check1:
On Error GoTo ErrorCheck1
Run_ = Application.WorksheetFunction.Index(Sheets("R_Database Sheet").Range("A:A"), Application.WorksheetFunction.Match(CLng((sap_a)), Sheets("R_Database Sheet").Range("E:E"), Application.WorksheetFunction.Match(CLng((sap_b)), Sheets("R_database sheet").Range("H:H"), 0)))
Let textbox1.Text = Run_
Check2:
On Error GoTo ErrorCheck2
Run_ = Application.WorksheetFunction.Index(Sheets("R_Database Sheet").Range("A:A"), Application.WorksheetFunction.Match(CLng((sap_b)), Sheets("R_Database Sheet").Range("E:E"), Application.WorksheetFunction.Match(CLng((sap_a)), Sheets("R_database sheet").Range("H:H"), 0)))
Let textbox1.Text = Run_
Exit Sub
Check3:
Msgbox "No data found for specified SAP #'s."
End If
Exit Sub
ErrorCheck1:
Resume Check2
ErrorCheck2:
Resume Check3
End Sub
你的代码将更容易管理,如果你放弃使用 Worksheetfunction
而只用 Application.Match
如果你包括 worksheetfunction
那么如果没有匹配,就会引发运行时错误(需要棘手的错误处理)。 如果你放弃它,那么没有匹配的情况下,只会返回一个 错误值 您可以使用 IsError()
. 我个人觉得这样更容易管理。
Private Sub SearchButtonTEST_Click()
Dim sap_a As Variant, sap_b As Variant
Dim ws As Worksheet, mA, mB
Set ws = Sheets("R_Database Sheet")
sap_a = Trim(textbox5.Value)
sap_b = Trim(textbox8.Value)
If sap_a = "" And sap_b = "" Then
textbox1.Text = ""
MsgBox "Must enter SAP Codes in SAP # A and SAP # B to search."
Exit Sub
Else
mA = Application.Match(CLng(sap_a), ws.Range("E:E"), 0)
mB = Application.Match(CLng(sap_b), ws.Range("H:H"), 0)
If Not IsError(mA) Then
textbox1.Text = ws.Cells(mA, "A")
ElseIf Not IsError(mB) Then
textbox1.Text = ws.Cells(mB, "A")
Else
textbox1.Text = "Not found!"
End If
End If
End Sub