エクセルの神髄
Excelマクロ再入門

ExcelマクロVBAの再入門、本を読んでもWEB見てもマクロがなかなか覚えられないという初心者向けに理屈抜きのやさしい解説
最終更新日:2019-06-17

Excelマクロ再入門


本を読んでも、WEBをみても、結局挫折してしまった方を対象に、マクロ再入門と題して連載を開始します、
理屈は最低限にとどめ、とにかくマクロVBAが書けるようになることを目的とします。


従いまして、ここを卒業出来たら、次はしっかりと基礎から応用までを学びなおす為、
ExcelマクロVBA入門
ExcelVBAとはエクセルの操作を自動化するマクロ機能で使われているプログラミング言語です。VBAは「MicrosoftVisualBasicApplications」の略になります。このVBA入門シリーズでは実務で必要とされるVBAの入門として基本から応用までのVBA全般を解説していきます。
こちらで復習しつつ、さらに次のステージに進んでください。

ただし、このマクロ再入門で扱う以上の知識が必ずしも必要という事ではありません。
ここでの内容を100%理解できれば、それだけで多くの事案をマクロで自動化できるのです。
ですので、ここでのマクロVBAを100%理解せずに他に進むことは避けてください。


下の一覧は、今後の記事の予定となります。
記事をアップしたときに、リンクを設定していきます。
あくまで予定なので、今後タイトルや回数は変更になる場合はあります。
また、画面の画像や、操作手順はExcel2010を基本とし、バージョンによる違いは注釈をつけます。

目標は、以下のような処理のマクロを書けるようになる事です。

月別のデータファイル(ExcelファイルまたはCSV)を読込み、
※項目は、日付,部署,担当者,売上数,売上金額
これを、新規ブックを作り、部署別のシートに、担当者・年月ごとの集計値を出力する。
※部署をシートにして、項目は、担当者,年月,売上数,売上金額

これもあくまで予定ですが、概ねこのくらいの処理が書けるようになることを目指します。
これを書く為に必要なVBAコードを順に20回程度で解説し、その後に具体的なVBAコードを数回に分けて書いていきます。

VBAコードの解説時には、目標のVBAコードには必要なくても、関連する重要事項については同時に解説を加えます。

ただし、関連事項の解説は必用最低限にとどめます。
私のマクロを教えてきた経験から、マクロを覚えられない人に共通するのは、
なんでもかんでも知ろうとする
これは、良く言えば好奇心旺盛で良い事なのですが、悪く言えば集中力に欠けるという事です。
好奇心旺盛に、なんでも知ろうとした結果、何も覚えられないという結果になっています。
なんでも知ろうとして、全て覚えられた人は、少なくともこのページに訪れていないはずです。
誤解を恐れずに言いますと、
途中で疑問が出ても気にしないでください。
ここに書いてあることだけを100%全て覚えてください。
ここに書いてあることをマスターした後に、疑問で残った事を調べるようにして下さい。
ですが、
ここで解説するVBAコードを理解した後には、途中の疑問点の多くは解決していたり、簡単に自分で調べられるようになっているはずです。

準備

  • 第1回.マクロを書く準備をする(VBAとVBE)
    マクロを書こうと思ったら、まず初めにマクロを書く準備をする必要があります。と、その前に、ひとつ説明しておくことがあります。エクセルのマクロとVBAという言葉の意味です。「マクロ」とは、エクセルの操作を自動化するもので、その自動化する機能を「マクロ」と呼びます。
  • 第2回.マクロを書いて動かす(SubとF5)
    マクロを実際に書いて動かしてみましょう、知識の積み上げも必要ですが、それ以上に必要なのが体験の積み上げです、マクロ習得においては、とにかく書く、とにかく動かす、この経験に勝るものはありません。前回のマクロを書く準備は完了していますよね。ではさっそく書いていきましょう。

セルを扱う

  • 第3回.セルに数字や文字を入れる(RnageとCells)
    エクセルはセルが基本単位ですセルが縦横に集まってシートが出来てシートが集まってブックが出来ます今回よりその基本単位のセルの扱い方に進みます。さっそく書いてみましょう。sub練習3 Enter TAB range("A1")="おはよう" Enter このようになっていますね
  • 第4回.セルの値を使って計算する(四則演算)
    エクセルは表計算ソフトです、何はともあれ計算出来なければなりません、計算とは、2つ以上の数値を演算するという事です、エクセルでは、セルに入っている数値を使って計算します。下の例でやってみましょう。A1セルとB1セルの数値で、四則演算してみます。
  • 第5回.同じ計算を行数分繰り返す(For~Next)
    エクセルの表とは、横に項目が並び、縦にデータが入っているものです、この表を、簡単に計算できなければマクロを作る意味がありません、同じ計算を、データ行数分繰り返すマクロVBAコードです。以下の表で、データ行数分繰り返し計算をやってみましょう。
  • 第6回.表の先頭から最終行まで繰り返す(ForとEnd(xlUp).Row)
    エクセルの表は、横の項目はあまり変更はないものですが、縦のデータ数、つまり行数は常に変わるものです、前回のように、固定の回数しか繰り返せないのでは困ります、データ数に応じて、最終行まで繰り返す方法が必要です。データの最終行が分かれば良いのです。
  • 第7回.セルの値によって計算を変える(Ifステートメント)
    エクセルでは、他の列の値によって計算式を変えたりすることが多々あります、つまり、条件により処理を分けるということです、シートではIF関数を使いますが、マクロVBAでもIfなのですが書き方が違います。以下の表を使いましょう。単価が、税込み単価と、税抜き単価が混在している表になります。
  • 第8回.表範囲をまとめて消去する(OffsetとClearContents)
    エクセルのマクロ処理では表範囲を一旦クリアしてから処理することが多くありますつまり表範囲を初期化してから何らかの処理をするという事です。しかし表範囲をクリアすると言っても表そのものを消してしまう訳にはいかない事が多くデータ部分つまり見出しや計算式の入ってないセルのみを消去しなければなりません。

エクセルの便利機能

  • 第9回.関数という便利な道具(VBA関数)
    プログラミング言語であるVBAには多くの人が共通して必要となる機能が用意されていますこの用意されている機能を関数と呼びます関数は皆が共通して必要とする機能を盛り込んだ小さなプログラムです。関数を使わなければできない事も多くありますし関数を使う事で長いプログラムを書かなくて済む事になります。
  • 第10回.ワークシートの関数を使う(WorksheetFunction)
    マクロVBAに用意されている関数を一般にはVBA関数と呼びます、VBA関数は150程度あり便利に使えます、しかしエクセルには、ワークシートで使える豊富な関数があります、これをマクロVBAでも使えれば、さらに便利になります。VBAでワークシート関数を使う場合は、ちょっとした書き方の決まりがあります。
  • 第11回.分からない事はエクセルに聞く(マクロの記録)
    エクセルでマクロVBAを書いていると、分からないことにたくさん出くわします、そんな時には、何かで調べることになります、このサイトを訪れている人のほとんどがそういう目的でしょう、しかし、まずは分からない事はエクセルに聞いてみる事です。エクセルには、マクロの記録というものが付いています。
  • 第12回.エクセルの言葉を理解する(オブジェクト、プロパティ、メソッド)
    ExcelマクロVBAを書いて実行すると、何やら難しい日本語らしきメッセージが表示されることがあります、エクセルが何かを伝えようとしている訳ですが、何を言っているのかを理解してあげなければエクセルがかわいそうです。しかし、エクセルが表示するエラーメッセージの言葉の意味位は知っていて損はありません。
  • 第13回.セルのコピペ方法を知る(CopyとPaste、さらに)
    エクセルVBAでは、セルをコピーして他のセルに貼付けることが多くあります、セルをコピーして貼り付け、セルをコピーして値貼り付け、セルをコピーして書式貼り付け、等々、これらを必要に応じて、使い分ける必要があります。シートでの実際の操作に照らして、コピーのVBAコードを見ていきましょう。
  • 第14回.セルの書式を設定する(NumberFormatLocal,Font,Barders,Interior)
    エクセルは表計算ソフトなので計算が主体でその計算結果こそが重要ですとはいえその結果を表示する表の見栄えも重要な要素になります数値の表示形式配置フォント罫線塗りつぶし等々 セルの書式を整えて見やすい表にしたいところです。VBAでセルの書式を設定する時は必ずシートでの「セルの書式設定」ダイアログ画面と対で覚えるようにしましょう。
  • 第15回.手作業で出来なければマクロは書けない
    エクセルの基本は、シート上で効率よく速やかに関数と機能を使い目的の出力を得る事です、VBAは、この手作業を自動化するものであり、決して特別なものではありません、まずは手作業でやってみて、それをVBAコードにするという手順が重要です。もちろん、手作業で出来ない事でもVBAで出来ることもありますが、
  • 第16回.エクセルの機能を上手に使う
    エクセルには便利な機能が豊富に用意されています、マクロVBAでもエクセルの便利な機能を上手く使う事を考えましょう、エクセルの便利な機能を上手く使い、組み合わせることで、マクロVBAコードがとても簡単になり、すっきりしたVBAコードになります。以下の表で考えてみましょう。

ブック・シートを扱う

  • 第17回.セルにブック・シートを指定する(Workbooks,Worksheets,With,Set)
    VBAで自動化する時にシートが1つという事はむしろ稀で多くの場合は複数のブック複数のシートを扱う事になりますそこでどのブックのどのシートのセルかを指定する必要が出てきます。RangeやCellsでセルを指定するだけではどのブックのどのシートか分からない… RangeやCellsだけを書いた場合には
  • 第18回.シートをコピー・挿入・削除する(Worksheets,Copy,Add,Delete)
    VBAで同形式のシートを大量に作るときは事前に雛形としてのシートを作成しておきそれをコピーして複数シートを作成しますまた新規シートを挿入したり不要になったシートを削除したりとシートを操作することが結構多くあります。■シートのコピー シート名を右クリックするとここで「移動またはコピー」このダイアログ画面での指定方法により
  • 第19回.ブックを開く・閉じる・保存する(Workbooks,Open,Close,Save,SaveAs)
    VBAで最も便利に感じるのが他のブックからデータを取得したり他のブックのデータを変更したりする場合でしょう関数では出来ない完全自動化のシステムが作成できます。ブック(Excelファイル)を扱う上で一番の問題はそのファイルがどこにあるかつまりどこのフォルダに入っているかを特定しなければならない点です。
  • 第20回.全てのシートに同じ事をする(For~Worksheets.Count)
    エクセルの作業で最も面倒かつ時間のかかる作業は同じ作業の繰り返しでしょう1回だけなら数秒でもそれを何十回と繰り返すとなると… 多くのシートがあり同じ作業を全シートに行うとなると…マクロの出番です。シートの指定方法はWorksheets("シート名") Worksheets(インデックス) ActiveSheet この3通りを紹介しまし…
  • 第21回.ファイル一覧を取得する(Do~LoopとDir関数)
    マクロVBAで他のブック(ファイル)を扱う時、まず問題となるのがファイル名です、ファイル数が常に同じでファイル名も変化しなければ良いのですが… ファイル数もファイル名も決まっていない場合は、まずはファイルの一覧を取得する必要があります。ファイル名を取得するには、Dir関数を使います。
  • 第22回.複数ブックよりデータを集める
    他のブックを開いて指定シートの指定セル範囲のデータを取得する、取得したデータを使って、目的の表を作り上げる、これこそマクロVBAの真価が問われる処理でしょう。これまでにやってきた内容が出来れば大丈夫です。これまでの内容を上手く組み合わせるだけです。

マクロ全体を最適化する

  • 第23回.複数のプロシージャーを連続で動かす(Callステートメント)
    自動化するマクロVBAを書くとき、必要な処理内容を1つのプロシージャーに全て書くことは難しいです、細かい単位の処理ごとにプロシージャーを書き、まとめて実行するようにします。前回の、第22回.複数ブックよりデータを集める ここでは以下のVBAコードを書きました。
  • 第24回.マクロの呪文を追加してボタンに登録(ScreenUpdating)
    VBAが完成したらシートにボタンを配置してマクロを登録しますボタンのクリックでマクロが起動され自動化の完成になりますとその前にマクロのちょっとした呪文をVBAに追加しましょう。前回の 第23回.複数のプロシージャーを連続で動かす ここで作成したプロシ-ジャーは3つありますが実際に起動するのは最後の

自動化への道

  • 第25回.月別ブックより部署別シートに担当別に集計するNo1
    マクロ再入門と題しての連載もいよいよ大詰めですこれまでの総復習として以下のような処理のマクロを書いてみましょう。■処理概要 月別のデータファイル(ExcelファイルまたはCSV)を読込み※項目は日付,部署,担当者,売上数,売上金額 これを新規ブックを作り部署別のシートに担当者・年月ごとの集計値を出力する。
  • 第26回.月別ブックより部署別シートに担当別に集計するNo2
    マクロ再入門の課題として月別ブックより部署別シートに担当別に集計するこれを実現する実際のマクロを順に見ていきます。全体の処理手順は以下になります。■処理手順 ・ファイル一覧 シート「ファイル一覧」にサブフォルダ「月別データ」内の全Excelファイルの一覧を取得 ・データ収集 シート「データ」に
  • 第27回.月別ブックより部署別シートに担当別に集計するNo3
    マクロ再入門の課題として月別ブックより部署別シートに担当別に集計する最も頭を悩ます部署別のデータに集計します少々複雑な処理になります。全体の処理手順は以下になります。■処理手順 ・ファイル一覧 シート「ファイル一覧」にサブフォルダ「月別データ」内の全Excelファイルの一覧を取得 ・データ収集 シート「データ」に
  • 第28回.月別ブックより部署別シートに担当別に集計するNo4
    マクロ再入門の課題として月別ブックより部署別シートに担当別に集計する部署別のデータに集計する最も頭を悩ます少々複雑な処理になります。全体の処理手順は以下になります。■処理手順 ・ファイル一覧 シート「ファイル一覧」にサブフォルダ「月別データ」内の全Excelファイルの一覧を取得 ・データ収集 シート「データ」に
  • 第29回.月別ブックより部署別シートに担当別に集計するNo5
    マクロ再入門の課題として月別ブックより部署別シートに担当別に集計する総仕上げとして複数のマクロを連続実行させるようにしてシートにボタンを追加して完成させます。全体の作業手順は以下になります。・連続実行させるマクロを作成 ・ボタンを追加しマクロを登録する ■連続実行させるマクロを作成 Callプロシージャ名 これで

最後に

  • 第30回.今後の覚えるべきことについて
    マクロ再入門と題として、シリーズ全30回の最終回になります、マクロ再入門で学んで、ある程度はマクロが書けるようになったものと信じます。しかし、やりたい事、やるべき事を、自由自在にマクロとして書けるようになるには、道はまだ半ばです。マクロ再入門は、少なくとも2回は復習してください。

VBAエキスパートを受験する人は

試験勉強としてだけではなく、VBA入門からの勉強としてとても良いと思います。

VBAエキスパート対策
VBAエキスパート試験に合格するために必要なVBA知識についての対策です。試験に合格するにはその知識だけではなく準備や試験当日の諸注意も必要ですがここでは基本的にはVBAの知識に絞った対策になります。VBAエキスパート試験に関する全般的な事はVBAエキスパート公式サイト こちらをご覧ください。




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

文字列結合&でコンパイルエラーになる理由|VBA技術解説(9月19日)
Byte配列と文字コード関数について|VBA技術解説(8月20日)
PowerQueryの強力な機能をVBAから利用する方法|VBA技術解説(8月4日)
練習問題31(セル結合を解除して値を埋める)|VBA練習問題(7月30日)
練習問題30(マトリックス→リスト形式)|VBA練習問題(7月25日)
Applicationを省略できるApplicationのメソッド・プロパティ一覧|VBA技術解説(7月22日)
コレクション(Collection)の並べ替え(Sort)に対応するクラス|VBA技術解説(7月20日)
CSVの読み込み方法(ジャグ配列)|VBAサンプル集(7月15日)
その他のExcel機能(グループ化、重複の削除、オートフィル等)|VBA入門(7月14日)
オートフィルタ退避回復クラスを複数シート対応させるVBAクラス|VBA技術解説(7月6日)


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

1.最終行の取得(End,Rows.Count)|VBA入門
2.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
3.RangeとCellsの使い方|ExcelマクロVBA入門
4.Range以外の指定方法(Cells,Rows,Columns)|VBA入門
5.変数とデータ型(Dim)|ExcelマクロVBA入門
6.繰り返し処理(For Next)|ExcelマクロVBA入門
7.マクロって何?VBAって何?|ExcelマクロVBA入門
8.セルに文字を入れるとは(Range,Value)|VBA入門
9.ひらがな⇔カタカナの変換|エクセル基本操作
10.空白セルを正しく判定する方法(IsEmpty,IsError,HasFormula)|VBA技術解説



  • >
  • >
  • Excelマクロ再入門

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


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




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