大体でIT

-ちょっと使えるネタを紹介-

大体でIT

Excel VBAで、Subから別のSubを呼び出すには、「Call」を使います。「Sub」と「Public Sub」は別モジュールから、「Private Sub」は同一モジュールから呼び出せます。シートや、ブック、フォームモジュールのSubを呼び出すには、「オブジェクト名」を付けて呼び出しましょう。

はじめに

この記事では、Subから別のSubを呼び出す方法について、ご紹介しました。

別のSubを呼び出すには「Call」を使います。

実際は「Call」を使わなくても呼び出せますけど、わかりづらくなってしまうので、「Call」はつけた方がいいです。

「Sub」と「Public Sub」は別モジュールから、「Private Sub」は同一モジュールからのみ呼び出せます。

こんな感じです。

  • 「Sub」と「Public Sub」:別モジュールから呼び出せる
  • 「Private Sub」:同一モジュールからのみ呼び出せる

「Public」を省略したら「Sub」となるので、「Public Sub」は使わず「Sub」を使いましょう。

標準モジュール以外の「シート」や「ブック」、「フォーム」モジュールを呼び出すときは「オブジェクト名」を付けて呼び出す必要があります。

共有したいコードがあれば、「標準モジュール」に記載すると便利です。

では、

この記事で紹介すること

  • Subから別のSubを呼び出す方法

目次

Subから別のSubを呼び出し

Subから「別のSub」を呼び出すには「Call」を使います。

Callを使って呼び出す

「Call」を使って別のSubを呼び出すことができます。

「Call」を使って呼び出し

「Call」を使って別のSubを呼び出すことができます

では、実行してみます。

別のSubを呼びだせた

「Call」を使って別のSubを呼び出すことができました

「Call」を使って別のSubを呼び出すことができました。

Callを使わなくても呼び出せるけど付けた方がいい

実は、「Call」を使わなくても呼び出せます。

ただ、わかりづらくなってしまうので、「Call」はつけた方がいいです。

「Call」はつけないで、別のSubを呼び出してみます。

「Call」をつけないで呼び出し

「Call」をつけないで別のSubを呼び出す場合です。

「Call」はつけなくても、別のSubを呼び出すことができます

実行してみます。

「Call」をつけないで、別のSubを呼び出すことができました

「Call」をつけないで、別のSubを呼び出すことができました。

コードが多くなってくると、「Call」を付けない場合わかりづらくなってしまいます。

「Call」はつけた方がわかりやすい

「Call」を付けないと、こんな感じです。

「Call」を付けないと、呼び出しているのがわかりづらいです

「Call」を付けないと、呼び出しているのがわかりづらいですよね。

「Call」をつけてみます。

「Call」をつけると別のSubを呼び出しているのがわかりやすいです

「Call」をつけると別のSubを呼び出しているのがわかりやすいです。

別のSubを呼び出す際は、「Call」を付けて呼び出しましょう。

SubとPublic Sub、Private Subの呼び出し

「Sub」と「Public Sub」、「PrivateSub」の呼び出しをしてみます。

  • 「Sub」と「Public Sub」:別モジュールから呼び出しできる
  • 「Private Sub」:同一モジュールからのみ呼び出しできる

という感じです。

「Public」を省略すると「Sub」の意味となるので、「Public Sub」と「Sub」は同じものになります。

Subは別モジュールからも呼び出しできる

「Sub」は別モジュールから呼び出すことができます。

「Sub」を別モジュールから呼び出し

「Sub」は別モジュールから呼び出すことができます

実行してみます。

別モジュールから呼び出せた

「Sub」を別モジュールから呼び出すことができました

「Sub」を別モジュールから呼び出すことができました。

Private Subは同一モジュールからのみ呼び出し

PrivateSubは同一モジュールからのみ呼び出しになります。

「Private」は別モジュールから呼び出せない

「Private Sub」は別モジュールから呼び出すことができないです。

「Private Sub」は別モジュールから呼び出すことができないです

実行してみます。

「Private Sub」は別モジュールから呼び出すことができないのでエラーとなります。

「Private Sub」は別モジュールから呼び出すことができないのでエラーとなりました
「Private Sub」は別モジュールから呼び出すことができないのでエラーとなりました

「Private Sub」は別モジュールから呼び出すことができないのでエラーとなりました。

「Private」は同じモジュールからのみ呼び出し

「Private Sub」は同じモジュール内で呼び出すことができます。

「Private Sub」は同じモジュール内で呼び出すことができます

実行してみます。

同じモジュール内の「Private Sub」を呼び出すことができました

同じモジュール内の「Private Sub」を呼び出すことができました。

シート、ブック、フォームモジュールの呼び出し

「シート」、「ブック」、「フォーム」モジュールのSubを呼び出してみます。

標準モジュール以外のモジュールのSubを呼び出すには、「オブジェクト名」をつける必要があります。

オブジェクト名を付けて呼び出す

オブジェクト名を付けて呼び出してみます。

「オブジェクト名」を付けて「シートモジュール」を呼び出し

オブジェクト名をつけて「シートモジュール」のコードを呼び出してみます。

オブジェクト名をつけてシートモジュールのコードを呼び出してみます

「シートモジュール」のコードを呼び出すことができます。

シートモジュールのコードを呼び出すことができました

シートモジュールのコードを呼び出すことができました。

「オブジェクト名」を付けて「ブックモジュール」を呼び出し

オブジェクト名をつけて「ブックモジュール」のコードを呼び出してみます。

オブジェクト名をつけてブックモジュールのコードを呼び出してみます

「ブックモジュールの」コードを呼び出すことができます。

ブックモジュールのコードを呼び出すことができました

「ブックモジュール」のコードを呼び出すことができました。

「オブジェクト名」を付けて「フォームモジュール」を呼び出し

オブジェクト名をつけて「フォームモジュール」のコードを呼び出してみます。

オブジェクト名をつけてフォームモジュールのコードを呼び出してみます

「フォームモジュール」のコードを呼び出すことができます。

フォームモジュールのコードを呼び出すことができました

「フォームモジュール」のコードを呼び出すことができました。

共有したいコードは標準モジュールに記載する

共有したいコードは標準モジュールに記載すると便利です。

例えば、フォームモジュールのSubを呼び出すコードがあったとして、「オブジェクト名」を変更してしまうと、エラーとなってしまいます。

「フォームモジュール」の「オブジェクト名」を変更

フォームモジュールのオブジェクト名を変更して、実行してみます。

フォームモジュールのオブジェクト名を変更して、実行してみます

実行してみます。

オブジェクト名が変わったので、エラーとなります。

オブジェクト名が変わったので、エラーとなりました
オブジェクト名が変わったので、エラーとなりました

オブジェクト名が変わったので、エラーとなりました。

「標準モジュール」の「オブジェクト名」を変更

標準モジュールのコードを呼び出すときは、オブジェクト名を使わないで呼び出せます。

なので、モジュール名を変更しても問題ないです。

標準モジュールのコードを呼び出すときは、オブジェクト名を使わないで呼び出せるので、モジュール名を変更しても問題ないです

標準モジュールのオブジェクト名を変更しても、問題なく実行できます。

標準モジュールのオブジェクト名を変更しても、問題なく実行できました

標準モジュールのオブジェクト名を変更しても、問題なく実行できました。

共有コードは「標準モジュール」に記載

共有したいコードがある場合は、標準モジュールに記載すると便利です。

共有したいコードがある場合は、標準モジュールに記載すると便利です

共有したいコードを標準モジュールに記載して、実行できます。

共有したいコードを標準モジュールに記載して、実行できました
共有したいコードを標準モジュールに記載して、実行できました

共有したいコードを標準モジュールに記載して、実行できました。

こんな感じで、別モジュールから呼び出したいものがあれば、「標準モジュール」に記載した方が便利です。

おわりに

この記事では、Subから別のSubを呼び出す方法について、ご紹介しました。

別のSubを呼び出すには「Call」を使います。

実際は「Call」を使わなくても呼び出せますけど、わかりづらくなってしまうので、「Call」はつけた方がいいです。

「Sub」と「Public Sub」は別モジュールから、「Private Sub」は同一モジュールからのみ呼び出せます。

こんな感じです。

  • 「Sub」と「Public Sub」:別モジュールから呼び出せる
  • 「Private Sub」:同一モジュールからのみ呼び出せる

「Public」を省略したら「Sub」となるので、「Public Sub」は使わず「Sub」を使いましょう。

標準モジュール以外の「シート」や「ブック」、「フォーム」モジュールを呼び出すときは「オブジェクト名」を付けて呼び出す必要があります。

共有したいコードがあれば、「標準モジュール」に記載すると便利です。

参考になればと思います。最後までご覧くださいまして、ありがとうございました。

関連する記事から探す

カテゴリから探す

カテゴリから見たい項目を探すと便利ですよ。

サイト内を検索する

↓キーワードを入力する

アーカイブから探す