を使用できますByRef
。最適なプランではないかもしれませんが。
Sub Example(ByRef A As String, ByRef B As String)
A = A & "Hello"
B = B & "World!"
End Sub
Sub test()
Dim A As String
Dim B As String
A = "Test"
B = "Test"
Example A, B
Debug.Print A & " " & B
End Sub
編集
ワークシートで UDF を使用できるようにしようとしている場合は、私を完全に無視できます。
ワークシートからこれを呼び出している場合 (ソリューションが何であれ)、関数に対して常に複数 (2) の呼び出しがあると思います。関数が頻繁に変更されないと仮定すると、関数の結果をキャッシュできる場合があります。呼び出しは停止しませんが、余分な計算は停止します。
Private Cache As Object
Public Function MonsterFunction(ByVal A As Integer, ByVal B As Integer, Optional ByVal Add As Boolean = False) As Variant
Dim Key As String
Dim Result As Integer
Key = CStr(A) & IIf(Add, "+", "-") & CStr(B)
If Cache Is Nothing Then
Set Cache = CreateObject("Scripting.Dictionary")
End If
If Cache.Exists(Key) Then
MonsterFunction = Cache(Key)
Else
If Add Then
Result = A + B
Else
Result = A - B
End If
Cache.Add Key, Result
MonsterFunction = Result
End If
End Function