最終更新日:2022-06-10
VBA再入門:Excelマクロの基礎を実践で覚える
VBAを学習しようとして、本を読んでもWEBをみても、結局挫折してしまった方を対象に、
VBA再入門と題してマクロVBAの基礎の学習を実践形式で進める連載を開始します。
理屈は最低限にとどめ、とにかくマクロVBAが書けるようになることを目的とします。
従いまして、ここを卒業出来たら次はしっかりと基礎から応用までを学びなおす為、
マクロVBA入門
・VBA学習の進め方について ・1. VBAの基礎・基本:VBA入門 ・2. VBA入門に必要なVBEの基本的使い方 ・3. VBAプログラミングの基礎・基本 ・4. Excel各種機能とオブジェクトの理解:VBA入門 ・5. VBA初級からVBA中級を目指して ・6. VBA入門の後日追加記事 ・7. VBA入門その後の学習について ・「VBA入門」の記事を学校の授業もしくは企業研修でお使いになる場合
こちらで復習しつつ、さらに次のステージに進んでください。
ただし、このマクロVBA再入門で扱う以上の知識が必ずしも必要という事ではありません。
ここでの内容を100%理解できれば、それだけで多くの実務をマクロで自動化できるのです。
ですので、ここでのマクロVBAを100%理解せずに他に進むことは避けてください。
VBA習得を確実にするため、VBA再入門ではVBAコードをコピペできるようにしていません。
VBAコードは画像で掲載しています。
実際にタイピングして、VBAを実行して覚えてもらいたい為に、意図的にそこのようにしています。
読むだけでVBAを覚えられるのなら、ここには訪れていないでしょう。
必ず、実際にVBAを書いて実行しながら進めてください。
このVBA再入門は2015年に開始しました。
2019年に説明文の見直しと参考ページのリンクの追加等の再編集しています。
※※※ 以下は、掲載時のコメントを残しています。 ※※※
下の一覧は、今後の記事の予定となります。
記事をアップしたときに、リンクを設定していきます。
あくまで予定なので、今後タイトルや回数は変更になる場合はあります。
また、画面の画像や、操作手順はExcel2010を基本とし、バージョンによる違いは注釈をつけます。
目標は、以下のような処理のマクロを書けるようになる事です。
月別のデータファイル(ExcelファイルまたはCSV)を読込み、
※項目は、日付,部署,担当者,売上数,売上金額
このデータ元に、新規ブックを作り、部署別のシートに、担当者・年月ごとの集計値を出力する。
※部署をシートにして、項目は、担当者,年月,売上数,売上金額
これもあくまで予定ですが、概ねこのくらいの処理が書けるようになることを目指します。
これを書く為に必要なVBAコードを順に20回程度で解説し、その後に具体的なVBAコードを数回に分けて書いていきます。
VBAコードの解説時には、目標のVBAコードには必要なくても、関連する重要事項については同時に解説を加えます。
ただし、関連事項の解説は必用最低限にとどめます。
私のマクロを教えてきた経験から、マクロVBAを覚えられない人に共通するのは、
なんでもかんでも知ろうとする
これは、良く言えば好奇心旺盛で良い事なのですが、悪く言えば集中力に欠けるという事です。
好奇心旺盛に何でも知ろうとした結果、何も覚えられないという結果になっています。
何でも知ろうとして全て覚えられた人は、少なくともこのページは訪れていないはずです。
誤解を恐れずに言いますと、
途中で疑問が出ても気にしないでください。
ここに書いてあることだけを100%全て覚えてください。
ここに書いてあることをマスターした後に、疑問で残った事を調べるようにして下さい。
ですが、
ここで解説するVBAコードを理解した後には、途中の疑問点の多くは解決していたり、簡単に自分で調べられるようになっているはずです。
準備:VBA再入門
第1回.マクロを書く準備をする(VBAとVBE)・開発タブの表示 ・VBEの設定 ・標準モジュールの挿入 ・「マクロを書く準備をする」のまとめ ・ExcelマクロVBA入門の対応ページ
第2回.マクロを書いて動かす(SubとF5)・マクロ有効ブックの作成 ・マクロVBAを書いてみる ・マクロVBAの実行 ・複数のマクロVBAを書く ・プロシージャーとは ・「マクロを書いて動かす」のまとめ ・ExcelマクロVBA入門の対応ページ
セルを扱う:VBA再入門
第3回.セルに数字や文字を入れる(RangeとCells)・セルに文字を入れる ・セルに数字を入れる ・マクロVBAを実行 ・RangeとCells ・セル範囲(複数セル)に一括入力 ・「セルに数字や文字を入れる」のまとめ ・ExcelマクロVBA入門の対応ページ
第4回.セルの値を使って計算する(四則演算)・セルの値を使って足し算 ・セルの値を使って四則演算 ・セルの値を使った応用計算 ・ワークシートの関数を使った計算 ・ExcelマクロVBA入門の対応ページ
第5回.同じ計算を行数分繰り返す(For~Next)・練習用のデータ作成について ・1行だけの計算をする場合は ・VBAの変数とは ・変数を使って行をずらしていく ・デバッグ:ステップ イン F8 ・変数を使った繰り返し処理 ・For~Nextの補足説明 ・VBAコードの書き方について ・ExcelマクロVBA入門の対応ページ
第6回.表の先頭から最終行まで繰り返す(ForとEnd(xlUp).Row)・表の最終行を取得する ・表の最終行まで繰り返す ・VBAの文法を覚える必要があるか ・ExcelマクロVBA入門等の対応ページ
第7回.セルの値によって計算を変える(Ifステートメント)・Ifの説明用のサンプル ・マクロVBAでのIfの使い方 ・Ifステートメントの書き方 ・Ifのネスト(入れ子) ・AndとOr ・ElseIfとSelect Caseについて ・マクロVBAは、プログラミングです ・Ifステートメントの練習問題 ・改行方法について ・ExcelマクロVBA入門等の対応ページ
第8回.表範囲をまとめて消去する(OffsetとClearContents)・見出しを残しデータ部分のみ消去 ・Offsetを使って範囲をずらす ・データ範囲に関係なく消去する場合 ・ExcelマクロVBA入門等の対応ページ
エクセルの便利機能:VBA再入門
第9回.関数という便利な道具(VBA関数)・これだけは覚えておきたい必須VBA関数 ・VBA関数の練習 ・ExcelマクロVBA入門の対応ページ
第10回.ワークシートの関数を使う(WorksheetFunction)・マクロVBAでのワークシート関数の使い方 ・長いスペルの単語を簡単に入れる方法 ・ワークシート関数を使ってみよう ・ワークシート関数を使う時の注意点、エラー対策 ・ExcelマクロVBA入門等の対応ページ
第11回.分からない事はエクセルに聞く(マクロの記録)・マクロの記録の使い方 ・実際に分からない事を調べる時の手順 ・「分からない事はエクセルに聞く」のまとめ ・ExcelマクロVBA入門等の対応ページ
第12回.エクセルの言葉を理解する(オブジェクト、プロパティ、メソッド)・VBAが表示するメッセージ ・オブジェクト、プロパティ、メソッド ・プロパティとメソッドの違い ・オブジェクトの階層(親子構造) ・プロパティの省略 ・エクセルの言葉であるVBAを日本語に翻訳する ・最終行取得のコードを訳してみる ・VBA用語を覚えることについて ・ExcelマクロVBA入門等の対応ページ
第13回.セルのコピペ方法を知る(CopyとPaste、さらに)・セルをコピーして貼り付け ・セルをコピーして値貼り付け ・セルをコピーして書式貼り付け ・PasteSpecial(値貼り付け、書式貼り付け等)の細かい指定 ・もっと簡単なコピペ方法はないものか ・もっと効率的な「セルをコピーして貼り付け」 ・マクロならではの「値のコピー」 ・「セルのコピペ方法を知る」のまとめ ・ExcelマクロVBA入門等の対応ページ
第14回.セルの書式を設定する(NumberFormatLocal,Font,Borders,Interior)・「セルの書式設定」ダイアログ画面 ・表示形式 ・フォント ・罫線 ・塗りつぶし ・「セルの書式を設定する」のまとめ ・ExcelマクロVBA入門の対応ページ
第15回.手作業で出来なければマクロは書けない・エクセルの機能を知る ・ワークシート関数を知る ・「手作業で出来なければマクロは書けない」のまとめ ・ExcelマクロVBA入門の対応ページ
第16回.エクセルの機能を上手に使う・エクセルの機能を使った例 ・普通にマクロVBAを書くと ・C2セルに計算式を入れ、フィルハンドルをダブルクリックでオートフィル ・C2セルに計算式を入れ、C2セルをコピー、C3~C11を選択し貼り付け ・C2~C11を選択し、計算式を入力しCtrl+Enterで一括入力 ・マクロの記録を参考にVBAを書いてみると、 ・どのエクセル機能を使うかを考える ・並べ替え ・オートフィルター ・エクセルの機能を上手に使う ・ExcelマクロVBA入門の対応ページ
ブック・シートを扱う:VBA再入門
第17回.セルにブック・シートを指定する(Workbooks,Worksheets,With,Set)・ブックの書き方 ・シートの書き方 ・セルにブック・シートを指定する方法 ・直接指定 ・Withを使う ・Setを使う ・SetとWithを組み合わせて使う ・ExcelマクロVBA入門の対応ページ
第18回.シートをコピー・挿入・削除する(Worksheets,Copy,Add,Delete)・シートのコピー ・シートの挿入 ・シートの削除 ・メソッドの戻り値 ・ExcelマクロVBA入門の対応ページ
第19回.ブックを開く・閉じる・保存する(Workbooks,Open,Close,Save,SaveAs)・ブック(Excelファイル)のパス(場所)を特定する ・ブックを開く ・ブックを閉じる ・上書き保存 ・名前を付けて保存 ・保存形式(ファイルの種類)について ・ExcelマクロVBA入門の対応ページ
第20回.全てのシートに同じ事をする(For~Worksheets.Count)・シートの指定方法 ・全シートの「印刷の向き」を「横」に設定します。 ・シート名に"横"と入っているシートだけ「印刷の向き」を「横」に設定します ・シート名に"削除"と入っていたらシートを削除する ・For Eachについて ・ExcelマクロVBA入門の対応ページ
第21回.ファイル一覧を取得する(Do~LoopとDir関数)・Dir関数 ・Dir関数の使い方 ・ファイルの一覧を取得するマクロVBAコード ・Do~Loopステートメント ・ExcelマクロVBA入門等の対応ページ
第22回.複数ブックよりデータを集める・第17回.セルにブック・シートを指定する ・第19回.ブックを開く・閉じる・保存する ・第21回.ファイル一覧を取得する ・複数ブックよりデータを集めるVBA
マクロ全体を最適化する:VBA再入門
第23回.複数のプロシージャーを連続で動かす(Callステートメント)・長い1つのプロシージャーを分割する ・プロシージャーを呼び出すCallステートメント ・ExcelマクロVBA入門等の対応ページ
第24回.マクロの呪文を追加してボタンに登録(ScreenUpdating)・マクロの呪文「Application.ScreenUpdating」を追加 ・ボタンの追加とマクロの登録 ・ExcelマクロVBA入門等の対応ページ
自動化への道:VBA再入門
以下は総復習として、これまでやってきたことをどうやって応用するかの実践例です。
この章は飛ばして、「最後に」を読んで次の学習に進んでも良いでしょう。
第25回.月別ブックより部署別シートに担当別に集計するNo1マクロ再入門と題しての連載もいよいよ大詰めです、これまでの総復習として、以下のような処理のマクロを書いてみましょう。■処理概要 月別のデータファイル(ExcelファイルまたはCSV)を読込み、※項目は、日付,部署,担当者,売上数,売上金額 これを、新規ブックを作り、部署別のシートに、担当者・年月ごとの集計値を出力す…
第26回.月別ブックより部署別シートに担当別に集計するNo2マクロ再入門の課題として、月別ブックより部署別シートに担当別に集計する、これを実現する実際のマクロを順に見ていきます。全体の処理手順は以下になります。■処理手順 ・ファイル一覧 シート「ファイル一覧」に、サブフォルダ「月別データ」内の全Excelファイルの一覧を取得 ・データ収集 シート「データ」に、
第27回.月別ブックより部署別シートに担当別に集計するNo3マクロ再入門の課題として、月別ブックより部署別シートに担当別に集計する、最も頭を悩ます、部署別のデータに集計します、少々複雑な処理になります。全体の処理手順は以下になります。■処理手順 ・ファイル一覧 シート「ファイル一覧」に、サブフォルダ「月別データ」内の全Excelファイルの一覧を取得 ・データ収集 シート「デ…
第28回.月別ブックより部署別シートに担当別に集計するNo4マクロ再入門の課題として、月別ブックより部署別シートに担当別に集計する、部署別のデータに集計する、最も頭を悩ます、少々複雑な処理になります。全体の処理手順は以下になります。■処理手順 ・ファイル一覧 シート「ファイル一覧」に、サブフォルダ「月別データ」内の全Excelファイルの一覧を取得 ・データ収集 シート「デー…
第29回.月別ブックより部署別シートに担当別に集計するNo5マクロ再入門の課題として、月別ブックより部署別シートに担当別に集計する、総仕上げとして、複数のマクロを連続実行させるようにして、シートにボタンを追加して完成させます。全体の作業手順は以下になります。・連続実行させるマクロを作成 ・ボタンを追加しマクロを登録する ■連続実行させるマクロを作成 Callプロシージャ名 …
最後に:VBA再入門
第30回.今後の覚えるべきことについてマクロ再入門と題として、シリーズ全30回の最終回になります、マクロ再入門で学んで、ある程度はマクロが書けるようになったものと信じます。しかし、やりたい事、やるべき事を、自由自在にマクロとして書けるようになるには、道はまだ半ばです。マクロ再入門は、少なくとも2回は復習してください。
VBAエキスパートを受験する人は
試験勉強としてだけではなく、VBA入門からの勉強としてとても良いと思います。
VBAエキスパート対策・VBAエキスパート試験リニューアル ・本シリーズの目的 ・VBAエキスパート学習の意義 ・VBAエキスパートの種類 ・VBAエキスパート公式テキスト ・筆者が模擬問題プログラムをやってみた ・各ページ内の構成 ・VBAベーシック:VBAエキスパート対策 ・VBAスタンダード:VBAエキスパート対策 ・あとがき:VBAエキスパート対策
このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。
記述には細心の注意をしたつもりですが、
間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。
掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。