我正在 Excel VBA 中構建一個自定義函式,以接收具有 Webull 分布的陣列的第 n 個(此處:第 5 個)元素。這有效,但是我無法對結果進行進一步的計算,例如簡單的乘法而不會出錯。

Function weib(xr, shape, scaler)
n = Application.Weibull_Dist(xr, shape, scaler * 100, 0)
weib = n
End Function
Function good(xr, shape, scaler)
n = Application.Index(Application.Weibull_Dist(xr, shape, scaler * 100, 0), 5, 0)
good = n
End Function
Function nogood(xr, shape, scaler)
n = Application.Index(Application.Weibull_Dist(xr, shape, scaler * 100, 0), 5, 0) * 1
nogood = n
End Function
為什么“nogood”功能不起作用?它只在最后添加 * 1 - 我該如何解決?
uj5u.com熱心網友回復:
在測驗中,n是Variant一個下限為 的陣列1。Type Mismatch嘗試乘以 1 時會導致 a 。所以一個(劣等的)解決方案是:
Function good(xr, shape, scaler)
n = Application.Index(Application.Weibull_Dist(xr, shape, scaler * 100, 0), 5, 0)
good = n(1)
End Function
Function nogood(xr, shape, scaler)
n = Application.Index(Application.Weibull_Dist(xr, shape, scaler * 100, 0), 5, 0)
nogood = n(1) * 1
End Function
更好的解決方案是在呼叫中使用1而不是:0Index
Function good(xr, shape, scaler)
n = Application.Index(Application.Weibull_Dist(xr, shape, scaler * 100, 0), 5, 1)
good = n
End Function
Function nogood(xr, shape, scaler)
n = Application.Index(Application.Weibull_Dist(xr, shape, scaler * 100, 0), 5, 1) * 1
nogood = n
End Function
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/358947.html
上一篇:比較列中的單元格并將值寫入新列
下一篇:在VBA中的另一個變數中存盤一列
