これ何て呼びますか Part2

いつもお世話になっております。

今更な話なのですが、
SubプロシージャなどをCallで呼び出す意味は何なのでしょうか?

例)
ユーザーフォーム:UserForm1

Public Sub CommandButton1_Click()
Call DATA_CREATE
End Sub


Sub DATA_CREATE()
Range("A1").value=1
Range("A2").value=5
End Sub

----------------------------

ためしに書いてみましたが(実際に実行していません
Subと書いてあるものはCallを使わなくても
上手く動作します。
Public Sub CommandButton1_Click()
DATA_CREATE
End Sub

上記方法でも大丈夫です。

何か意味などありましたら、教えてくださるとうれしいです!
よろしくお願い致します。

A 回答 (3件)

こんにちは!


すでに回答は出ていますが、
経験上で・・・

複数Sheetを操作したい場合、シートモジュールでは別Sheetを操作できないコトがあります。
しかし、標準モジュールでは可能です。

Changeイベントなどはシートモジュールになりますので
シートモジュールで動かないコードを標準モジュールに記載しておけば
「Call」で呼び出し、別Sheetの操作も可能になることがあります。

そのような場合に「Call」を使ったりします。m(_ _)m
    • good
    • 2
この回答へのお礼

回答ありがとうございました!
シートモジュールを使う場合に良くCallを使うのですね!

うーん、奥が深いです・・・

回答ありがとうございました。

お礼日時:2013/12/16 10:29

省略可なので、別に書かなくていいんですが、他の言語でも


「サブルーチン」を呼び出すときは「Call」を使うことが多いので、
後で見て分かりやすくするために、あえてつけている人も多い
と思いますよ。

サブルーチン名だけ書いていると、一瞬何をやってるのかわから
なくなりますから・・・。
    • good
    • 1
この回答へのお礼

回答ありがとうございました!
他の言語だと、Call必須だったりしますよね~
色んな言語が混ざって頭がパンクしそうです(笑

回答ありがとうございました。

お礼日時:2013/12/16 10:30

>何か意味などありましたら



Callステートメントのヘルプをちょっと開いて見てみると

----------------
解説

プロシージャを呼び出すとき、キーワード Call は省略できます。(以下略)
----------------

と書いてある通り、callを省略してプロシジャ名だけ書いてもcallで実行されてるだけです。

「何か意味」という事で言えば、可読性や、社内などでマクロの書き方ルールを定めている場合にそれに準拠するといった意味があります。
    • good
    • 1
この回答へのお礼

回答ありがとうございました!
callが在っても無くてもあまり変わらないとのことですかね。
callが在ったほうが、このプロシージャに飛んでる!とパッと見て分かるので、これからも書いていこうと思います。
回答ありがとうございました。

お礼日時:2013/12/16 10:31

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報

このQ&Aを見た人がよく見るQ&A