簡體   English   中英

如何在 VBA 中調用函數/返回值?

[英]How do I call a function/return a value in VBA?

我正在嘗試編寫一個方法,並且對於每一步我都必須調用另一個方法(我將其編碼為一個單獨的 Sub)。

Sub implicit()

'Setting limits and stepsize
x0 = 0
xfinal = 100
h = 5
Dim y2 As Double
Dim y As Double

'Calculating number of intervals
n = (xfinal - x0) / h

'Setting initial value
y = 100000

'Loop for implicit method
For i = 1 To n
    Call methodN(y)
    y2 = y + h * (0.1 * y2 - 0.0000008 * y2 ^ 2)
    Cells(2 + i, 3) = y2
    y = y2
Next i

End Sub


'N method
Sub methodN(y)
y2 = y - (y * (1 - 0.1 * h + 0.0000008 * h * y) - y) / (1 - 0.1 * h + 0.0000016 * h * y)
End Sub

當我將 Return y2 作為最后一行放在第二個 sub 中時,出現編譯器錯誤。 我知道我沒有正確調用 Sub 並且我沒有返回 y2 值。

在 VBA 中,Sub 是非返回方法。 您需要使用 Function 代替,然后可以返回一個值

簡而言之,它應該如下所示:

Function methodNewton(y)

y2 = y - (y * (1 - 0.1 * h + 0.0000008 * h * y) - y) / (1 - 0.1 * h + 0.0000016 * h * y)

methodNewton = y2

End Function

或更簡單地說:

Function methodNewton(y)
  methodNewton = y - (y * (1 - 0.1 * h + 0.0000008 * h * y) - y) / (1 - 0.1 * h + 0.0000016 * h * y)
End Function

然后這樣稱呼它:

y2 = methodNewton(y)

但你缺少一個h變量,所以可能是這樣的:

Function methodNewton(y, h)
  methodNewton = y - (y * (1 - 0.1 * h + 0.0000008 * h * y) - y) / (1 - 0.1 * h + 0.0000016 * h * y)
End Function

然后這樣稱呼它

y2 = methodNewton(y, h)

暫無
暫無

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

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