簡體   English   中英

在VBA中訪問用戶定義的函數時#Value錯誤

[英]#Value error while accessing user defined function in VBA

當我從VBA訪問函數時,代碼工作正常,但是當我在excel單元格中調用相同的函數( postalcode("23.0776120,72.6538530") ,出現postalcode("23.0776120,72.6538530")錯誤。我的代碼是:

Function PostalCode(latlng As String) As String

Dim xmlDoc As MSXML2.DOMDocument60
Dim xEmpDetails As MSXML2.IXMLDOMNode
Dim xParent As MSXML2.IXMLDOMNode
Dim xChild As MSXML2.IXMLDOMNode
Dim Col, Row As Integer

Set xmlDoc = New MSXML2.DOMDocument60
xmlDoc.async = False
xmlDoc.validateOnParse = False
' use XML string to create a DOM, on error show error message
If Not xmlDoc.Load("https://maps.googleapis.com/maps/api/geocode/xml?latlng=" & latlng) Then
    Err.Raise xmlDoc.parseError.ErrorCode, , xmlDoc.parseError.reason
End If

Set xEmpDetails = xmlDoc.DocumentElement
Set xParent = xEmpDetails.FirstChild

Row = 1
Col = 1

Dim xmlNodeList As IXMLDOMNodeList

Set xmlNodeList = xmlDoc.SelectNodes("//formatted_address")

 Worksheets("Sheet1").Cells(1, 6).Value = xmlNodeList.Item(0).Text
 Dim xyz As String
 PostalCode = xmlNodeList.Item(0).Text
' PostalCode = "Not Found (try again, you may have done too many too fast)"
MsgBox PostalCode

End Function

這是用戶定義函數的有據可查的限制 ,您通常不能在從工作表調用的UDF中操作或操作范圍/工作表對象。 雖然您可以進行大多數價值/資產查詢,但不能更改環境:

在工作表單元格中由公式調用的用戶定義函數不能更改Microsoft Excel的環境。 這意味着該功能不能執行以下任何操作:

  • 在電子表格上插入,刪除或格式化單元格。
  • 更改另一個單元格的值。
  • 移動,重命名,刪除工作表或將其添加到工作簿。
  • 更改任何環境選項,例如計算模式或屏幕視圖。
  • 將名稱添加到工作簿。 設置屬性或執行大多數方法。

我懷疑在VBE中使用F8鍵單步執行此代碼將識別錯誤,可能是Worksheets("Sheet1").Cells(1,6).Value

此限制的基本原理是防止無限循環/循環引用。

有一些方法可以規避此限制。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM