尝试引用其他工作表时,将从活动工作表中提取数据

时间:2019-07-10 02:18:08

标签: excel vba

我正在尝试从工作簿中的另一个工作表中检索数据,但是当我执行代码时,单元格引用正在工作,但是它们是从当前工作表中检索,而不是从另一个工作表中检索。

我尝试使用工作表的名称以及“ Sheet7”(如下所示),一个只是从活动工作表中获取数据,另一个则产生运行时错误9。

  While found = False
      If Worksheets("Sheet7").Range("B" + CStr(i)).Value = cmbSA.Value Then
          numBuilt = Worksheets("Sheet7").Range("C" + CStr(i + 1)).Value
          found = True
      Else
          i = i + 1
      End If
  Wend

我希望if语句在i = 4时为true,但只有在i = 10(这是必需值)时才为true,仅从活动工作表中获取。

2 个答案:

答案 0 :(得分:0)

我知道您已经问过VBA问题,并且出于其他原因可能希望在VBA中进行此操作,但是有一个相当简单的公式可以不用任何代码来获取它。

使用MATCH查找您的值,并使用OFFSET来获取它。您可以从另一张纸上进行此操作。如果您明确不想使用公式,我将不做进一步解释。

答案 1 :(得分:0)

在这里循环是过大的,可能导致问题。如果未找到cmbSA.value怎么办?此外,While...Wend也已弃用。

听起来您只需要Range.Find

例如:

Dim foundCell as Range
Set foundCell = Worksheets("Sheet7").Range("B:B").Find(What:=cmbSA.Value, LookIn:=xlValues, LookAt:=xlWhole)

If Not foundCell is Nothing Then
    numBuilt = foundCell.Offset(1, 1).Value
End If