Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


18639 / 76732 ←次へ | 前へ→

【63532】Re:callで呼び出すとき
発言  ichinose  - 09/11/16(月) 7:11 -

引用なし
パスワード
   ▼タルジャ さん:
おはようございます。
>パラメータ(Retcode)がよくわかりません。

別の例で・・・。

新規ブックの標準モジュールに

Sub test()
  MsgBox "タルジャ さん、おはようございます"
End Sub

というコードを実行すると、メッセージボックスに体裁よく指定された
「タルジャ さん、おはようございます」という文字列が表示されますよね?
これ、私たちは、MsgBox 〜  の一行でメッセージボックスを表示させていますが、
MsgBoxもVBAではないですが、既成の「プログラム」です。
中身は表示文字列の長さによって表示位置のバランスを取ったりで結構のプログラムが作られているはずです。
こういう便利なものがあるので、それを私たちは、MsgBox 〜  の一行でメッセージを表示できています。
この時、MsgBoxに渡している「タルジャ さん、おはようございます」という文字列をパラメータとか
引数(アーギュメント)等と呼んでいます。
厳密には、規定がありますが、忘れました。

これと同様に私たちが作成するVBAコードにもパラメータを付けることが出来ます。

今、四則演算を行なうプログラムを考えます。

標準モジュールに

Sub 四則演算(x As Variant, y As Variant, enzan As Variant, ans As Variant)
  '四則演算を行なう
  'input : x,y 四則演算を行なう二つの数値
  '    : enzan 演算の種類 1 足し算 2 引き算 3 掛け算 4 割り算
  'output : ans 演算の結果
  Select Case enzan
    Case 1
     ans = x + y
    Case 2
     ans = x - y
    Case 3
     ans = x * y
    Case 4
     ans = x / y
  End Select
End Sub


これは、簡単例題ですが、
このように作っておくと、四則演算がしたければ、どのプログラムからでも呼び出すことが出来ます。
(実際には、y=0で割り算すると、エラーになるので、対処が必要)。

Sub test1()
  Dim a As Long
  Dim b As Long
  Dim 答え As Long
  a = 10
  b = 2
  Call 四則演算(a, b, 1, 答え)
  MsgBox a & " + " & b & " = " & 答え
  Call 四則演算(a, b, 2, 答え)
  MsgBox a & " - " & b & " = " & 答え
  Call 四則演算(a, b, 3, 答え)
  MsgBox a & " × " & b & " = " & 答え
  Call 四則演算(a, b, 4, 答え)
  MsgBox a & " ÷ " & b & " = " & 答え
End Sub

test1を実行すれば、指定するパラメータによって、四則演算を行なってくれます。
パラメータを使う方法が情報をプロシジャーから、プロシジャーに渡す方法としては、一番良い方法とされています。

こんな説明でどうでしょうか?

1 hits

【63524】callで呼び出すとき タルジャ 09/11/15(日) 19:58 質問
【63526】Re:callで呼び出すとき よろずや 09/11/15(日) 21:12 回答
【63527】Re:callで呼び出すとき ichinose 09/11/15(日) 21:35 発言
【63528】Re:callで呼び出すとき タルジャ 09/11/15(日) 22:30 お礼
【63532】Re:callで呼び出すとき ichinose 09/11/16(月) 7:11 発言
【63541】Re:callで呼び出すとき タルジャ 09/11/16(月) 19:36 お礼
【63530】Re:callで呼び出すとき タルジャ 09/11/15(日) 22:45 お礼

18639 / 76732 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free