簡體   English   中英

VBA:如何使用真/假方法和 VLookup 代碼編寫 If 語句?

[英]VBA: How do I write an If statement using a true/false method and VLookup code?

我很難用措辭來表達問題的標題,對不起。 我創建了一個 VBA 表單。 linebx組合 bx 我有以下代碼,預填充PilotBxTailBx文本框。

我的問題是,當 linebx 填充的值不在該 linebx 下拉列表中(不在 VLookup 范圍內)時,它會發送錯誤消息

“運行時錯誤‘1004’:無法獲取 worksheetFunction 類的 VLookup 屬性”

我知道這意味着什么,我只是不知道如何解決它。

我需要代碼來PilotBxTailBx文本框,如果LineBx匹配,下拉(VLookup 范圍),如果不需要,我需要它接受輸入的LineBx編號並將PilotBxTailBx文本框留空。

如果您有任何問題或我可以提供幫助的詳細信息,請告訴我。 提前感謝您的幫助!

這是我創建的表單的視覺效果:

在此處輸入圖像描述

    Dim z As Double
    Dim h As Double
    Dim k As String
    
        z = LineBx.Value
        h = Application.WorksheetFunction.VLookup(LineBx.Value, Sheets("StepBrief").Range("A2:E43"), 1, False)
    
    If h = z Then
        k = True
        
    Else
        k = False
        
    End If
    
    If k = True Then
        TailBx.Text = Application.WorksheetFunction.VLookup(z, Sheets("StepBrief").Range("A2:E43"), 3, False)
        PilotBx.Text = Application.WorksheetFunction.VLookup(z, Sheets("StepBrief").Range("A2:E43"), 2, False)
    
    Else
        TailBx.Value = ""
        PilotBx.Value = ""
        
    End If

你可以去:

Dim h As Double
Dim k As String
    
z = LineBx.Value
h = -1
on error resume next
h = Application.WorksheetFunction.VLookup(LineBx.Value, Sheets("StepBrief").Range("A2:E43"), 1, False)
on error goto 0   

它執行您的查找,在找不到查找時不會引發錯誤。 h 將是 -1 不等於 z。 您可以使用任何值將 h 設置為,只要它不等於 z 就可以了。

我通過在頂部添加On Error Resume Next“清除”了PilotBxTailBx來抑制錯誤消息,我覺得這是一種解決問題的廉價方法,但它確實有效。


    z = LineBx.Value
    
On Error Resume Next
    TailBx.Value = ""
    PilotBx.Value = ""

    TailBx.Text = Application.WorksheetFunction.VLookup(z, Sheets("StepBrief").Range("A2:E43"), 3, False)
    PilotBx.Text = Application.WorksheetFunction.VLookup(z, Sheets("StepBrief").Range("A2:E43"), 2, False)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM