如何使用vlookup vba访问已关闭的Excel工作簿
我正在尝试创建一个Excel VBA宏,该宏使用VLOOKUP访问封闭工作簿中的一系列单元格。我不太擅长使用VBA编辑器,但它似乎没有显示很多关于错误的有用信息如何使用vlookup vba访问已关闭的Excel工作簿,vba,excel,Vba,Excel,我正在尝试创建一个Excel VBA宏,该宏使用VLOOKUP访问封闭工作簿中的一系列单元格。我不太擅长使用VBA编辑器,但它似乎没有显示很多关于错误的有用信息 Sub WorkBookWithData() Dim currentWb As Workbook Set currentWb = ThisWorkbook Dim currentWs As Worksheet Set currentWs = currentWb.Sheets(1) Dim strF
Sub WorkBookWithData()
Dim currentWb As Workbook
Set currentWb = ThisWorkbook
Dim currentWs As Worksheet
Set currentWs = currentWb.Sheets(1)
Dim strFormula As String
strFormula = "=VLOOKUP(currentWs.Range("B2"),'Macintosh HD:Users:myself:Documents:l[Master_Terms_Users.xlsm]Master_Terms_Users.csv'!A1:B222,2,false)"
currentWs.Range("C2").Formula = strFormula
End Sub
Excel VBA编辑器在“strFormula=“=VLOOKUP…”部分挂起
谢谢您的评论
代码中的主要问题是这一行:
strFormula = "=VLOOKUP(currentWs.Range("B2"),'Macintosh HD:Users:myself:Documents:l[Master_Terms_Users.xlsm]Master_Terms_Users.csv'!A1:B222,2,false)"
由于此代码currentWs.Range(“B2”)
。我们知道您希望指示当前工作表(同一工作表)的范围(“B2”)。因此,您可以使用以下方法:
strFormula = "=VLOOKUP(B2,'Macintosh HD:Users:myself:Documents:l[Master_Terms_Users.xlsm]Master_Terms_Users.csv'!A1:B222,2,false)"
strFormula = "=VLOOKUP(" & currentWs.name & "!B2,'Macintosh HD:Users:myself:Documents:l[Master_Terms_Users.xlsm]Master_Terms_Users.csv'!A1:B222,2,false)"
为什么?它可以只使用B2
,因为您将公式设置为同一工作表中的单元格。因此,不需要指示工作表名称
如果要设置来自其他工作表的单元格,则需要在这种情况下指示工作表名称
strFormula = "=VLOOKUP(B2,'Macintosh HD:Users:myself:Documents:l[Master_Terms_Users.xlsm]Master_Terms_Users.csv'!A1:B222,2,false)"
strFormula = "=VLOOKUP(" & currentWs.name & "!B2,'Macintosh HD:Users:myself:Documents:l[Master_Terms_Users.xlsm]Master_Terms_Users.csv'!A1:B222,2,false)"
这看起来和我以前的完全不同,但它确实有效
Sub Check_Master_Values()
Dim newCurWb As Workbook
Set newCurWb = Workbooks(2)
newCurWb.Activate
newCurWb.Sheets(1).Range("C2").Formula = "=VLOOKUP(B2,'Macintosh HD:Users:myself:Documents:[Master_Terms_Users.xlsm]Master_Terms_Users.csv'!$A$1:$B$269,2,FALSE)"
End Sub
在我的第一次尝试中,我没有遵循从工作簿到工作表,再到范围的分配链。正如您在这段代码中看到的,我将一个新工作簿变暗-然后是大喜乐时刻,我需要将它分配到正确的打开工作簿。然后,我激活了工作簿,最后访问了工作表对象和范围
我现在也知道,我的工作簿选择编号将根据打开的其他工作簿的数量而有所不同。这本书不起作用,因为在这个过程中,这本书引用的工作簿发生了变化。这可能也是我的初始代码不起作用的原因,除了VLOOKUP中的错误编码之外
如果有一种方法可以指定正在运行的工作簿,那就太好了
感谢所有在VLOOKUP部分提供帮助的人。
1
首先打开第二个工作簿。2
在第一个工作簿中,手动键入VLOOKUP公式。3
关闭第二个工作簿4
现在VLOOKUP公式将显示路径。按原样复制该公式。5
strFormula=您需要的公式复制的currentWs.Range(“B2”)
内部引号没有任何意义:)我猜是这样的(没有MAC来测试它)strFormula=“=VLOOKUP(B2,'Macintosh HD:Users:My:Documents:l[Master\u Terms\u Users.xlsm]Master\u Terms\u Users.csv'!A1:B222,2,false)”