第7講 結果を報告しない社員

第12話 引数の名前

Private Sub CommandButton1_Click()
  Dim a As Integer, b As Integer, c As Integer
  a = Cells(6, 2)
  b = Cells(7, 2)
  c = Cells(8, 2)
  Call wa(a, b, c)
End Sub
Private Sub CommandButton2_Click()
  Range("B6:B9").Select
  Selection.ClearContents
  Cells(1, 1).Select
End Sub
Sub wa(
a As Integer, b As Integer, c As Integer)
  Cells(9, 2) =
a + b + c
End Sub

Private Sub CommandButton1_Click()
  Dim a As Integer, b As Integer, c As Integer
  a = Cells(6, 2)
  b = Cells(7, 2)
  c = Cells(8, 2)
  Call wa(a, b, c)
End Sub
Private Sub CommandButton2_Click()
  Range("B6:B9").Select
  Selection.ClearContents
  Cells(1, 1).Select
End Sub
Sub wa(
x As Integer, y As Integer, z As Integer)
  Cells(9, 2) = x + y + z
End Sub
と変更すると、
vba入門→(実行ボタン)visual basic
というわけで結果は同じです。
では、
Private Sub CommandButton1_Click()
  Dim a As Integer, b As Integer, c As Integer
  a = Cells(6, 2)
  b = Cells(7, 2)
  c = Cells(8, 2)
  Call wa(
a, b, c)
End Sub
Private Sub CommandButton2_Click()
  Range("B6:B9").Select
  Selection.ClearContents
  Cells(1, 1).Select
End Sub
Sub wa(
x As Integer, y As Integer, z As Integer)
  Cells(9, 2) = a +
b + c
End Sub
ならどうでしょう。
答えは30行下。


































答え

vba入門→(実行ボタン)入門
結果については、以外でも何でもありませんね。
そうです。
変数(箱)の適応範囲の問題です。
VBA
CommandButton1_Clickで宣言された変数a,b,cは赤の囲いのみで有効ですので、
waのa,b,cは別の箱です。
もちろん、C++やJavaなどではエラーします。
waにおいては変数が宣言されていないからです。
VBAにおいてエラーしないのは、
宣言していないときは、
VBAの場合自動的にバリアント型の変数として宣言されるのでしたね。
(実は、社員(または子分)という名称を会社に変更することを検討しています。
箱は、社員専用のものだと表現してきましたが、
箱は、その会社(今まで社員と呼んでいたもの)にしかない(にしか置いてない)
といった方がわかりやすいのでは、という判断があるからです。
名称を変更するとなると、
もちろん、今まで会社と言っていたものも別名称に変更しなければなりません。
変数の適用範囲について忘れないようにしましょう。)

以上の結果をまとめると、
初心者
呼び出す側(Callする側=仕事を依頼する側)の引数の名前と
呼び出される側(Callされる側=仕事を依頼される側)の引数の名前は、
一致していなくてもよいのですが、
呼び出される側では、引数の型を宣言しているwa(x As Integer, y As Integer, z As Integer)
カッコ内と同じ変数名を使用しなければならないということです。

さて、結果を報告しない社員を使う演習をたくさんしたいところですが、
それは、後の課題として
結果を報告する社員=Functionプロシージャ
に話題を変えることにしましょう。


第11話へ 第8講第1話へ

トップ

vc++講義へ

初心者のための世界で一番わかりやすいVisual C++入門基礎講座
初心者のための世界で一番わかりやすいVisual Basic入門基礎講座へ
vb講義へ
VB講義基礎へ
初心者のためのJava 入門 基礎から応用まで
数学研究室に戻る