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

マクロが覚えられないという初心者向けに理屈抜きのやさしい解説
公開日:2015-09-23 最終更新日: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での書き方が分からない時に調べる方法

第68回.シートの保護、ブックの保護(Protect)
・シートの保護 ・シートの保護解除 ・シート保護・解除の実践例 ・ブックの保護 ・ブックの保護解除 ・最後に
第70回.ウィンド枠の固定(FreezePanes)
ウィンドウ枠を固定し、行の上部や列の左側がスクロールされないようにする場合のマクロVBA解説になります。ワークシートの行の上部や列の左側は、通常は見出しとして使う事が多くなります。ウィンドウ枠を固定することで見出しの行や列を固定し、スクロールしても見出しが表示されたままにする場合が多くなります。
第71回.印刷(PrintOut)
・PrintOutメソッド ・PrintOutメソッドの使用例 ・印刷時にプリンターを選択したい場合 ・印刷総ページ数の取得 ・間違った印刷を大量に行わないわない為には
第73回.ページ設定(PageSetup)
・PageSetupオブジェクト ・PrintCommunicationプロパティ ・ヘッダー・フッターのプロパテの設定方法 ・余白の設定方法 ・印刷範囲の設定/クリア:PrintArea ・総ページ数:Pages.Count ・改ページの位置を設定:PageBreak ・最後に
第87回.WorksheetFunction(ワークシート関数を使う)
・ワークシート関数の使い方 ・WorksheetFunctionで使用できる関数 ・個別の関数の使い方 ・関数の結果(戻り値) ・WorksheetFunctionの使用例. ・検索系の関数での日付の扱い ・WorksheetFunctionのエラー対処 ・最後に
第88回.並べ替え(Sort)
・Range.Sortメソッド・・・Excel2003までのソート ・2007以降の並べ替え ・Excel2003までのSortとExcel2007以降のSortの使い分け
第89回.オートフィルタ(AutoFilter)
・Range.AutoFilterメソッド ・AutoFilterModeプロパティ ・AutoFilterオブジェクト ・オートフィルタのVBA使用例 ・日付のフィルタ ・オートフィルタまとめ
第90回.フィルタオプションの設定(AdvancedFilter)
・フィルター詳細設定の使い方 ・Range.AdvancedFilter メソッド ・フィルターオプションの設定の関連記事
第91回.条件付き書式(FormatCondition)
・FormatConditionsコレクション ・FormatConditionオブジェクト ・条件付き書式のマクロVBA実践例 ・マクロVBAの条件付き書式について
第126回.入力規則(Validation)
・Validationオブジェクト ・入力規則(Validation)の使用例 ・入力規則を設定しても無効データが入力されてしまう場合への対処
第92回.名前定義(Names)
・Namesコレクション ・Nameオブジェクト ・RangeオブジェクトのNameプロパティ ・名前定義を使ったRangeの書き方 ・シートコピー時は名前定義に注意 ・名前定義の実践例
第93回.ピボットテーブル(PivotTable)
・ピボットテーブル(PivotTable)を構成するオブジェクト群 ・Excel2010のピボットテーブル(PivotTable)のマクロ記録 ・Excel2003のピボットテーブル(PivotTable)のマクロ記録 ・Excel2010とExcel2003のピボットテーブルVBAの違いについて ・ピボットテーブル(PivotTable)のマクロVBA実践例
第94回.コメント(Comment)
・コメント(Comment)に関する各種オブジェクト ・コメント(Comment)の挿入 ・コメント(Comment)の削除 ・コメント(Comment)の編集 ・コメント(Comment)実践例
第95回.ハイパーリンク(Hyperlink)
・Hyperlinksコレクション ・Hyperlinkオブジェクト ・ハイパーリンクの追加 ・ハイパーリンクの削除 ・既に設定されているハイパーリンクの扱い方



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

第12回.エクセルの言葉を理解する(オブジェクト、プロパティ、メソッド)

・VBAが表示するメッセージ ・オブジェクト、プロパティ、メソッド ・プロパティとメソッドの違い ・オブジェクトの階層(親子構造) ・プロパティの省略 ・エクセルの言葉であるVBAを日本語に翻訳する ・最終行取得のコードを訳してみる ・VBA用語を覚えることについて ・ExcelマクロVBA入門等の対応ページ
第13回.セルのコピペ方法を知る(CopyとPaste、さらに)
・セルをコピーして貼り付け ・セルをコピーして値貼り付け ・セルをコピーして書式貼り付け ・PasteSpecial(値貼り付け、書式貼り付け等)の細かい指定 ・もっと簡単なコピペ方法はないものか ・もっと効率的な「セルをコピーして貼り付け」 ・マクロならではの「値のコピー」 ・「セルのコピペ方法を知る」のまとめ ・ExcelマクロVBA入門等の対応ページ
第14回.セルの書式を設定する(NumberFormatLocal,Font,Borders,Interior)
・「セルの書式設定」ダイアログ画面 ・表示形式 ・フォント ・罫線 ・塗りつぶし ・「セルの書式を設定する」のまとめ ・ExcelマクロVBA入門の対応ページ
第15回.手作業で出来なければマクロは書けない
第16回.エクセルの機能を上手に使う
・エクセルの機能を使った例 ・普通にマクロVBAを書くと ・C2セルに計算式を入れ、フィルハンドルをダブルクリックでオートフィル ・C2セルに計算式を入れ、C2セルをコピー、C3~C11を選択し貼り付け ・C2~C11を選択し、計算式を入力しCtrl+Enterで一括入力 ・マクロの記録を参考にVBAを書いてみると、 ・どのエクセル機能を使うかを考える ・並べ替え ・オートフィルター ・エクセルの機能を上手に使う ・Excelマクロ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


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

ブール型(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)
累計を求める数式あれこれ|エクセル関数応用(2024-01-22)
複数の文字列を検索して置換するSUBSTITUTE|エクセル入門(2024-01-03)
いくつかの数式の計算中にリソース不足になりました。|エクセル雑感(2023-12-28)


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

1.最終行の取得(End,Rows.Count)|VBA入門
2.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
3.RangeとCellsの使い方|VBA入門
4.ひらがな⇔カタカナの変換|エクセル基本操作
5.繰り返し処理(For Next)|VBA入門
6.変数宣言のDimとデータ型|VBA入門
7.ブックを閉じる・保存(Close,Save,SaveAs)|VBA入門
8.並べ替え(Sort)|VBA入門
9.セルのクリア(Clear,ClearContents)|VBA入門
10.Findメソッド(Find,FindNext,FindPrevious)|VBA入門




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


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


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