下面的VBA代码应该1)选择另一个文件中的一系列单元格2)在活动文件中插入一个新列3)当它通过C列中的每一行时,它会查找相应的值。来自#1 4)的另一个文件中的单元格范围输入其正在查找的列中的列中的值
然而,它只是不起作用,我不确定这是一个新手有什么不对.. 请帮忙。
Sub Translate()
Dim PartName As String
Dim CellName As String
Dim PartNameList As Range
Dim i As Integer
Set PartNameList = Workbooks("C:\Users\" "\Desktop\Part name translation.xlsx").Worksheets("Reference").Range("A1:B2000")
Worksheets("Initial").Columns("D").Insert
For i = 2 To Range("C2:C3000").Count
If IsEmpty("C" & i) = True Then Exit For
PartName = WorksheetFunction.VLookup(Range("C" & i), PartNameList, 2, False)
Range("C" & i).Value = PartName
Next i
End Sub
答案 0 :(得分:1)
您没有传递有效的工作簿名称:
Set PartNameList = Workbooks( _
"C:\Users\" "\Desktop\Part name translation.xlsx"). _
Worksheets("Reference").Range("A1:B2000")
您似乎缺少一个环境变量,这应该解决它:
dim uName as String: uName = Environ("Username")
Set PartNameList = Workbooks( _
"C:\Users\" & uName & "\Desktop\Part name translation.xlsx"). _
Worksheets("Reference").Range("A1:B2000")
但是,如果工作簿已经打开,您不需要像这样完全限定它,您只需使用文件名:
Set PartNameList = _
Workbooks("Part name Translation.xlsx").Worksheets("Reference").Range("A1:B2000")
最后,如果工作簿没有打开,我认为你需要打开它,首先:
dim uName as String: uName = Environ("Username")
dim wbPartName as Workbook
Set wbPartName = Workbooks.Open( _
"C:\Users\" & uName & "\Desktop\Part name translation.xlsx")
Set partNameList = wbPartName.Worksheets("Reference").Range("A1:B2000")