我有1个组合框[Vendor_Number_CO_List]和1个文本框[Vendor_Name_Box_CO]。他们两个在excel中都有自己的Cells值“ B2:C15452”。我只想更改ComboBox,TextBox会自动遵循指向单元格中的值。 我正在使用VLOOKUP函数,但成功,但仅在“ C9887”下显示TrueValue,如果在C9887以上,则显示FalseValue ...文本框/单元格范围是否有任何限制?
我在VBA上是一个全新的人,我昨天才刚开始做这件事。我非常喜欢它。我想进行这种事情,所以请您帮忙解决这个问题。
我还尝试将范围缩短为:“ B2:C9887”,并且仅显示FalseValue。 “ C2:C9887”和“ C9887:15452”的唯一区别是其单元格值。 “数字”和“单词与数字的组合”。
这是我的代码,
Private Sub Vendor_Number_CO_List_Change()
Dim c, d As Variant
c = Vendor_Number_CO_List.Value
d = Application.VLookup(c, _
ThisWorkbook.Sheets("Vendor Database").Range("B2:C15452"), 2, False)
Vendor_Name_Box_CO.Value = IIf(IsError(d), "Vendor Not Found.", d)
End Sub
我想当组合框的“ B2:B15452”中的指针值显示为Excel中的“ C2:C15452”值时。请您对此提供建议。
答案 0 :(得分:0)
恭喜!除了您设计的错误条件外,您的代码似乎运行良好。那行不通。下面的代码显示了如何正确实现您的想法。
Private Sub Vendor_Number_CO_List_Change()
Dim c As Variant, d As Variant
Dim Rng As Range
c = Vendor_Number_CO_List.Value
Set Rng = Sheets("Vendor Database").Range("B2:C15452")
On Error Resume Next
d = Application.VLookup(c, Rng, 2, False)
If Err.Number Then d = "Vendor Not Found"
' If Len(d) = 0 Then d = "Vendor Not Found"
Vendor_Name_Box_CO.Value = d
End Sub
VLOOKUP找不到部分单元格值。因此,未能在“ ABC-1234”中找到“ 1234”并不表示编码错误。您可以尝试实现以下逻辑。
您对变量的命名可能会更加公平。 c
可能没有足够的描述性,而Vendor_Number_CO_List
可能过于描述性。如果避免使用下划线和全大写,则代码将更具可读性。