【发布时间】:2020-12-16 00:31:57
【问题描述】:
我有两个 Excel 工作簿。
第一个工作簿有两个工作表:“销售”和“查找”。
第二个工作簿有一张:“ID”
从第一个工作簿(销售)中,我必须读取“B”列的值,在“查找”表的 A 列中搜索它并从 B 列获取名称。
获取 ID 后,我必须写入“ID”工作簿的 E 列。
我尝试了第一部分,但它没有遍历 Sales 的单元格,也没有从“查找”中选择值。
Sub btnExport_Click()
Dim rng As Range
Dim ws1, ws2 As Worksheet
Dim MyStringVar1 As String
Set ws1 = ThisWorkbook.Sheets("Lookup")
Set ws2 = ThisWorkbook.Sheets("Sales")
Set rng = ws2.Range("B2")
With ws2
On Error Resume Next 'add this because if value is not found, vlookup fails
MyStringVar1 = Application.WorksheetFunction.VLookup(Left(rng, 6), ws1.Range("A2:C65536").Value, 2, False)
On Error GoTo 0
If MyStringVar1 = "" Then MsgBox "Item not found" Else MsgBox MyStringVar1
End With
End Sub
*** 已编辑 ***
代码已修复。它现在从 Sales 的第一个单元格读取,但不迭代。此外,在从 Lookup 迭代和获取时,它必须写入另一个工作簿。这是我无法解决的问题。
【问题讨论】:
-
你为什么使用
ActiveSheet? -
@BigBen 刚刚找到一个样本并尝试过。没有使用宏的经验。
-
在循环前加一个
Debug.Print i,看看i的实际值是多少。 -
@BigBen 我已经修改了代码。它正在工作,但没有通过销售迭代。
-
它没有迭代,因为你摆脱了循环。