访问命名范围中的值

时间:2017-01-19 23:35:21

标签: excel vba

这是我想要做的一个非常简单的例子。我有两个命名范围。第一个"燃料",其值为0.3,硬编码。第二个" Bill",引用工作簿中B2的值,然后将其乘以(1 +燃料)。当我参考"比尔"在单元格" C2"中,我得到650的正确输出。

enter image description here

使用VBA,我如何得到命名范围的输出(在这种情况下为650)" Bill"直接无需先参考"比尔"在电子表格上然后使用Range(" C2")来获取值?以下是我尝试过的几件事。

Sub named_range_value()

Dim wb As Workbook

Set wb = Workbooks("test")


MsgBox Range("bill") 'Run-time error '1004': Method 'Range' of object '_Global' failed

For Each nr In wb.Names
MsgBox nr    'Loops three times and returns:
            '=#NAME
            '=Sheet1!$B$2*(1+fuel)
            '=0.3
Next

End Sub

1 个答案:

答案 0 :(得分:2)

Application.Evaluate是你的朋友。它主要是为了在您直接在Excel中输入时获得预期效果。

x = Application.Evaluate("Bill")
y = Application.Evaluate(Names("Bill").Value)
Debug.Print x, y

两者都有效。第一种形式是短而直的。第二种是更明确的,有时可能对消除歧义有用。