Excel 在VBA中使用VLookup检索公司名称?

Excel 在VBA中使用VLookup检索公司名称?,excel,vba,vlookup,Excel,Vba,Vlookup,我目前正在设计一个宏,可以从下拉列表中自动填充Excel中的表。基本上,在一张表格中,有一张200家公司的表格。这有一个名为经理的字段(用于照看公司的人员),其中包含一个下拉列表,其中列出了所有12位可能的经理的姓名。当我选择经理时,它会将公司名称填充到表中他们的部分 唯一的问题是,我试图在VBA中使用VLookup来检索公司名称。例如,如果我从第123行选择了一位经理,我想将列“C”中的公司名称分配给companyName变量(然后将该变量插入自动填充表中) 以下是我迄今为止的VLookup代

我目前正在设计一个宏,可以从下拉列表中自动填充Excel中的表。基本上,在一张表格中,有一张200家公司的表格。这有一个名为经理的字段(用于照看公司的人员),其中包含一个下拉列表,其中列出了所有12位可能的经理的姓名。当我选择经理时,它会将公司名称填充到表中他们的部分

唯一的问题是,我试图在VBA中使用VLookup来检索公司名称。例如,如果我从第123行选择了一位经理,我想将列“C”中的公司名称分配给companyName变量(然后将该变量插入自动填充表中)

以下是我迄今为止的VLookup代码:

companyName = Application.WorksheetFunction.VLookup(ActiveCell.Address, Sheets("Companies").Range("C8:K208"), 1, False)
我见过许多不同的VLookup方法,通常我觉得它们非常混乱。每当它尝试进行查找时,它只会说“运行时错误1004:无法获取WorksheetFunction类的VLookup属性”


非常感谢您对这里出现的问题提供的任何帮助。自从我上次以任何形式查看Visual Basic已经有6年了,而且我还没有使用Excel宏那么长时间-如果我盲目地遗漏了一些明显的内容,那么很抱歉!

来自VBA:Lookup\u value是数组第一列中的值。Lookup\u value c可以是值、引用或文本字符串

参考您显然试图使用的引用部分:在VBA中,引用是
ActiveCell
.range(“A5”)
.cells(1,2)
而不是Excel中的地址
A1
B7

companyName = Application.WorksheetFunction.VLookup(ActiveCell, _
Sheets("Companies").Range("C8:K208"), 1, False)
或者(至少在我2003年的版本中)


但是我仍然不会使用
ActiveCell

我的建议是不要在VBA中使用VLookup。这很慢,但是如果您的表只有约200个条目,它应该是可管理的。我要做的是将表读入由经理姓名键入的字典中,并使用公司名称的值

有一个VBA较少的替代方案:从 |公司经理| |:-|:-| |公司1 |经理1| 等 到 |公司|经理|公司| |:-|:-|:-| |公司1 |经理1 |公司1| 等
现在您可以为VLookup做一个单元格公式了

您是否尝试过将ActiveCell.value替换为ActiveCell.Address?是的,很遗憾,这也不起作用:(
ActiveCell
方法永远不被推荐。它充满了危险。你能分享完整的代码或相关的代码吗?我怀疑
ActiveCell.Address
可能有一个无效的值,或者是空的。哪一列包含经理的名字,哪一列包含公司的名字?如果你仔细看一下vlookup,它是在尝试的g在c列中查找并从c列返回。您不妨说
companyName=ActiveCell
。op试图查找经理并返回公司名称,因此我认为他们不知道vlookup是如何工作的。一般的屈尊堆栈溢出响应是用户10735198!最初我使用的是vlookup formula(非代码)使用下拉列表(在K列中,不是C列中),并从行中相应的C列中提取。我希望将其集成到VBA中,这就是我问的原因。我想问题是如何在VBA中实现,以便他可以将其添加到代码中。
companyName = Application.VLookup(ActiveCell, _
Sheets("Companies").Range("C8:K208"), 1, False)