我目前处于机智状态,似乎无法理解为什么简单的vlookup函数无法正常工作。
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函数的问题。不幸的是,我似乎找不到合适的解决方案。
我希望宏在textbox1中找到与数字变量的匹配项(行号列在A列中),然后将textbox2的值(也是数字)粘贴到BaneofMyExistence中。
我尝试了许多不同的方法/语法,这给我带来了许多不同的错误。但是,当前代码不会返回任何错误,也不会返回指定单元格中的任何值。
有人可以帮我吗?
答案 0 :(得分:2)
您留下了许多未解决的问题,但我相信您正在尝试查找看起来像真数字列中的数字的文本。简而言之,99<>"99"
。
您没有进行变量声明,因此所有变量都隐式声明为变量。变体可以是真数字,也可以是文本或看起来像数字的文本。
A = Textbox1.Value
这将把一个字符串值放入A中,即使文本框中似乎有一个数字。字符串永远不会在一列真数字中匹配。
将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,您会发现很多问题都消失了。