No.4ベストアンサー
- 回答日時:
回答送れてごめんなさい。
しばらく、ネットがつながらなかったもので・・・
回答ですが、えーっと、大体そうです。
が、「sAは001で帰ってきて、sBは004で帰ってくる」ではなくて
「s01は001で帰ってきて、s02は004で帰ってくる」です。
ローカル変数はプロシージャ単位で考えましょう。
関数 FlKansuu 内では、
sA = "003"
sB = "004"
のコーディングあとはこの関数が終わるまでは
「sA は "003" sB は "004"」です。
関数から戻った時の
call側の引数の変数の値が
変化するByRef
変化しないのがByVal です。
細かいかも知れませんが後々混乱しますよ。
これが理解できたら次は、Sub と Function の違い使い方や
Optionalの使用など理解したらかなりいいかんじだと思います。
がんばってください
No.3
- 回答日時:
callステートメントを使うのは、プロシージャを使うときですよね。
(Function、Subプロシージャ)これらの考え方は、数学の関数に近いと思います。たとえば、変数AとBを与えて、その平均Cを出す計算をさせたいとします。そうすると、
C=(A+B)/2
と記述しますよね。
これを毎回書くのは大変なので(この場合は短いのでたいしたことはないですが)、次のように書くことにします。
C=Heikin(A,B)
ただし、Heikin(A,B)=(A+B)/2
ここで、「C=・・・」の部分が呼び出しCallステートメント、「ただし・・・」の部分がプロシージャになります。今回は計算ですが、プログラムでは、計算に限らず、いろいろな処理を書くことができます。
この、A、Bのことを引数といいます。つまり、そのプロシージャの中で処理するために必要なデータということになります。
ただ、この場合は、計算の結果がほしいのでC=・・・の記述になりますが、結果はいらない処理の場合、VBではCallステートメントを使うという決まりがあります。
上記の場合、結果がほしいときは、
C=Heikin(A,B)
と記述し、結果がいらないときは、
Call Heikin(A,B)
または
Heikin A,B
と記述することになります。
ちなみに、Subプロシージャは、結果を返さないプロシージャ、Functionプロシージャは、上記の2通りの記述方法で、両方に対応することができます。
No.2
- 回答日時:
コーディング2ヶ月ですか。
理論的に理解するには、ちとつらいですかね。
簡単に説明すると
call 関数名(引数01,引数02)
という感じで関数にデータを渡せます。
関数側では
Function 関数名(引数A,引数B)
End Function
となり
引数Aに引数01のデータが
引数Bに引数02のデータが渡されます。
渡されるデータは、呼ぶ側(call側)の引数と呼ばれる側(Sub,Function)の引数の順番で決まります。
つまり関数側の引数の順番を変えると渡されるデータも変わります。
Function 関数名(引数B,引数A)
End Function
引数Bに引数01のデータが
引数Aに引数02のデータが渡されます。
大体こんな感じです。
あともうひとつ値渡し(ByVal)と参照渡し(ByRef)があります。
これは、データを渡された側(関数側)で渡されたデータを変更したとき、
Call側の引数の変数が変化するかどうかということです。
少し難しいかもしれませんが、簡単にいうと
値渡し(ByVal)は、変化しない
参照渡し(ByRef)は、変化する
です。
宣言のしかたは
Function 関数名(ByVal 引数A , ByRef 引数B )
End Function
引数A = 値渡し(ByVal)
引数B = 参照渡し(ByRef)
になり、関数のなかでそれぞれ、引数のデータを変更すると
call側に戻ったときに引数01,引数02のデータを比べて見てください。
ひとつ理解するとヘルプを再度見たときに新たに理解できることがありますよ。
ヘルプは、結構使えるので、ぜひおぼえてください。
参考プログラムです。
Private Sub Form_Load()
Dim s01 As String
Dim s02 As String
s01 = "001"
s02 = "002"
Call FlKansuu(s01, s02)
'イミディエトウィンドウに出力
Debug.Print "s01 " & s01
Debug.Print "s02 " & s02
End Sub
Sub FlKansuu(ByVal sA As String, ByRef sB As String)
sA = "003"
sB = "004"
End Sub
この回答へのお礼
お礼日時:2001/08/23 14:18
詳しい内容ありがとうございます。
ByVal、ByRefの違いも聞きたかったのですが、そこまで教えて頂いて、
助かります。
あと、ちょっと、参考プログラムの解説をしてもらいたいです。
sAは001で帰ってきて、sBは004で帰ってくる。
でいいんですかね?混乱中。
すいませんが、お願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 高校受験 高校受験まで2週間/未だに理社が平均点以下 理社の点数が未だに平均点以下から上がらず困っています… 1 2023/01/29 18:24
- C言語・C++・C# [C言語] コメント文字列を無視して、数値データを読み込むプログラム部分について 5 2022/10/05 11:03
- 大学受験 身長187cmです。 共通テスト地理について質問です。 講義系参考書を読んでからその分野の問題を解い 1 2022/10/12 16:10
- 弁護士・行政書士・司法書士・社会保険労務士 行政書士試験の受験者層 1 2022/10/19 17:06
- その他(自然科学) 数学について・・・解析学と確立、統計学のどちら未来の社会発展に寄与すると考えますか? 2 2023/08/27 19:51
- 大学受験 参考書の勉強法について質問なのですが、参考書を一通り終わらせて、二周目を行う際、問題だけ解けば良いで 2 2023/06/30 20:19
- 国家公務員・地方公務員 公務員試験の数的処理で苦戦しています。 1 2023/01/30 08:56
- 統計学 直線の傾き(回帰係数)から相関係数を計算できるのでしょうか? 2 2022/09/16 19:28
- 中途・キャリア 転職活動の書類選考について 質問内容 転職活動中です 全員面接を謳っていない限りは間違いなく書類選考 2 2023/06/26 15:35
- 中途・キャリア 転職活動の書類選考について 質問内容 転職活動中です 全員面接を謳っていない限りは間違いなく書類選考 3 2023/06/25 07:52
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
教えて下さい
-
配列でデータが入っている要素...
-
【エクセル】測定時間がバラバ...
-
S9タイプからXタイプにデータ...
-
メモ帳(テキストデータ)をExc...
-
この行は既に別のテーブルに属...
-
VBにおいてフォーム間の変数の...
-
VBA 空白セルを削除ではない方...
-
大学のゼミのレポートがムカつ...
-
エクセルで2つの時系列のデー...
-
[C言語] コメント文字列を無視...
-
VBAを使ってOutlookメール本文...
-
ユーザーフォームのテキストボ...
-
シーケンサにパソコンからアク...
-
C# でDataTableの更新を高速化...
-
EXCELVBAでSQLserverからデータ...
-
Excelのマクロでワードのテキス...
-
0が含まれる幾何平均が「#NUM!」
-
WEBサイトの構築。表示データと...
-
CString型の文字列連結について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
教えて下さい
-
【エクセル】測定時間がバラバ...
-
配列でデータが入っている要素...
-
多量のSUMIF式を軽くしたい
-
エクセルで2つの時系列のデー...
-
Excelのマクロでワードのテキス...
-
メモ帳(テキストデータ)をExc...
-
VBA 空白セルを削除ではない方...
-
VBAを使ってOutlookメール本文...
-
Accessで該当データにフラグを...
-
合計3TBのデータのハッシュ値を...
-
シーケンサにパソコンからアク...
-
S9タイプからXタイプにデータ...
-
カンマからスラッシュに
-
VBAでシートからコンボボックス...
-
VBA 毎日取得するデータを順番...
-
ビットシフトについて
-
ユーザーフォームのテキストボ...
-
EXCELVBAでSQLserverからデータ...
-
特定のデータの抽出方法を教え...
おすすめ情報