Excel VBA

时间:2016-05-11 12:53:25

标签: excel vba excel-vba reference

Dim WB As Workbook
Set WB = Workbooks.Open("foo\bar.xlsx", , True)
Debug.Print (WB.Names("named_cell").Value)
WB.Close (False)

返回

='Sheet'!$C$377

而不是单元格C377中的值。

我如何才能收到单元格的值?

3 个答案:

答案 0 :(得分:4)

如果WB.Names("named_cell")返回Name个对象,则此对象具有RefersToRange属性。返回Name对象引用的Range对象。请参阅https://msdn.microsoft.com/en-us/library/office/ff834918.aspx

所以

Debug.Print WB.Names("named_cell").RefersToRange.Value

另见Malfunction of Excel-VBA own function when open other excel-file

答案 1 :(得分:3)

几种方式:

// It's OK
geckoWebBrowser1.Navigate("javascript:Mess()"); 
// it doesn't work An unhandled exception of type 'System.AccessViolationException' occurred in Geckofx-Core.dll
using (AutoJSContext java = new AutoJSContext(geckoWebBrowser1.Window))
        {
            java.EvaluateScript("javascript:Mess(); ", (nsISupports)geckoWebBrowser1.Window.DomWindow, out outString);
        }

如果活动工作簿中存在工作簿,则不需要使用工作表对象限定命名范围(它应该是您打开的最后一个工作簿)。

答案 2 :(得分:1)

一旦建立了命名范围,Excel就知道它的Parent,所以:

Sub dural()
    Dim r As Range
    Set r = Range("named_cell")
    MsgBox r.Parent.Name & vbCrLf & r.Address(0, 0) & vbCrLf & r.Value
End Sub

是获取此范围信息的一种方法:

enter image description here

这使用 Range 对象的属性而不是 Workbook 对象。