VBA再入門
第15回.手作業で出来なければマクロは書けない

マクロが覚えられないという初心者向けに理屈抜きのやさしい解説
最終更新日:2020-09-26

第15回.手作業で出来なければマクロは書けない


エクセルの基本は、シート上で効率よく速やかに関数と機能を使い目的の出力を得る事です。
マクロVBAは、この手作業を自動化するものであり決して特別なものではありません。


まずは手作業でやってみて、それをVBAコードにするという手順が重要です。
もちろん、手作業で出来ない事でもマクロVBAで出来ることもありますが、それはむしろ極一部の事です。
マクロVBAを書き始める前に、事前に手作業でやってみることで、
やるべき内容の整理と確認ができて、マクロVBAを書くときに混乱しなくなります。
For~Nextで処理すれば良いような場合でも、1行だけで良いので手作業でやってみる事です。
そもそも、

手作業でできない事を、マクロVBAで書ける訳がありません。
日本語で説明できない事を、マクロVBAで書ける訳がありません


もっと根本的な話をすれば、人は知らない事はやろうとしません。
少なくとも、出来るかもしれないという考えがあって初めて挑戦するものです。
だからこそ、エクセルにどんな機能があるかを知らなければマクロVBAを書けるはずがないのです。
マクロVBAで自動化するなら、

・エクセルの機能を知る
・手作業でやってみる
・マクロの記録でVBAコードを調べる
・マクロVBAを書いてみる


この手順が必要です。


エクセルの機能を知る

以下のダイアログ画面は、
各タブを開いて、それぞれの機能は十分に理解しておいてください。

エクセル マクロ VBA 参考画面

エクセル マクロ VBA 参考画面

エクセル マクロ VBA 参考画面

エクセル マクロ VBA 参考画面

エクセル マクロ VBA 参考画面

エクセル マクロ VBA 参考画面

これらの各ダイアログで出来る事を知っていれば、
後は、マクロの記録でVBAコードは調べられます。

例えば、以下の表をマクロで作成した後、
列幅を調整しようとしたとき、

エクセル マクロ VBA 参考画面

考え方が何通りかあります。

・5列とも同一の固定幅にする
・データの最長幅に自動で合わせる
・見出し文字の幅に合わせる


この3通りのマクロVBAが書けるでしょうか・・・
これを、書籍・ネットで調べていたら、時間がいくらあっても足りません。
手作業で出来れは、マクロの記録で一発です。

5列とも同一の固定幅にする
エクセル マクロ VBA 参考画面

データの最長幅に自動で合わせる
エクセル マクロ VBA 参考画面


この状態で、ダブルクリック
または、「ホーム」→「書式」→「列の幅の自動調整」

見出し文字の幅に合わせる
エクセル マクロ VBA 参考画面

この状態で、「ホーム」→「書式」→「列の幅の自動調整」

それぞれ、以下のような、マクロの記録となります。

エクセル マクロ VBAコード

自動作成されたVBAコードは簡単なものですし、マクロの記録で簡単に調べられます。
しかし、操作方法を知らなければ、これらを調べるのはとても時間がかかり困難な事になります。

ワークシート関数を知る

エクセルには、豊富なワークシート関数があります。
この関数を活用しないと、無駄なマクロVBAを書くことになります。
以下の表で、出席者の数をメッセージボックスに表示するとして、

エクセル マクロ VBA参考

もし、COUNTIF関数を知らないと、

エクセル マクロ VBAコード

COUNTIF関数を知っていれば、

エクセル マクロ VBAコード

もちろん、色々な条件により、前者のようなVBAコードを書いた方が良い場合もないことはありませんが、
少なくとも、今回の例の場合は無駄以外の何物でもありません。
同様に、

MATCH関数を知らなかったら・・・
VLOOKUP関数を知らなかったら・・・

これらと同じ機能をVBAで書こうとしたら、大変だという事は説明が要らないでしょう。

「手作業で出来なければマクロは書けない」のまとめ

手作業でやってみることで、処理内容の整理と確認になります。
結果として、
効率的なマクロVBAコードの記述につながります。


ExcelマクロVBA入門の対応ページ

第3回.マクロの記録
エクセルのマクロを説明する上では、まず最初に、「マクロの記録」を説明しなければなりません。マクロの自動記録とも言われたりしますが、要は、エクセルの手動での操作が、自動記録されるものです、もちろん、マクロの言語であるVBAで記録されます。実際には、マクロの記録から作成されたVBAコードを修正して使う事はしません。

第68回.シートの保護、ブックの保護(Protect)
せっかく作ったExcelシートを間違って壊してしまったり、Excel操作に慣れない人が壊してしまったりしたら困ります。無用な改変、意図しない変更からシートを保護するには、ワークシートを保護します。ただしシートの削除は、シート保護では守れません、シートの保護に対応するには、ブックの保護が必要です。
第70回.ウィンド枠の固定(FreezePanes)
ウインド枠を固定し、行の上部や列の左側がスクロールされないようにする場合のマクロVBA解説になります。ワークシートの行の上部や列の左側は、通常は見出しとして使う事が多くなります。ウィンドウ枠を固定することで見出しの行や列を固定し、スクロールしても見出しが表示されたままにする場合が多くなります。
第71回.印刷(PrintOut)
シートの内容をマクロVBAで印刷する場合は、PrintOutメソッドを使用します。このPrintOutメソッドが使える対象オブジェクトは複数あります、ブック、シート、セル、それぞれにPrintOutメソッドが存在するので、印刷範囲によって使い分けてください。
第73回.ページ設定(PageSetup)
VBAで印刷のページ設定をするには、PageSetupオブジェクトのプロパィを設定することで行います。基本的には、事前に印刷するシートのページ設定をしておくことが望ましいのですが、VBAで作成したシート等、事前にページ設定することができない場合はマクロVBAで印刷のページ設定をします。
第87回.WorksheetFunction(ワークシート関数を使う)
VBA関数以外に、Excelワークシート関数をマクロVBAで使うことが出来ます、ワークシート関数は、VBA関数よりはるかに多くの関数があるので、ぜひ活用したいところです。。ワークシート関数を使う事で、VBAコードを非常に簡潔に記述することが出来る場合が多いものです。
第88回.並べ替え(Sort)
並べ替えは、データ処理の基本中の基本です、乱雑なデータを並べ替えることは、データ処理の第一歩です。マクロVBAで並べ替えを実行するには、シート操作の「並べ替え」の機能を使用することになります。そもそもデータを並べ替えるという事は、そのデータのキーが何かを考えるという事です。
第89回.オートフィルタ(AutoFilter)
オートフィルタはExcelのデータベースとしての非常に強力な機能を提供してくれています、VBAで、必要なデータだけに絞り込んで他のシートにコピーしたり、不要なデータを一括で削除したりする場合は、とても高速に処理することができます。VBAでオートフィルタを操作するには、以下のメソッド・プロパティおよびオブジェクトを使用します。
第90回.フィルタオプションの設定(AdvancedFilter)
ワークシートの操作「フィルタオプションの設定」のVBAの記述になります、便利な機能ではありますが、そもそも、ワークシートの操作が難しいこともあり、あまり有効に使われていないように感じます。フィルタ詳細設定の使い方 「データ」タブ→「並べ替えとフィルター」グループの「詳細設定」この機能を使う場合のVBAになります。
第91回.条件付き書式(FormatCondition)
条件付き書式は、シート上で設定しておいた方が良いのですが、事前に設定しておけない場合は、VBAで条件付き書式を設定します。VBAで条件付き書式を設定する場合は、セル(Rangeオブジェクト)のFormatConditionsコレクションにFormatConditionオブジェクトを追加することで行います。
第126回.入力規則(Validation)
入力規則は、Validationオブジェクトになります、ワークシート範囲の入力規則を表します、入力規則は、シート上で設定しておいた方が良い場合が多いですが、マクロVBAで設定する必要も出てきます。入力規則を設定するには、Validationオブジェクトを使います。
第92回.名前定義(Names)
名前定義をマクロVBAで扱う場合の解説になります、名前定義は、複数セル範囲や単一セルに対して名前を付けることで、そのセル範囲を参照する時に名前で参照できるようにするものです。名前で参照できることで、セル位置(行位置、列位置)を固定値で指定しなくて済むようになります。
第93回.ピボットテーブル(PivotTable)
ピボットテーブルをVBAで操作する事が良いかどうか、少々疑問な部分もあります。しかし、ピボットテーブル(PivotTable)はエクセルでは必須機能になりますので、少なくとも、ピボットテーブルの基本くらいは知っておくべきでしょう。今回はピボットテーブル(PivotTable)のオブシェクトをざっと見てから、
第94回.コメント(Comment)
VBAでセルにコメントを入れたり、編集したり、削除したりするVBAコードを解説します。セルに対する注意書き等をコメントとして入れておくことで、使いやすいシートにします。コメント(Comment)に関する各種オブジェクト Rangeオブジェクト RangeオブジャクトのCommentに関するプロパティとメソッド Commentオブジェクト セルのコメントを…
第95回.ハイパーリンク(Hyperlink)
VBAでハイパーリンク(Hyperlink)を追加したり削除したりする場合を解説します。ハイパーリンクは、Hyperlinkオブジェクトです、そして、Hyperlinkオブジェクトの集まりであるコレクションが、Hyperlinksコレクションになります。



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

第12回.エクセルの言葉を理解する(オブジェクト、プロパティ、メソッド)
第13回.セルのコピペ方法を知る(CopyとPaste、さらに)
第14回.セルの書式を設定する(NumberFormatLocal,Font,Barders,Interior)
第15回.手作業で出来なければマクロは書けない
第16回.エクセルの機能を上手に使う
第17回.セルにブック・シートを指定する(Workbooks,Worksheets,With,Set)
第18回.シートをコピー・挿入・削除する(Worksheets,Copy,Add,Delete)
第19回.ブックを開く・閉じる・保存する(Workbooks,Open,Close,Save,SaveAs)
第20回.全てのシートに同じ事をする(For~Worksheets.Count)
第21回.ファイル一覧を取得する(Do~LoopとDir関数)
第22回.複数ブックよりデータを集める


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

フォルダとファイルの一覧を取得(os,glob,pathlib)|Python入門(9月26日)
import文(パッケージ・モジュールのインポート)|Python入門(9月24日)
例外処理(try文)とexception一覧|Python入門(9月23日)
リスト内包表記|Python入門(9月22日)
Pythonの引数は参照渡しだが・・・|Python入門(9月21日)
lambda(ラムダ式、無名関数)と三項演算子|Python入門(9月20日)
関数内関数(関数のネスト)とスコープ|Python入門(9月18日)
関数の定義(def文)と引数|Python入門(9月18日)
組み込み関数一覧|Python入門(9月17日)
辞書(dict型)|Python入門(9月16日)


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

1.最終行の取得(End,Rows.Count)|VBA入門
2.RangeとCellsの使い方|VBA入門
3.変数宣言のDimとデータ型|VBA入門
4.マクロって何?VBAって何?|VBA入門
5.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
6.Range以外の指定方法(Cells,Rows,Columns)|VBA入門
7.繰り返し処理(For Next)|VBA入門
8.セルに文字を入れるとは(Range,Value)|VBA入門
9.とにかく書いてみよう(Sub,End Sub)|VBA入門
10.マクロはどこに書くの(VBEの起動)|VBA入門




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


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



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