- ベストアンサー
VBAのサンプルコードの違いと引数のエラーについて
- VBAについて質問です。サンプルコードの違いと引数のエラーについて教えてください。
- 質問文章では、VBAのサンプルコードについて、2つの違いと引数のエラーについてお聞きしています。
- 質問内容はVBAのサンプルコードの違いと引数のエラーについてです。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
>Call sample1 "abc" の部分がエラーになってしまうのですが なぜでしょうか? ごめんなさい、コピー&ペーストで文を書いてたのでミスしました。No.2さんが既に回答されていますが..... × Call sample1 "abc" ↓↓↓↓↓ ○ Call sample1("abc") または ○ sample1 "abc" 上記の2種どとらでもかまいません、私の場合は基本的には後者の記述をしています。 前者の場合はCall文でsample1が関数ではなくプロシージャの呼び出しであることを明確にしています。 No.2さんへのお礼で >最初から ・・・・・・・・・・・ にしちゃえばいいのに。 と思ってしまいます。 この程度のコードでは確かにそうですが実際のプログラムではここまで単純なのはそうはありません。 考え方の基本としては「同じ機能のコードは一つにまとめる」こうすることでプログラムのあちこちで同じコードをその都度書かなくてもその機能のプロシージャ呼び出すだけでよくなります、機能の修正が必要な場合も一ヶ所の修正だけで済みます。
その他の回答 (2)
- temtecomai2
- ベストアンサー率61% (656/1071)
サンプル 1 の中身はとりあえず置いといて、 Sub sample1(a As String) sample1 は a という文字列型の引数を必要としていて、それを省略できないように作ってあるため、F5 で単独実行ができない。 Option Explicit Sub sample2() Call sample1("abc") End Sub Sub sample1(a As String) MsgBox a End Sub
お礼
Call sample1("abc") のように、カッコが必要なのですね。 自分のパソコンで実験したらうまく行きました。 しかしこのような使い方をする機会は多々あるのでしょうか? 最初から Sub sample3() Dim a As String MsgBox "abc" End Sub にしちゃえばいいのに。 と思ってしまいます。 ありがとうございました。
- uruz
- ベストアンサー率49% (417/840)
sample1は Sub sample1(a As String) MsgBox a End Sub の間違いではないですか? aはsample1を呼び出す時の引数となります。 引数を受け取ったプロシージャはその引数をプロシージャ内で使用する事ができます。 ///////////////////// Option Explicit Sub sample2() Call sample1 "abc" End Sub --------------------- Sub sample1(a As String) MsgBox a End Sub /////////////////////
お礼
ありがとうございました。 Sub sample1(a As String) a = "abc" MsgBox a End Sub ではなく Sub sample1(a As String) MsgBox a End Sub にするべきなのですね。 ちなみに Sub sample2() Call sample1 "abc" End Sub をそのまま貼り付けたら Call sample1 "abc" の部分がエラーになってしまうのですが なぜでしょうか?
お礼
ありがとうございました。