[英]VBA Evaluate function not working. Error 2015
我正在嘗試將OsiSoft Pi Datalink與Excel VBA連接起來,並將輸出放到變量中以進行進一步的VBA處理。
在excel單元格中運行命令時,它可以正常工作,但是當我嘗試在VBA中運行命令時,出現“錯誤2015”
這是在單元格中正常工作的代碼:
= PITimeDat("PP2941FIC01_PV_S", "7/07/2018 11:01:58 AM", "", "interpolated")
將其轉換為VBA:
Sub getPiData()
Dim tagName As String
tagName = "PP2941FIC01_PV_S"
Dim timeStamp As String
timeStamp = "7/07/2018 11:01:58 AM"
Dim rootPath As String
rootPath = ""
Dim retrieveMode As String
retrieveMode = "interpolated"
Dim result As String
result = CStr(Application.Evaluate("=PITimeDat(tagName, timeStamp, rootPath, retrieveMode)"))
Debug.Print (result)
End Sub
我檢查了以下VBA參考,它們似乎也是正確的:
在用戶指南中沒有可用的信息,也沒有我可以在互聯網上找到的將VBA正確連接到Pi Datalink的信息。
我在stackoverflow上找到了它,但沒有解釋問題:
我可能缺少真正基本的東西,但似乎我正在VBA中執行與單元中完全相同的代碼。 單元格返回一個值,而VBA剛返回一個錯誤。
在此先感謝您的幫助
cyboashu提出的觀點是一個很好的觀點。 但是,由於語法的原因,您可能還會收到此錯誤。
使用Evaluate
,必須完全按照您希望對其進行評估的方式傳遞字符串。 您的代碼正在傳遞變量的名稱,而不是它們的值。 如果我可以簡化一個例子。 以下代碼將返回錯誤(在這種情況下為2029,這是#NAME錯誤):
Dim dat As Variant
Dim txt As String
txt = "25 December 1966"
dat = Application.Evaluate("=DateValue(txt)")
在此示例中,您將需要創建字符串,以便對txt
的值進行求值,如下所示:
Dim dat As Variant
Dim txt As String
txt = "25 December 1966"
dat = Application.Evaluate("=DateValue(""" & txt & """)")
我懷疑這是原因,因為如果必需的字符串中缺少反逗號,則Evaluate將返回2015錯誤。 例如,這樣做:
Dim dat As Variant
Dim txt As String
txt = "25 December 1966"
dat = Application.Evaluate("=DateValue(" & txt & ")")
我沒有庫可以測試您的確切代碼,但是請嘗試重寫您的評估字符串以合並變量的值,並記住也要傳入逗號。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.