- ベストアンサー
初心者です call文の引数がかえってきません
- 初心者で、ACCESSVBAを使用して金額が変更されたら残高を更新するために、call文を使用してaaa subを呼び出していますが、wZandakaの値が正しく返ってきません。
- 質問者は初心者であり、本やサイトを参考にしながらコードを記述していますが、正しくない記述があるかもしれません。
- そのため、質問者はどなたかに助言や指導を求めています。書き方やコードの改善点を教えていただけると幸いです。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
VB/VBAのサブプロシージャの引数は基本的には ByValの値渡しになります 呼び出し元に値を返したい場合は ByRefの参照渡しにしないとできません また、1つの値だけ返すのであれば Function(関数)として定義する方法もありますよ Sub aaa(wInOut As Integer, ByRef wZandaka As Currency, wRSZandaka As Currency, wKingaku As Currency) Select Case wInOut Case 1, 4, 7 wZandaka = wRSZandaka + wKingaku Case 2, 3, 5, 6 wZandaka = wRSZandaka - wKingaku Case Else Exit Sub End Select End Sub といった具合にします 関数定義なら Function aaa(wInOut As Integer, wRSZandaka As Currency, wKingaku As Currency) as Currency dim wZandaka as Currency Select Case wInOut Case 1, 4, 7 wZandaka = wRSZandaka + wKingaku Case 2, 3, 5, 6 wZandaka = wRSZandaka - wKingaku Case Else Exit Sub End Select aaa = wZandaka End Sub として 呼び出し側は Me.[残高].Value = aaa(Me.[入出金区分].Value, objrs("残高").Value, Me.[金額].Value) といった具合に使います
お礼
すごくよくわかりました!! 1人で色々見ながらやっているのですが、なかなかうまくいかず、 callの説明をされているサイトを見たりもしたのですが、自分ののぞんでいるものに置き換えることがなかなかできなくて困っていました。 functionの書き方もこのようにするのですね! 勉強になります、是非functionも使ってみます! 本当にありがとうございました!