簡體   English   中英

VLookUpFunction VBA - 不返回所需的值

[英]VLookUpFunction VBA - not returning desired values

我目前不知所措,似乎無法理解為什么簡單的 vlookupfunction 不起作用。

Sub Button3_Click()

A = Textbox1.Value
B = ActiveWorkbook.ActiveSheet.Range("A1:G20")

BaneOfMyExistence = Application.WorksheetFunction.VLookup(A, B, 5, False)

BaneOfMyExistence = Textbox2.Value

End Sub

我搜索了很多論壇,很多人似乎都遇到了 vlookup 功能的問題。 不幸的是,我似乎找不到適用的解決方案。

我希望宏找到一個匹配(行號列在 A 列中)與 textbox1 中的數字變量,並將 textbox2 的值(也是數字)粘貼到 BaneofMyExistence 中。

我嘗試了許多不同的方法/語法,這些方法/語法給我帶來了許多不同的錯誤。 然而,當前代碼不返回任何錯誤,也不返回指定單元格中的任何值。

有人可以幫助我嗎?

您有很多問題沒有得到解答,但我相信您正試圖在一列真實數字中找到看起來像數字的文本。 簡單地說, 99<>"99"

您沒有進行任何變量聲明,因此所有變量都被隱式聲明為變體。 變體可以是真實的數字或文本或看起來像數字的文本。

A = Textbox1.Value

即使文本框中出現數字,這也會將字符串值放入 A 中。 Ia 字符串永遠不會在真實數字列中匹配。

將 B 設置為您要查找的范圍。 您正在使用您使用的語法創建一個二維變體數組。

使用 application.vlookup,您可以使用 IsError 測試“不匹配”。

您正在用 Textbox2.Value 中的值覆蓋 BaneOfMyExistence,我認為它是一個零長度字符串。 反轉此操作以將 vlookup 中的值放入 Textbox2。

option explicit

Sub Button3_Click()

    dim A as long, B as range, BaneOfMyExistence as variant

    A = clng(Textbox1.Value)
    SET B = ActiveWorkbook.ActiveSheet.Range("A1:A20")

    BaneOfMyExistence = Application.match(A, B, 0)

    if not iserror(BaneOfMyExistence) then
        ActiveWorkbook.ActiveSheet.cells(BaneOfMyExistence, "E") = Textbox2.Value
    else
        ActiveWorkbook.ActiveSheet.cells(BaneOfMyExistence, "E") = "no match"
    end if

End Sub

使用Option Explicit ,您會看到很多問題都消失了。

暫無
暫無

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

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