VBAエキスパート対策
VBAの構文

Excel VBAエキスパート対策です
公開日:2018-02-15 最終更新日:2019-08-25

VBAの構文


・オブジェクト式
・ステートメント
・関数(Right、Left、Mid、InStr、Now、Format、MsgBox、InputBox など)
・演算子(「+」「-」「*」「/」「^」「\」「Mod」「And」「Or」「Not」
・モジュールとプロシージャ


【ここでのポイント】

ここでの内容は、これからの学習の基礎となるVBAの文法の章となっています。
細部については、後の章で詳しく学ぶので、
VBAがとのような作りになっているかをざっくりと理解すれば良いで使用。

中には難しい文法の話もあり、公式テキストでは例え話が多くなっています。
最初は、たとえ話で全体のイメージを持てればそれで構いません。

テキストでは、ここまでの章でやっていないVBAコードが多く記載されています。
従って、この時点では細部について、
「良く分からない・・・」
それは当たり前と言っても良いでしょう。

以下では、たとえ話は少なくして、実際のEcelで説明するようにしています。
難しく感じる部分もあると思いますが、
そういうものだと思って、とりあえずはそんなものかと思うくらいで良いです。

ただしVBAの文法は、試験対策としても、実務としても、非常に重要なものです。
後々の章をやりながら、時々読み返すことで理解を深めていくようにして下さい。

オブジェクト式

VBAの構文は、

・オブジェクト式
・ステートメント
・関数

この3種類になります。
ステートメントと関数についての詳細は後の章になります。

オブジェクト式などと書かれると難しい感じをうけますが、
目的の対象物を特定し、その対象物に何かをする時のVBAの書き方の事です。
そして、
目的の対象物がオブジェクトであり、
何をするかによって、プロパティやメソッドを使い分けるという事です。

オブジェクトとは
操作対象です、VBAで操作する対象という事です。
目に見える物体と考えても良いでしょう。

VBAで操作したい一番の対象はセルですね。
このセルがオブジェクトです。
VBAでは、セルはRangeオブジェクトと言います。

ワークブック、ワークシート、セル
これらがオブジェクトです。

VBAでは複数の情報を持っているものは全てオブジェクトになります。

ワークブックには、名前、シート数、等々の情報があります。
ワークシートには、名前、行数、列数、等々の情報があります。
セルには、番地(A1等)、値、フォント、塗りつぶし、罫線、等々の情報があります。

ここまでは理解しやすいでしょう。

さらに、
セルのフォントもオブジェクトです。
フォントは、フォント名、サイズ、色などがあります。
このように複数の情報を持っているものは、オブジェクトになります。

VBAで良く使うオブジェクト
操作対象 オブジェクト名 VBAでの命令 説明
ワークブック WorkBook WorkBooks ワークブック全般
ActiveWorkbook アクティブなワークブック
ThisWorkbook マクロが書かれているワークブック
ワークシート WorkSheet WorkSheets ワークシート全般
ActiveSheet アクティブなワークシート
セル Range Range セル範囲
Cells 一つのセル
ActiveCell アクティブなセル
Rows 行全体
Columns 列全体
フォント Font Font フォント全般
塗りつぶし Interior Interior 塗りつぶし全般
罫線 Border Borders 罫線全般
オブジェクト名とVBAでの命令が違ったり同じだったり、
このあたりを覚えることが難しく、VBA習得の障壁ともなっています。

オブジェクトの使い方は、今後徐々に説明していきますが、
事例のVBAコードを見て、少しずつ慣れていくことで自然に覚えていけるものです。

プロパティとは
オブジェクトの状態様子と説明されますが、
対象物(つまり物体)がどういうものかを説明している項目です。
姿形、大きさ、色、等々

さすがに、これでは少々分かりずらいとは思います。

セルであれば、そこに入っている値、番地
フォントであれば、フォント名、サイズ、色

これらがプロパィになります。
対象物がどのような物かの情報であるかを知ることが出来ます。
そして、
その情報を変更することで、対象物の状態を変えることが出来ます。

今のフォントのサイズを調べたら11、これを14に変更する。
このように、
プロパティの値を取得したり、変更することでオブジェクトを操作することが出来ます。


プロパティの値の設定
VBAで、プロパティに値を設定する時の書き方は、

オブジェクト.プロパティ = 値

このように書きます。
これがオブジェクト式と呼ばれるものです。
この=は、等しいと言っているのでなく、値を入れるものだと覚えて下さい。
オブジェクトのプロパティに値を入れることで、オブジェクトの状態を変えられます。

オブジェクトとプロパティは、
ピリオド(ドット)でつないで書きます。
この、ピリオド(ドット)は、
の中の」と読んでください、簡単に「」と読めば意味が通じます。
オブジォク「の中の」プロパティに値を入れる
というように読めば理解しやすいはずです。

VBAでの使用例
セルを表すオブジェクトはRangeオブジェクトです。
A1セルなら、Range("A1") と書きます。
そして、値はValueプロパティです。

Range("A1").Value = "MOS"
Range("A2").Value = 2018

これは、

A1セルに「MOS」と入れる
A2セルに「2018」と入れる

ということです。
数値はそのまま書けますが、文字列は"ダブルクォーテーションで囲みます。
しかし、
変更出来ないプロパティものもあります。
変更出来ないプロパティを、
読み取り専用プロパティ」と言います。

MOS VBA マクロ 画像

どのプロパィが読み取り専用なのかは、プロパティ名からは判断できません。
ヘルプや、オブジェクトブラウザで調べなければ知ることはできません。
もしくは、
上記のメッセージが出た時に、読み取り専用プロパティなのだと知ることになります。

この下で、オブジェクトブラウザの使い方を紹介しています。

プロパティの値の取得
オブジェクト.プロパティ

これが、VBAでのプロパティの値の取得になります。
しかし、値を取得したら何かに使わなければなりません。
VBAで、
オブジェクト.プロパティ
とだけ書くと、以下のエラーメッセージが出ます。

MOS VBA マクロ 画像

プロパティの値を取得したら、必ず何かに使わなければなりません。

VBAでの使用例
A1セルの値を取得するには、Range("A1").Value

メッセージボックスを表示する関数にMsgBox関数があります。
A1セルのValueプロパティを取得して、メッセージボックスの引数に渡します。

MsgBox Range("A1").Value

A1セルのValueプロパティを取得して、A2セルのValueプロパティに入れます。

Range("A2").Value = Range("A1").Value

メソッドとは
英単語としては、方法や方式と訳されます。
VBAでは、オブジェクトに何らかの動作を起こさせるものだと覚えて下さい。

VBAでメソッドを使う時のオブジェクト式は、

オブジェクト.メソッド
または
オブジェクト.メソッド 値
または
オブジェクト.メソッド オプション:=値

値が複数必要な時は、カンマで区切って複数書きます。
オブジェクト.メソッド 値1, 値2, 値3
オブジェクト.メソッド オプション1:=値1, オプション2:=値2, オプション3:=値3

この値を、VBAでは引数と言います。
シートの関数で括弧()の中に書くものと同じです。
=SUMIF(範囲,検索条件,合計範囲)

引数はオプションであり、追加情報です。

セルを右クリックから削除しようとすると、

MOS VBA マクロ 画像

このようなダイアログが表示されます。
つまり、
セルを削除するには、このオプション・追加情報が必要だという事です。

これをVBAでは、
Range("B2").Delete xlUp
または
Range("B2").Delete Shift:=xlUp
このように書きます。
セルを削除した後に、上にずらすのか左にずらすのかを指定しています。

引数名について
名前付き引数」ともいます。

オブジェクト.メソッド オプション:=値
Range("B2").Delete Shift:=xlUp

この
オプション:=
Shift:=
これらを引数名と呼びます。
引数には、それがどのようなものかがわかるように名前がついています。
この引数名は省力することもできますので、
オブジェクト.メソッド 値
オブジェクト.メソッド オプション:=値
これらは同じことをしていることになります。

ここで使われている、
:=
これはVBAの中でも特殊な記号の使い方で、
このメソッドの引数名の指定以外では使われることはありません

プロパティとメソッド
プロパティとメソッドの違いが分かりずらいと思います。
その機能だけを見ると違いがはっきりしません。

プロパティは、オブジェクトの状態や様子
メソッドは、オブジェクトに何らかの動作を起こさせる

このように説明しましたが、
実際には、
プロパティで、オブジェクトが動作しているように見えるものもありますし、
メソッドでオブジェクトの状態や様子が変わることにもなります。
何より、同じことをするプロパティとメソッドも存在しています。

では、どのように見分けるかということになります。

単語としての見分け方
プロパティは名刺
メソッドは動詞


このように見分ければ、ほぼ間違いないです。

名詞、動詞といっても、厳密に英単語としてそうだということではなく、
名詞っぽい単語、動詞っぽい単語くらいの感じになります。
従って、確実に見分けられるわけではありません。

正式に調べるためには、
ヘルプや、オブジェクトブラウザで調べなければ知ることはできません。
記述としての見分け方
VBAの1行(1ステートメント、ステートメントについては後の章で)において、
以下の文だけが書かれていた場合、

オブジェク.○○○

この○○○は、メソッドです。

オブジェク.○○○ = 値

この○○○は、プロパティです。

オブジェク.○○○ 値
オブジェク.○○○ オプション:=値

この○○○は、どちらもメソッドです。です。


簡単に見分けられない例
関数やメソッドの引数に指定されているプロパティ・メソッドは、
それを区別することは出来ません。

MsgBox Range("A1").Value
MsgBox Range("A1").Select

Valueは、プロパティです。
Selectは、メソッドです。

Selectは、Rangeオブジェクトのメソッドで、そのセルを選択します。
従って、この命令は間違って指定したもで、結果は「True」と表示されます。
少なくともエラーにはなりません。

つまり、このように引数に指定されている場合は、
プロパティとメソッドの厳密な区分けは出来ないという事になります。
そうはいっても、
ほとんどの場合、引数に指定されているものはプロパティです。
プロパティの値の取得した結果を、引数として渡すものです。
プロパティもメソッドも、オブジェクトごとに使えるものが違います。
物体が違えば、それを表す状態の項目も違うということです。

各オブジェクトには、
多数のプロパティ・メソッドがあります。
そして、それは、オブジェクトごとに違います。
これを全て覚えることは不可能と言っても良いでしょう、それくらい沢山あるという事です。

VBAリファレンス目次
ExcelマクロVBAに関する各種一覧、記事の目次です。
ここには、代表的なオブジェクトのプロパティ・メソッド一覧を掲載しています。
どのくらいあるかを実感しておいてください。

従って、片っ端から覚えようとはしない事です。
MOS試験に出そうなものは、実務で良く使うものが多いはずです。
従って、サンプルのVBAコードに出てくるプロパティ・メソッドを都度覚えていけば良いでしょう

オブジェクトの階層構造
ブック、シート、セル
これらがオブジェクトだと言いました。

これらが階層構造になっていることは理解できると思います。

ブックの中にシートがあり
シートの中にセルがあります。

つまり、セルを正確に指定するには、
どのブックのどのシートのどこのセルかを指定しなければなりません。
これを指定する時に、VBAでは、

ブック.シート.セル

このように、ピリオド(ドット)でつないで書きます。
つまり、プロパティに値を入れるなら、

ブック.シート.セル.プロパティ = 値

このようにVBAでは書くことになります。
つまり、
オブジェクト.子オブジェクト.孫オブジェクト.プロパティ = 値
こういう事になります。

このオブジェクト式の詳しい解説をすると、
実はかなり違う説明が必要になってきますが、
試験対策として、また入門時の解釈としては、このように理解してください。

コレクションとは
オブジェクトを集めたものをコレクションと呼びます。

ワークブックには、複数ワークシートを作れます。
この複数のワークシートの集まりを、ワークシートのコレクションと呼びます。

VBAで良く使うコレクション
コレクション コレクション名 オブジェクト名
ワークブックのコレクション WorkBooks WorkBook
ワークシートのコレクション WorkSheets WorkSheet
セルのコレクション Range Range
Cells
Rows
Columns
罫線のコレクション Borders Border

何か見覚えがありませんか。
そうです、
オブジェクトとは」に掲載した、「VBAで良く使うオブジェクト」とかなり同じです。
つまり、先の表で「VBAでの命令」の多くが、実はコレクションだという事です。

セル以外では、オブジェクト名が単数形に対して、
コレクションは複数形になっていることに注目してください。
つまり、
オブジェクトとは、その物体1つを指していて、
コレクションは、その物体を集めた集合体なので複数形になっているという事です。

ただし、コレクションのないオブジェクトも多数ありますし、
ごく一部に、単数形・複数形の規則に反するものもあります。

単数形・複数形の規則に反するオブジェクトの代表
Rangeは、そもそも「範囲」という単語ですので、複数形はありません。
Rangeは、オブジェクトでもありコレクションでもあります。

Cellsは、複数形なのでコレクシンです。
しかし、単数形のCellオブジェクトは存在しません。
Cellsは、Rangeオブジェクトのコレクションです。
VBAで特定のオブジェクトを操作するには
特定のオブジェクトを操作する時は、
コレクションを使って、名前で指定するか、何番目かの数値で指定します。

WorkSheets("名前")
WorkSheets(数値)

これで当該のワークシートを操作するオブジェクトになります。

WorkSheets("Sheet2")
WorkSheets(2)

「Sheet2」のシート、2番目のシートという事です。

オブジェクトブラウザの使い方
VBEで、
「表示」→「オブジェクト ブラウザ」
ショートカットはF2

MOS VBA マクロ 画像

RangeオブジェクトのAddressは、プロパティで読み取り専用だということが分かります。

詳しい見方は、以下を参照してください。

オブジェクトとプロパティの真実
オブジェクトとプロパティについて、解説をします。対象は、VBA中級以上になると思いますが、初級の方でも、VBAって奥が深いんだなーと感動位は出来ると思います。(笑) ただし、あまり役には立たないかもしれませんので、あしからず。

ステートメント

ステートメントという言葉には、2通りの意味があります。

広義のステートメント
1つの完結している構文です。
日本語では、「命令文」と訳されます。

Range("A1").Value = "MOS"
Range("A2").Value = "VBA"

これは、2つの命令文になります。

狭義のステートメント
オブジェクト式、関数以外で、マクロの動きを制御するものです。

以下での説明は、狭義のステートメントになります。


ステートメントは、マクロの動きを制御するものです。

個々のステートメントは、今後徐々に解説していきます。

ここでは、どんなステートメントがあるかだけを見ておけば良いです。

以下は、最も良く使われるステートメントです。

ステートメント 説明
Dim 変数を宣言し、メモリ領域を割り当てます。
Do...Loop 指定した条件が真 (True) である間、または条件が真 (True) になるまで、一連のステートメントを繰り返し実行するフロー制御ステートメントです。
For Each...Next 配列やコレクションの各要素に対して、一連のステートメントを繰り返し実行するフロー制御ステートメントです。
For...Next 指定した回数だけ、一連のステートメントを繰り返すフロー制御ステートメントです。
If...Then...Else 式の値に基づいて、条件付きの実行を行うフロー制御ステートメントです。
Select Case 条件式の値に従って、複数のステートメント ブロックのいずれかを実行させるフロー制御ステートメントです。
With オブジェクトやユーザー定義型に対して、一連のステートメントを実行するフロー制御ステートメントです。
End プロシージャやブロック (一連のステートメントの集まり) を終了させるフロー制御ステートメントです。
Call Sub プロシージャ、Function プロシージャ、ダイナミック リンク ライブラリ (DLL) プロシージャに制御を渡すフロー制御ステートメントです。
Sub Sub プロシージャの名前、引数、およびプロシージャの本体を宣言します。
Function Function プロシージャの名前、引数、および本体部分を構成するコードを宣言します。


以下では、誤解の無いように、命令文と言う言葉を使用します。
公式テキストには書かれていない部分もありますが、VBAの基本として覚えておいてください。

1つの命令文の途中で改行
VBAでは、1つの命令は1行に書くことが基本です。
しかし、1つの命令がとてもながくなり見づらくなってしまう場合もあり、これを改行して複数行に書くことが出来ます。
以下では、わかり易いように短い命令文の例を示します。

Range("A1").Value = "MOS"
Range("A2").Value = "VBA"


通常はこのように1行に1つの命令文で書きます。

Range("A1").Value _
 = "MOS"
Range("A2").Value = _
 "VBA"


半角スペースの後に、_(アンダーバー、これが行継続文字)を書くことで、次の行に継続できます。

単語の途中では改行できません。
括弧や演算子の前後で改行できます。
オブジェクト式の.(ピリオド)の前後も改行可能です。

1行に複数の命令文を記述
VBAでは、複数の命令文を1行に書くこともできます。

Range("A1").Value = "MOS"
Range("A2").Value = "VBA"

これを1行で書くと、

Range("A1").Value = "MOS": Range("A2").Value = "VBA"

(コロン、これが区切り文字)を書くことで、改行せずに次の命令文を書くことが出来ます。

コメント(注釈)の書き方
VBAコードにわかり易いようにコメント(注釈)を書くことが出来ます。

'セルへの値設定
Range("A1").Value = "MOS" 'A1セルにMOS
Range("A2").Value = "VBA" 'A2セルにVBA

'(シングルクォーテーション、これがコメントの始まり)を書くことで、そこから後ろの行末までがコメントになります。
コメントは、マクロ実行に何の影響も及ぼしません。

関数(Right、Left、Mid、InStr、Now、Format、MsgBox、InputBox など)

ワークシートに関数があるように、マクロにも専用の関数が用意されています。

関数の書き方
変数orセル = 関数名(第1引数, 第2引数, 第3引数, ・・・)

このように、関数は、その戻り値を他の変数やセルに入れて使います。

または、

If 関数名(第1引数, 第2引数, 第3引数, ・・・) = ○○○ Then

このように、関数の戻り値を、If文等で判定します。

または、

変数orセル = 関数名(関数名(第1引数, 第2引数, 第3引数, ・・・), 第2引数, 第3引数, ・・・)

このように、関数をネストして使う事も出来ます。

関数の戻り値を、別の関数の引数として指定しています。

関数は、通常は上記のように、その戻り値を使って次の処理に進みます。

※関数には、引数の無い関数もあります。

関数の戻り値を使わない場合
MsgBox "メッセージ"

このように、戻り値を使用しない事も、まれにあります。

この時の記述方法として、

関数名 第1引数, 第2引数, 第3引数, ・・・

このように、戻り値を使用しない場合は、引数を()で囲まずに記述します。

関数は、ほとんどの場合は戻り値を使うので、通常は、

変数 = 関数名(第1引数, 第2引数, 第3引数, ・・・)

このように、()で引数を囲いますので、戻り値を使わない場合の記述については要注意です。

関数は、全部で150程度あります。

VBA関数の一覧
マクロVBA関数の一覧と解説です、どんな関数があるかは一度は確認しておくとをお勧めいたします。どんな関数があるだけでも知っておけば、詳細の使い方は実際に使うときに調べても良いでしょう。文字列操作…34 分岐…3 型変換…14 データ判定…10 日付時刻…20 配列…6 ファイル操作…14 数学/財務…28 その他……

簡単には、全てを覚えられるものではありません。
試験対策としては、以下を重点的に覚えて下さい。

Right
・Right関数 ・RightB関数 ・Right$関数、RightB$関数 ・Right関数の使用例
Left
・Left関数 ・LeftB関数 ・Left$関数、LeftB$関数 ・Left関数の使用例
Mid
・Mid関数 ・MidB関数 ・Mid$関数、MidB$関数 ・Mid関数の使用例
InStr
・InStr関数 ・InStrB関数 ・InStr関数の使用例 ・InStr関数の応用例1 ・InStr関数の応用例2 ・InStr関数の応用例3 ・InStr関数の練習問題 ・ ・
Now
Now関数は、コンピュータのシステムの日付と時刻の設定に基づいて、現在の日付と時刻を返します、バリアント型(内部処理形式DateのVariant)の値を返します。Now関数 Now() ()は省略可能です。Now Now関数の使用例 MsgBoxNow…2013/06/0912:57:46現在の日時 OfficeV…
Format
・Format関数 ・表示書式指定文字 ・Format$関数 ・使用例
MsgBox
・MsgBox関数の構文 ・戻り値の定数:VbMsgBoxResult列挙 ・MsgBox関数の使用例
InputBox
InputBox関数は、ダイアログボックスにメッセージとテキストボックスを表示し、文字列が入力されるか、またはボタンがクリックされると、テキストボックスの内容を返します。InputBox関数 構文 InputBox(prompt[,title][,default][,xpos][,ypos] [,helpfile,

試験範囲としては、最後に「など」と書かれていることもあり、
実際に出題される可能性のある関数がどれかは不明です。
念の為、以下のページは一通り目を通しておいてください。
第46回.VBA関数(日付,DateAdd)
・日付時刻に関するVBA関数の一覧 ・DateAdd関数の構文 ・DateAdd関数の使用例
第47回.VBA関数(文字列操作,Replace,InStr,StrConv)
・文字列操作に関するVBA関数の一覧 ・Replace関数 ・InStr関数 ・StrConv関数 ・最後に


実務としては、最低でも50個以上は覚えないとなりません。
ただし、いきなり50個を覚えるのではなく、
実際の使用例が出てきたとに、その関数と関連する関数を覚えるようにして下さい。

演算子(「+」「-」「*」「/」「^」「\」「Mod」「And」「Or」「Not」

演算子は、数値を計算したり、数値・文字を比較したりする時に使う記号です。

大別すると、以下の種類があります。

算術演算子
比較演算子
文字列連結演算子
論理演算子
代入演算子



算術演算子
演算子 説明
+ 足し算
- 引き算
* 掛け算
/ 割り算
\ 割り算の商
Mod 割り算の余り
^ べき乗

比較演算子
比較演算子 意味
= 等しい
<> 等しくない
> より大きい
>= 以上
< より小さい
<= 以下

等価演算子Isと文字列比較演算子Likeも比較演算子に含まれます。

比較演算子 意味
Is 2つのオブジェクト変数を比較します。
Like パターン マッチング機能で2つの文字列の比較を行います。

文字列連結演算子
文字列連結演算子 意味
& 2つの式に対して文字列連結を行います。
+ 数値同市の場合は、2つの数値の和を求めます。
文字列の場合は、文字列連結を行います。

※文字列結合として+演算子は使うべきではありません。
論理演算子
論理演算子 意味
And 論理積
Or 論理和
Xor 排他論理和
Eqv 論理等価
Imp 論理包含
Not 論理否定

Xor、Eqv、Imp、これらは実務では使うべきではありません。
結果の判断が難しく動作を把握しづらいからです。
そして、And、Or、Notの組み合わせ方で同じことが出来るからです。
MOS試験にも出ることはないと思います。
代入演算子
代入演算子 意味
= 変数またはプロパティに値を代入します。

演算子の優先順位
算術演算子、比較演算子、論理演算子の順序で評価されます。

それぞれの演算子の中では、以下の順に評価されます。

算術演算子 比較演算子 論理演算子
指数演算 (^) 等しい (=) Not
マイナス符号 (-) 等しくない (<>) And
乗算と除算 (*、/) より小さい (<) Or
整数除算 (\) より大きい (>) Xor
剰余演算 (Mod) 以下 (<=) Eqv
加算と減算 (+、-) 以上 (>=) Imp
文字列連結 (&) Like
Is

かっこ () を使用すると、優先順序を入れ替えたり、式のある部分を他の部分よりも先に評価することができます。
文字列連結演算子 (&) は算術演算子ではありませんが、
その優先順位は、どの算術演算子よりも低く、どの比較演算子よりも高くなります。

モジュールとプロシージャ

モジュールとは、マクロを書く専用の場所の事です。

モジュールは大別すると、以下になります。

・オブジェクト モジュール
・標準モジュール
・クラス モジュール


オブジェクト モジュール
オブジェクト モジュールは、以下のオブジェクトが持っています。

・ワークブック
・シート(ワークシート、グラフシート)
・ユーザーフォーム


主に、そのオブジェクトに固有のVBAコードを書くためのモジュールです。
イベントを利用するマクロは、そのオブジェクトのモジュールに記述します。

イベントは、VBAベーシックの範囲には入っていません。
イベントは、VBAスタンダードの範囲になります。

標準モジュール
VBAで標準的に使う汎用のモジュールです。

オブジェクのイベントを利用しないマクロは、基本的にこの標モジュールに書きます。

最初は、マクロは標準モジュールに書くものだと考えて良いです。

クラス モジュール
クラスを定義するものです。

MOS試験の範囲に入っていませんので、
そういうものがあるのだとい程度で覚えておけば良いです。

モジュールによる違い
セル指定で、シート指定を省略した時
標準モジュールでは、アクフィブシートのセル

シートモジュールでは、記述されているシートのセル
宣言できる変数の制限
変数の詳細は、後の章で詳しく解説します。

全てのモジュールで使用できる変数、定数、ユーザー定義型、API宣言は、
標準モジュールに記述しなければなりません。

全てのモジュールで使用できる変数を、広域変数(グローバルエリア変数)といいますが、
これらは、標準モジュールに記述しなければなりません。

ただし、
オブジェクト モジュールにPublicで定義した変数を、他のモジュールで使用する方法もあります。
オブジェクト.変数
と記述することで、他のモジュールでも使う事は可能です。
ただし、このような使い方はするべきではありません。

プロシージャーの種類
プロシージャーには、以下の3種類あります。

Sub プロシージャー
値を返さないプロシージャーです。
Subステートメントを使用して書かれるプロシージャーです。
Function プロシージャ
値を返すプロシージャーです。
Functionステートメントを使用して書かれるプロシージャーです。

Functionとは関数の事です。
つまり、独自の関数を作成する為に使用します。
関数なので、結果の値を返します。

ベーシックではほとんど扱いません。
Functionプロシージャーは関数であり値を返すものだと覚えておいてください。
Property プロシージャ
クラス モジュールで使用するものです。
クラスは独自のオブジェクトを作成するものです。
つまり、オブジェクトのプロパティを作成するものです。

試験の出題範囲外です。

別のプロシージャーを実行する
別のプロシージャーを実行するには、Callステートメントを使用します。

[Call] 実行するプロシージャーの名前 [引数]

Callは省略できます。
Callを書いたときには、引数をかっこで囲む必要があります。

MyProc "引数"
Call MyProc("引数")


引数が無い時は、Callを指定しても括弧は書きません。

MyProc
Call MyProc


【業務改善の実務】

ここでの内容は、実際のVBA作成ではあまり意識しなくてもVBAを書くことはできます。

マクロは標準モジュールに書く。
イベントは、オブジェクト モジュールに書く。
プロパティは、値の取得と設定がある。
メソッドは、引数を:=で指定する。
ステートメントや関数は、良く使うものだけしっかり覚える。


これくらいを意識しておけば、その他はどんなものがあるかだけ知っていれば十分です。

実務では、
理屈より、まずは書いて動かす。
エラーが出たら、原因を調べて、そして修正する。
そして、また動かす。
この繰り返しでVBAスキルはアップしていきます。
エラーの原因を調べる時に、それに関する文法を自然と学んで行くことになります。

【本サイト内の関連ページ】

第14回.文字の結合と継続行(&アンパサンド)
あるセルの文字と、あるセルの文字をくっつけて、別のセルに表示する、よくある事例であり、頻繁に行われることです。A1セルに"abc" B1セルに"123" この時に、C1セルに"abc123"を入れるような場合のマクロVBAになります。
第15回.四則演算と注釈
エクセルは表計算ソフトですから、計算が出来なくては話になりません。四則演算(加減剰余)は必須です。この四則演算で使う算術演算の演算子は、ワークシートの演算子と同じです。あわせて、注釈(コメント)の書き方も覚えましょう。
第44回.VBA関数について
・VBA関数の書き方 ・関数の戻り値を使わない場合 ・名前付き引数 ・○○○B関数 ・○○○$関数 ・ワークシート関数との関係 ・自動メンバ表示 ・習得すべき関数 ・最後に
第45回.VBA関数(Format)
・Format関数 ・日付/時刻表示書式指定文字 ・数値表示書式指定文字 ・文字列表示書式指定文字 ・Format関数の使用例 ・※セルに出力する場合 ・最後に
第46回.VBA関数(日付,DateAdd)
・日付時刻に関するVBA関数の一覧 ・DateAdd関数の構文 ・DateAdd関数の使用例
第47回.VBA関数(文字列操作,Replace,InStr,StrConv)
・文字列操作に関するVBA関数の一覧 ・Replace関数 ・InStr関数 ・StrConv関数 ・最後に
第48回.VBA関数(その他,Fix,Int,Rnd,Round,IsEmpty)
・数学VBA関数の一覧 ・データ型確認のVBA関数一覧 ・データ型変換のVBA関数一覧
第49回.Like演算子とワイルドカード
・Like演算子 ・パターン文字列式(ワイルドカード、文字リスト、文字範囲) ・Like演算子の使用例 ・正規表現について

第105回.Callステートメント
・Callステートメント ・Callステートメントの使用例 ・同じことは2度書かない ・プロシージャーの分割について
第107回.プロシージャーの引数
・引数の構文 ・引数の使用例 ・引数について
VBAにおける括弧()の使い方
・基本文型 ・VBAにおける括弧() ・VBAにおける半角空白の意味 ・戻り値を他の用途に使う時 ・括弧()の使い方の基本文型 ・Callを省略しなければ全て括弧が必要になる ・最後に一言

オブジェクトとプロパティの真実
オブジェクトとプロパティについて、解説をします。対象は、VBA中級以上になると思いますが、初級の方でも、VBAって奥が深いんだなーと感動位は出来ると思います。(笑) ただし、あまり役には立たないかもしれませんので、あしからず。
オブジェクト式について
・オブジェクト式の書き方 ・オブジェクトは直接指定できない ・オブジェクト式の書き始めは何か ・メソッドとプロパティの違いについて ・オブジェクト式の最後に

VBAエキスパート公式テキスト

2019/5/30発売リニューアル版


2019/7/26発売リニューアル版

こちらは必須として購入した方が良いでしょう。
ちょっと高いなーとは思いますが、
書籍を購入することで、学習用データが提供されています。
・サンプルブック
・VBAエキスパート模擬問題
これらが使えるようになります。
このシリーズでは、テキストを読みながら学習していることを前提とします。



同じテーマ「VBAエキスパート対策」の記事

マクロとVBAの概念
マクロの記録
VBAの構文
変数と定数
セルの操作
ステートメント
ブックの操作
シートの操作
デバッグデの基礎
マクロの実行
VBAベーシック試験対策まとめ


新着記事NEW ・・・新着記事一覧を見る

TRIMRANGE関数(セル範囲をトリム:端の空白セルを除外)|エクセル入門(2024-08-30)
正規表現関数(REGEXTEST,REGEXREPLACE,REGEXEXTRACT)|エクセル入門(2024-07-02)
エクセルが起動しない、Excelが立ち上がらない|エクセル雑感(2024-04-11)
ブール型(Boolean)のis変数・フラグについて|VBA技術解説(2024-04-05)
テキストの内容によって図形を削除する|VBA技術解説(2024-04-02)
ExcelマクロVBA入門目次|エクセルの神髄(2024-03-20)
VBA10大躓きポイント(初心者が躓きやすいポイント)|VBA技術解説(2024-03-05)
テンキーのスクリーンキーボード作成|ユーザーフォーム入門(2024-02-26)
無効な前方参照か、コンパイルされていない種類への参照です。|エクセル雑感(2024-02-17)
初級脱出10問パック|VBA練習問題(2024-01-24)


アクセスランキング ・・・ ランキング一覧を見る

1.最終行の取得(End,Rows.Count)|VBA入門
2.繰り返し処理(For Next)|VBA入門
3.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
4.変数宣言のDimとデータ型|VBA入門
5.RangeとCellsの使い方|VBA入門
6.ブックを閉じる・保存(Close,Save,SaveAs)|VBA入門
7.セルのクリア(Clear,ClearContents)|VBA入門
8.メッセージボックス(MsgBox関数)|VBA入門
9.条件分岐(Select Case)|VBA入門
10.ブック・シートの選択(Select,Activate)|VBA入門




このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。


記述には細心の注意をしたつもりですが、
間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。
掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。


このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。
本文下部へ