[英]VBA - user defined type not defined
我對這個錯誤的所有搜索都沒有幫助。 這應該很簡單……我的小模塊 [名為 FTA] 包含以下代碼:
Public Type AddMult
Added As Double
Multiplied As Double
End Type
Function test(A As Double, B As Double) As AddMult
test.Added = A + B
test.Multiplied = A * B
End Function
該模塊編譯干凈。 然后,嘗試將工作表單元格值設置為函數返回的類型成員之一,我使用以下語法。
=test.added(1,2)
它會導致“用戶定義的類型未定義”彈出錯誤,單元格顯示#NAME?。 我如何讓它顯示正確的值 3? 正如您可以想象的那樣,這不是關於簡單的數學,而是關於調用返回類型的函數,然后在工作表中使用該類型的一個成員的能力。 我的 Excel 是 Office Professional Plus 2010 的一部分。
您可以創建兩個可用作 UDF 的函數,然后讓這些函數中的每一個調用您現有的函數,例如:
Public Type AddMult
Added As Double
Multiplied As Double
End Type
Function test(A As Double, B As Double) As AddMult
test.Added = A + B
test.Multiplied = A * B
End Function
Function test_added(A As Double, B As Double) As Double
test_added = test(A, B).Added
End Function
Function test_multiplied(A As Double, B As Double) As Double
test_multiplied = test(A, B).Multiplied
End Function
然后,您可以在 Excel 單元格中使用=test_added(1,2)
。
這是 YowE3K 的補充,盡管他們的例子確實是最好的選擇。 這使用一個可選的布爾值來查看從 AddMult 返回哪個值
Public Type AddMult
Added As Double
Multiplied As Double
End Type
Function test(A As Double, B As Double, Optional returnMulti As Boolean = False) As Double
Dim am As AddMult
am.Added = A + B
am.Multiplied = A * B
If returnMulti = True Then
test = am.Multiplied
Else
test = am.Added
End If
End Function
我遇到了這個問題,發現在 subs 解決問題之前確保在模塊的開頭定義類型。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.