VBA入門
マクロとは?VBAとは?VBAでできること

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

第1回.マクロとは?VBAとは?VBAでできること


エクセルのマクロとは何でしょうか?
ExcelのVBAとは何でしょうか?
マクロで何が出来るのでしょうか?
VBAで何が出来るのでしょうか?


「マクロ」とは、エクセルの操作を自動化する機能です。
エクセルを自動化する機能が、「マクロ」と呼ばれています。

マクロの中身はプログラムです。
そのプログラムを記述しているプログラミング言語が、VBA(Visual Basic for Applications)です。

マクロとVBAの違いについて誤解されている場合も多いようですが、
Excel操作を自動化する「マクロ機能」の中身が、プログラミング言語である「VBA」で記述されているという事です。

マクロとVBAの違い
マクロVBAで何ができるのか
マクロVBAの学習
これらについて解説していきます。

マクロとは

エクセルの操作を自動化する機能です。

・マクロはVBA言語で書かれている。
・Excelの全機能を操作出来ます。
・手動操作を記録できる。
・Windowsの設定やインターネットのデータ収集も可能。

エクセルのマクロ機能の中には、「マクロの記録」という機能が搭載されていて、
手動での操作がマクロとして記録されます。
つまりVBAコードが自動で書かれます。

VBA マクロ

この自動で記録されたマクロを実行することで操作を自動化できます。
ただし、この自動記録されたマクロには後に説明(マクロVBA学習の必要性)するような問題点があります。


VBAとは

マイクロソフトのプログラミング言語「Microsoft Visual Basic」を、同社製品のMicrosoft Officeに搭載したものです。

・Officeに最初から備わっている機能では不十分なので、もっと機能拡張したい
・手作業が大変なので、自動処理させたい

これらを実現するのがマクロ機能であり、具体的に記述する時の言語がVBAです。

言語としてのVBAは、ほぼ英単語がそのまま使われています。
むしろ単数形、複数形などが忠実に使われたりしています。
ですので、英単語を順に読んでいけば、ある程度は記述されている事を理解できます。
(知っている英単語であればという事です。)
しかし英語でも同じですが、なんとなく読めたとしても、書いたり話したりするのは難しいものです。
つまりVBAを覚えるという事は、VBAを書けるようになるという事になります。
もちろん、書けるようになるには、読めることが前提にはなります。


マクロVBA学習の必要性

マクロの記述言語であるVBAを覚える事で、より複雑な処理のマクロを作成することができるようになります。
そして、日々の単純な繰り返し作業を自動化し業務を効率化することができるようになります。

「マクロの記録」だけでも、それなりの自動化は実現できるのですが、
どうしても無駄が多く非効率なプログラムコードとなっています。
また、「マクロの記録」では記録されない操作があったり、
そもそも、手動での操作が出来ない場合も多くあります。
プログラムとして最も重要なものは条件分岐と繰り返しです。
・同じ作業を何回か繰り返す。
・条件により操作内容を切り替える。
これらはマクロの記録では記録できません。

このシリーズ「マクロVBA入門」では、初めてマクロを使う人を対象として、
少しずつ無理なく進めるように説明していきます。


VBAによる自動化とは条件分岐しつつ処理を繰り返すだけ

VBAによる自動化とは、つきつめれば条件分岐と繰り返し処理になります。
ブログラミングによる自動化の大部分は、
条件により分岐しつつ繰り返す、繰り返しつつ条件分岐する。
これにつきます。

条件分岐と繰り返し処理は、VBAではIf文とFor文になります。
・条件分岐:If~End Ifステートメント
・繰り返し処理:For~Nextステートメント
If文とFor文の基本をしっかりと覚え、これらIf文とFor文をネスト(入れ子)させるプログラミング技術を習得してください。
ForとIfのネストこそがVBAの要点
・第1に考える事・・・大外の繰り返しを作成 ・第2に考える事・・・1支店だけを作成 ・第3に考える事・・・昨対比の判定 ・第4に考える事・・・3支店の繰り返し ・第5に考える事・・・3支店の繰り返しを全体の中に組み込む ・最後に考える事・・・最後の仕上げ ・目指すべきVBAの書き順・・・VBAが上達したら


VBAでできること

マクロVBAでできることは広範囲に及びますし、極論を言えば何でも(限度はありますが)できてしまいます。
  • エクセル操作全般の自動化
  • フォルダ、ファイルの操作
  • メール送受信
  • WEBデータの収集、WEBブラウザの自動操作
  • データベースへ接続してのデータ取得更新
  • 他アプリケーションの自動操作
あげていくときりがないのですが、PC操作のほとんどの事が自動化することができます。
もちろん操作内容により、実現難易度および学習難易度は変わってきます。

以下は、本サイト内で掲載しているものの一部です。
VBAを使えば、こういうことができるというサンプルとしていくつか抜粋してみました。

VBA100本ノック ・・・ 実務に即した練習問題です。つまり出題されていることがVBAで出来ます。
・VBA100本ノック目次 ・VBA100本ノック 魔球編 ・VBA100本ノック 迷宮編
VBAでのCSVの扱い方まとめ ・・・ CSVを取り込む方法を何通りも掲載しています。
・本サイトにあるCSV関連記事一覧 ・CSVの読込方法 ・CSVの読み込み方法(改) ・CSVの読み込み方法(改の改) ・CSVの読み込み方法(ジャグ配列) ・CSVの読み込み方法(ジャグ配列)(改) ・CSVの出力(書き出し)方法 ・UTF-8でCSVの読み書き(ADODB.Stream) ・ADOでCSVの読み込み(SQL)
エクセルでファイル一覧を作成 ・・・ Dir関数からFileSytemobjectへ順に説明しています。
VBAでサブフォルダ以下も含めて全てのファイル一覧を取得します。最初はサブフォルダは無視して、VBAにある関数とステートメントだけで作成します、その後に、FileSystemObjectで再帰処理をすることで、全てのサブフォルダも取得するようにしていきます。
他ブックへのリンクエラーを探す ・・・ 他ブック当へのリンク切れを探すVBAです。
リンクエラーが見つけられない… 「リンクの編集」で、「リンクの解除」を選択してもリンクが削除できない… こんな経験をした人は多いのではないでしょうか。エクセルをいろいろと操作していると、意図せずに参照先が別ブックになってしまい、かつ、その参照先のブックが無くなってしまっている… こんな場合に、リンクエラーとなります。
Excelシートの複雑な計算式を解析するVBA ・・・ 複雑な数式を分解・展開して表示します。
・複雑な計算式を解析するVBAの概要 ・複雑な計算式を解析する全VBAコード ・複雑な計算式を解析した結果の表示 ・最後に
VBA+SeleniumBasicで検索順位チェッカー作成 ・・・ Seleniumを使ったクローリングのサンプルです。
・シート構成 ・検索順位チェッカーのVBA全コード ・最後に
SQL入門:VBAからデータベースを使う ・・・ SQLliteを使ってSQLを解説しています。
・DBとはSQLとは ・SQL入門の目次 ・SQLを使った既存サンプル

以下はVBAで作ったゲームです。
数独(ナンプレ)を解くVBAに挑戦
数独は、一般に「ナンバープレース(ナンプレ)」と呼ばれ、外国では「sudoku」と呼ばれているようです、この数独をExcelマクロVBAで解いてみようと言う事です。解き方は、とにかく片っ端から数字を当てはめていくという、なんとも芸の無い方法です。
ナンバーリンク(パズル)を解くVBAに挑戦
ナンバーリンクというパズルがあります、これをエクセルVBAで解いてみようと思います、数独(ナンプレ)に続くパズルVBA解法の第二弾です。ナンバーリンクをご存じない方は、、ウィキペディア ナンバーリンクのおためし問題 このあたりをお読みください。
オセロを作りながらマクロVBAを学ぼう
ExcelマクロVBAでオセロ(リバーシ)を作っていきながら、マクロVBAを学んで行きましょう。目的は、マクロVBAの学習であり、思考を整理しVBAでプログラミングする学習です。従って、強いソフトを作ることが目的ではありませんので、最近流行のAIなんちゃら…なんていうのは考えるつもりはありません。
Excel将棋:マクロVBAの学習用
・Excel将棋の要件定義 ・Excel将棋のシート作成 ・Excel将棋の目次


マクロVBA学習の前提知識

マクロVBAを覚えるには、エクセルの基本操作・ワークシート関数は必須です。
まずは、これらをしっかりと覚えて下さい。
エクセル入門
・0からのエクセル入門 ・ショートカットキー ・基本操作 ・表示形式 ・セルの書式設定 ・入力規則 ・数式・関数 ・スピルと新関数 ・LAMBDA以降に追加された関数 ・・・ Excel2021では使用できません ・Microsoft 365 Insider

ここの内容をある程度理解してからマクロを始めた方が、VBAの学習はスムーズに進みます。
ですが、上記内容を全て習得しておく必要はありません。
VBA解説の中で、必要に応じて適宜手動操作や関数について説明していきます。


マクロVBAの学習の手引き(VBA学習順序)

初級・初心者の方は、VBA入門のトップページを順番に最初から軽く通読するようにして下さい。
マクロVBAを初心者向けの基本から上級者向けの高度な内容までサンプルコードを掲載し解説しています。エクセル関数・機能・基本操作の入門解説からマクロVBAまでエクセル全般を網羅しています。
目次で全体の雰囲気をつかんだら目次に従って順に学習を進めてください。
1. VBAの基礎・基本:VBA入門
2. VBA入門に必要なVBEの基本的使い方
3. VBAプログラミングの基礎・基本
4. Excel各種機能とオブジェクトの理解
ここまでは理解できない部分があっても、細部にこだわらず時には先に進んでください。
先に進むことで、以前は理解できなかったことが理解できるようになっている場合もあります。
特にRangeオブジェクト(セルのことです)は、とても奥が深く全てを理解することはとても困難です。
最初は、そういう物なんだと理解するようにしてください。
学習がすすむにつれて次第に理解が深まっていきます。
1-2. RangeとCells:VBA入門
RangeとCellsの深遠|VBA技術解説
RangeとCells特集にします。今さら…と、あなどるなかれ、結構奥が深いのです。すでに説明した内容もありますが、知っておいた方が良い事、知らなくても困らない事(笑) これらを、まとめてみました。まずは基本 A1セルに"エクセル"と入れる場合。

必要に応じて関連項目を復習することで、いつの間にか理解が進んでいることを実感できるはずです。
これ以降の章は、ご自身の目的に合わせて学習する部分を選択すると良いでしょう。

中・上級者の方は、VBA入門のトップページの目次から必要な項目をご覧ください。
マクロVBAを初心者向けの基本から上級者向けの高度な内容までサンプルコードを掲載し解説しています。エクセル関数・機能・基本操作の入門解説からマクロVBAまでエクセル全般を網羅しています。

VBAの学習順序としては、以下のページも参考にしてください。
ExcelマクロVBAの基礎を学習する方法
ExcelマクロVBAの基礎を学習する方法、マスターする道順について。ExcelマクロVBAは非常に便利です、手作業では、数時間・数日かかる処理が、ほんの一瞬で処理できてしまいます。ただし、マクロVBAを書く為に、相応の時間はかかりますが、それでも、そのマクロVBAを書く時間は一度きりです。

また、とにかく実戦を通して素早く身に付けたい人は、こちらから始めると良いでしょう。
Excelマクロ再入門
・準備:VBA再入門 ・セルを扱う:VBA再入門 ・エクセルの便利機能:VBA再入門 ・ブック・シートを扱う:VBA再入門 ・マクロ全体を最適化する:VBA再入門 ・自動化への道:VBA再入門 ・最後に:VBA再入門 ・VBAエキスパートを受験する人は




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

マクロVBA入門の簡易目次
【VBA学習のお勧めコース】
VBAの基礎・基本の要約
第1回.マクロとは?VBAとは?VBAでできること
第2回.まずはマクロVBAを使う準備
第3回.マクロの記録
第4回.マクロはどこに書くの(VBEの起動)
第5回.VBEのオプション設定(Option Explicit)
第6回.とにかく書いてみよう(Sub,End Sub)
第7回.マクロを実行するには(F5)
第8回.セルに文字を入れるとは(RangeオブジェクトのValueプロパティ)


新着記事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.条件分岐(Select Case)|VBA入門
9.メッセージボックス(MsgBox関数)|VBA入門
10.マクロとは?VBAとは?VBAでできること|VBA入門




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


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


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