VBA入門
とにかく書いてみよう(Sub,End Sub)

ExcelマクロVBAの基本と応用、エクセルVBAの初級・初心者向け解説
公開日:2013年5月以前 最終更新日:2021-08-10

第6回.とにかく書いてみよう(Sub,End Sub)


それでは、とにかくマクロVBAを書いてみましょう。



VBEで実際にマクロを書いてみましょう

マクロVBA エクセルExcel

VBE(Visual Basic Editor)に標準モジュールを追加したら、そこにマクロを書いていきます。

マクロVBA エクセルExcel

sub 練習1

と入力し、Enterして下さい、

マクロVBA エクセルExcel

このように、subSubと先頭が大文字になり、後ろに()が付きます。
そして、1行空けてその下に、End Subが追加されます。

この、SubからEnd Subまでがマクロです。
1つの機能を持った1つのマクロになります。

VBAでは、この1つのマクロをプロシージャーと言います。
練習1
これがマクロの名前、つまりプロシージャー名です。
プロシージャーの詳細については後述します。

SubからEnd Subの間に、いろいろと処理内容を書き込みます。
上の例では何も中身を書いていませんので、マクロの器だけ用意した何もしないマクロという事になります。

Subの中に何かを書くときは、1段さげて書きます、インデントと言います。
それには、「TAB」キーを押します。
「TAB」キーは(大抵のPCでは)キーボードの一番左の上から3番目です。
マクロVBA エクセルExcel

マクロVBA エクセルExcel

このように、「TAB」キーを押すことで、半角4文字分下がった(右にずれた)状態になります。

では、少し書き加えてみましょう。

その前に、今後の説明として、
マクロの記述部分は、以下のように枠で囲った中に表示します。
表示しているページの他の説明文と区別しやすいようにです。

Sub 練習1()
  Range("A1") = "おはよう!"
End Sub

これは、ワークシートのA列1行のセルに、「おはよう!」という文字を入れるマクロになります。

タイピングする時は、基本的には全て小文字で入力します。

マクロVBA エクセルExcel

=の前後も続けて入力して構いません。
そして、Enterすると、

マクロVBA エクセルExcel

このように、
rangeRangeと、先頭が大文字に変換されます。
これは、Rangeが正しい記述であり、自動で変換されたという事です。
しかし、スペルが間違っていて、rengeと入れていれば、大文字には変換されません。
そこで、タイピングする時は小文字で入力します。
これは、タイピングの手間の問題もありますし、スペルミスに気付きやすくなる利点があります。

ただし、ダブルクォーテーションの中は、固定文字なので変換はされません。
"a1"と入力しても、"A1"とは変換されません。
このA1はセル番地なので、
シート上の関数と同じ見た目になるように大文字で入れる事をお勧めします。

また、=の前後には、自動で半角空白が空いて見やすく整形されます。
=の前後は、半角空白を特に入力する必要はありません。
もちろん=の前後に半角空白を入力しても問題ありません。


プロシージャーについて

プロシージャーは、同じ標準モジュールに複数書くことができます。
複数のプロシージャーを書くとなると同じ名前では区別がつかなくなりますし、そもそも名前は何でも良いという訳にはいきません。
プロシージャー名の付け方にはいくつかの制限があります。

✅英数字(全角半角)、漢字、記号はアンダーバー(_)だけ使える、空白(スペース)は使えない
✅先頭には、数字やアンダーバー(_)は使えない、英文字か漢字で始める
✅使えない予約語(VBAが特別に使っている単語)がある
✅長さは半角で255文字まで
✅1つの標準モジュール内では、同じ名前は付けられない

「予約語」といったものもあり難しく感じてしまうかもしれません。
ですが、予約語を使ったり規則に反する場合は赤字でエラーになりますので、絶対に覚えなければVBAを書けないという事ではありませんので安心してください。

また、漢字を使って日本語で書けば上記の制限はほとんど気にならないはずです。
漢字を使う事を否定する意見もありますが、VBAでは特に気にする必要はないでしょう。
自分自身で分かり易い名前を付けてください。




同じテーマ「マクロVBA入門」の記事

第3回.マクロの記録

・マクロ記録の限界 ・「マクロの記録」の操作方法 ・個人用マクロブック ・VBAでの書き方が分からない時に調べる方法
第4回.マクロはどこに書くの(VBEの起動)
・「Visual Basic Editor」の表示方法 ・標準モジュールの挿入 ・「Module1」の名称変更 ・「Module1」の削除
第5回.VBEのオプション設定(Option Explicit)
マクロを書き始める前に、出来れば設定しておいた方が良いオプションがあります。いえ、絶対に設定しておかなければならないVBEのオプション設定です、必ず最初に設定しておいてください。VBEの「ツール」→「オプション」以下の画面が出ます。
第6回.とにかく書いてみよう(Sub,End Sub)
第7回.マクロを実行するには(F5)
・VBEの画面で実行 ・ワークシートの開発タブで実行 ・ボタンや図形に登録して実行 ・マクロを実行すると
第8回.セルに文字を入れるとは(RangeオブジェクトのValueプロパティ)
・前回書いたVBAコード ・セル番地ついて ・= 記号について ・値はValue ・オブジェクトとは、プロパティとは ・セルに文字を入れるとは
第9回.Rangeでのセルの指定方法
・複数のセル(矩形のセル範囲) ・列全体 ・行全体 ・名前定義のセル範囲 ・特殊な指定方法 ・マクロVBAで良く使う書き方
第10回.Range以外の指定方法(Cells,Rows,Columns)
・Cells(行番号, 列番号) ・Rows(行番号) ・Columns(列番号) ・RangeとCellsの関連記事
第11回.RangeとCellsの使い方
・RangeとCellsの基本的な使い分け方 ・固定セル(固定位置)の指定 ・Rangeに変数は使わないようにします ・1つの(VBAで位置を変化させる)セルを指定する場合 ・セル範囲(複数セル)を指定する場合 ・複数行全体、複数列全体の指定 ・RangeとCellsの使い分け方のまとめ ・RangeとCellsの基本の関連記事 ・RangeとCellsの応用の関連記事
第38回.セルに計算式を設定(Formula)
・計算式を設定できるプロパティ ・Valueプロパティ ・Formulaプロパティ , FormulaLocalプロパティ ・FormulaR1C1プロパティ , FormulaR1C1Localプロパティ ・R1C1参照形式 ・Localが付くプロパティについて ・それぞれの違い(Localは除く) ・何故、こんなに多くのプロパティが存在しているのか ・R1C1形式を使うメリット ・たった1行のVBAで複数のセルに計算式を入れる
第12回.変数宣言のDimとデータ型
・データ型 ・変数の使い方 ・変数名の規則 ・良く使われる変数名 ・自動型変換、暗黙の型変換 ・変数宣言の必要性 ・Dim変数宣言のまとめ


新着記事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.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
3.変数宣言のDimとデータ型|VBA入門
4.繰り返し処理(For Next)|VBA入門
5.RangeとCellsの使い方|VBA入門
6.ブックを閉じる・保存(Close,Save,SaveAs)|VBA入門
7.セルのクリア(Clear,ClearContents)|VBA入門
8.メッセージボックス(MsgBox関数)|VBA入門
9.条件分岐(Select Case)|VBA入門
10.マクロとは?VBAとは?VBAでできること|VBA入門




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


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


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