エクセルの神髄
VBA入門:Excelのマクロを基礎から学習

ExcelマクロVBAの基本と応用、初級・初心者向け解説です
最終更新日:2021-10-13

VBA入門:Excelのマクロを基礎から学習


Excel VBA 入門 エクセル マクロ

マクロVBA入門シリーズでは、Excelマクロを実務で自在に扱えるようになる事を目的として、始めはより詳しく丁寧に解説しつつ、少しずつ難易度を上げることで無理なく学習を進められるようにしています。


VBAExcelの操作を自動化するマクロ機能で使われているプログラミング言語です。
Visual Basic for Applications」の略になります。
つまり、Excelにある「マクロ機能」の中身が、プログラミング言語である「VBA」で記述されているという事です。

初級・初心者の方の入門としては、まずは最初から軽く通読するようにして下さい。
理解できない部分があっても、細部にこだわらず時に先に進むことも重要です。
先に進むことで、以前は理解できなかったことが理解できるようになっている場合もあります。
折に触れて復習することで、いつの間にか理解が進んでいることを実感できるはずです。

中・上級者の方は、目次から必要な項目をご覧ください。

マクロVBA自体はOffice製品に広く搭載されています。
Word、PowerPoint、Access、OutLook等々でマクロVBAは動作します。
ただし、この「VBA入門」ではエクセルのマクロVBAのみ扱っていきます。

マクロVBAをやるにあたっては、エクセル全般(シート関数含む)の知識はある程度備わっているものとして進めています。

エクセル全般(シート関数含む)の知識に不安がある場合は、こちらで先にご覧ください。
エクセル入門
エクセル作業において必須となるショートカットキー、操作、機能、関数の使い方を、入門・初級・初心者向けに解説しています。エクセルの学習順序としては、以下のページも参考にしてください。エクセル学習のロードマップ ★エクセルの基礎を学習する方法★ 還暦を迎えるまでパソコンなんてまともに触ったことのない人にエクセルを教えて…

ここの内容をある程度理解してからマクロを始めた方が、VBAの学習はスムーズに進みます。

以下で表示している回数はWEB公開順になります。それとは別に学習順で目次を並べ替えている箇所があります。



VBA入門の章立て

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

とにかく実戦を通して素早く身に付けたい人は、こちらから始めると良いでしょう。
Excelマクロ再入門
VBAを学習しようとして、本を読んでもWEBをみても、結局挫折してしまった方を対象に、VBA再入門と題してマクロVBAの基礎の学習を実践形式で進める連載を開始します。理屈は最低限にとどめ、とにかくマクロVBAが書けるようになることを目的とします。


1. VBAの基礎・基本:VBA入門

まずは、入門としての基礎・基本からです。
ExcelマクロVBAが初めての方にも分かるようになるべく平易に詳しく書くようにしました。

1-1. マクロとは、VBAとは

第1回.マクロって何?VBAって何?
エクセルのマクロって何でしょうか? ExcelのVBAって何でしょうか? 「マクロ」とは、エクセルの操作を自動化するものです。その自動化する機能が、「マクロ」と呼ばれています。マクロの中身は、プログラムです。
第2回.まずはマクロVBAを使う準備
さっそくマクロを作りましょう。と、その前に、準備があります、上部のリボンに、「開発」タブを追加します、「開発」タブには、マクロを開発するにあたって必要なアイコンが並んでいます。※画像は、Office365になります。
第3回.マクロの記録
エクセルのマクロを説明する上では、まず最初に、「マクロの記録」を説明しなければなりません。マクロの自動記録とも言われたりしますが、つまりは、エクセルの手動での操作が自動記録されるものです、もちろん、マクロの言語であるVBAで記録されます。実際には、マクロの記録から作成されたマクロVBAコードを修正して使う事はほとん…
第4回.マクロはどこに書くの(VBEの起動)
さて、ではマクロVBAはどこに書いたらよいのでしょうか。まずは、マクロVBAを書くための紙に相当する編集画面を出します。このマクロVBAの編集画面をVisualBasicEditor、略してVBEと呼びます。
第5回.VBEのオプション設定(Option Explicit)
マクロを書き始める前に、出来れば設定しておいた方が良いオプションがあります。いえ、絶対に設定しておかなければならないVBEのオプション設定です、必ず最初に設定しておいてください。VBEの「ツール」→「オプション」以下の画面が出ます。
第6回.とにかく書いてみよう(Sub,End Sub)
それでは、とにかくマクロVBAを書いてみましょう。VBEで実際にマクロを書いてみましょう VBE(VisualBasicEditor)に標準モジュールを追加したら、そこにマクロを書いていきます。sub練習1 と入力し、Enterして下さい、このように、subがSubと先頭が大文字になり、後ろに()が付きます。
第7回.マクロを実行するには(F5)
それでは前回作ったマクロ、「練習1」を実行してみましょう。マクロを実行する方法は、大きく2通りあります、✅VBEの画面で実行 ✅ワークシートで実行 その時の都合で、どちらで実行しても構いません。ボタンをクリックすることでマクロが自動実行されるのを見たことがあるかもしれません。

1-2. RangeとCells

第8回.セルに文字を入れるとは(Range,Value)
前回実行したマクロを、もう少し詳しく見てみましょう。どうしてこれでセルに値が入るのか。どうやってVBAを読んだらよいのか。前回書いたVBAコード 前回書いたVBAは以下の通りです。これを少しだけ詳しく解説します。
第9回.Rangeでのセルの指定方法
前回までに出てきたRangeの使い方は、Range("A1") このように書くことで1つのセルを指定する場合でした。複数のセル範囲を指定する場合、矩形のセル範囲、行全体、列全体、特殊なセル範囲 これらの指定方法を見ていきましょう。複数のセル(矩形のセル範囲) 複数のセル(矩形のセル範囲)を指定する場合のVBAの書き…
第10回.Range以外の指定方法(Cells,Rows,Columns)
Rangeの指定で、あらゆるセルおよびセル範囲は指定できるのですが、マクロで使う場合は、ちょっと使いづらい場合があります。しかし、"A1"や"B5"のような文字で指定するのでは何かと不便です、もっと、プログラムっぽい(笑)指定方法があります。
第11回.RangeとCellsの使い方
VBAではセルを指定する方法としてRangeとCellsがあります。RangeもCellsも、どちらもRangeオブジェクトでセルを指定するものです。✅どちらを使ったらよいのでしょうか ✅どう使い分けたらよいのでしょうか 実際のマクロVBA記述では、RangeとCellsを使い分…
第38回.セルに計算式を設定(Formula) … 公開順から学習順に変更しています
セルに計算式(関数)を設定する場合のマクロVBAになります。マクロVBAでセルに計算式を設定することは、そんなに多くないと思いますが、決して使わないわけではありません。しかし、この計算式の設定には何種類ものプロパティがあり、結構やっかいなのです。

1-3. 変数と繰り返し処理

第12回.変数宣言のDimとデータ型
マクロVBA入門者が、まず最初につまずくのが、このDimで変数を宣言することでしょう。変数とは、数値や文字列など(すなわちデータ)を一時的に格納する入れ物 と良く説明されますが、まずはこの考えで良いでしょう。この入れ物には、いろいろなタイプの入れ物があります。
第13回.定数宣言のConstと型宣言文字
前回は変数を説明しましたが、変数があれば当然のように定数もあります。変数は値が変わる(変えられる)もの、定数は値が変わらない(変えられない)ものです。定数とは、数値や文字列の代わりに使用される意味を持たせた名前のことです。
第14回.文字の結合(&アンパサンド)と継続行(_アンダーバー)
あるセルの文字と、あるセルの文字をくっつけて、別のセルに表示する、よくある事例であり、頻繁に行われることです。A1セルに"abc" B1セルに"123" この時に、C1セルに"abc123"を入れるような場合のマクロVBAになります。
第15回.四則演算と注釈(コメント)
エクセルは表計算ソフトですから、計算が出来なくては話になりません。四則演算(加減剰余)は必須です。この四則演算で使う算術演算の演算子は、ワークシートの演算子と同じです。あわせて、注釈(コメント)の書き方も覚えましょう。
第16回.繰り返し処理(For Next)
VBAのForNextは、同じ処理を繰り返し行うためのVBA構文です。繰り返し処理はループ処理とも呼ばれます。マクロでのループ処理の記述は何通りかありますが、まず最初に覚えるべきものが、今回説明するForNextです。
第17回.繰り返し処理(Do Loop)
繰り返し処理として前回はFor~Nextをやりました。今回はDo~Loopです。For~Nextに比べると使用頻度は落ちますが、必ず覚える必要があるものです。For~Nextは、繰り返す回数をあらかじめ指定するものでしたが、Do~Loopは、繰り返す回数ではなく、繰り返す条件を指定するものです。
第18回.最終行の取得(End,Rows.Count)
Excelワークシートにおける表の最終行の取得は、マクロVBAの必須技術になります、エクセルVBAにおける最終行取得の必要性 エクセルは表計算ソフトです、つまり縦横の表を扱います、データは横に項目があり、縦に項目に対するデータが入っている事が一般的です。しかし、そのデータ行数は決まった行数ではない事が普通です。

第19回.総合練習問題1
マクロVBA練習問題 マクロVBA入門で今までに説明した、For~Next 最終行の取得 四則演算 以上を使って、以下の練習問題をやりましょう。上記表で、A列の単価×B列の数量を計算して、C列の金額を出して下さい。ヒント!ForNextで2行目から表の最終行まで単価×数量を計算してしてください。

1-4. If条件分岐

第20回.条件分岐(If)
ある条件の時だけ処理したい、ある条件の時は処理したくない、そのような条件によって処理内容を変更したい場合があります。VBAで条件により処理を分岐させたい場合に使うのが、Ifステートメントです。マクロVBAで自動化する場合の多くは、条件により処理を変えつつ一定回数繰り返すという事です。
第21回.条件分岐(ElseIf)
前回のIFステートメントでは、真か偽の二択でした。今回は、もっと多くの分岐が必要な、Ifステートメントで多肢条件分岐の場合の書き方です。ステートメントとしては、Ifステートメントです。IfステートメントのElseIfの構文 If条件式1Then 条件式1が真の処理 [ElseIf条件式2Then 条件式2が真の処理…
第22回.条件分岐(Select Case)
前回のElseIf以外に、多肢条件分岐の別の書き方があります。それがSelectCaseになります。むしろElseIfより、このSelectCaseの方が、より多肢条件分岐に適していると言えます。SelectCaseは、多肢条件分岐に特化したステートメントになります。

1-5. 関数とは、引数とは

第23回.メッセージボックス(MsgBox)
メッセージを表示するダイアログボックス(小さな画面)を表示します。ユーザーに選択(「はい」「いいえ」や「OK」「CANCEL」等)してもらい、その選択結果を受け取る事も出来ます。マクロVBAでメッセージボックスを表示するにはMsgBox関数を使います。
第24回.インプットボックス(InputBox)
ダイアログボックスにメッセージとテキストボックスを表示し、ユーザーが入力した文字列を取得することが出来ます。マクロVBAの最初または途中で、ユーザーの入力によって処理を変更したい場合が出てきます。これを実現するには、マクロVBAではInputBox関数を使います。
第25回.名前付き引数について
引数とは、関数やメソッド等を呼び出すときに渡す値のことです。この引数を渡す時の記述方法として、名前付き引数があります。マクロVBAでの記述では、:=が使われます。この:=は名前付き引数のみで使用される記述になります。

第26回.総合練習問題2
マクロVBA練習問題 以下の表を使用します、メッセージボックスと数値集計の問題です。InputBox関数で数値を入力し、A列の数値が、指定数値以上の合計を求め、MsgBox関数で表示して下さい。例えば、InputBox関数で10と入力したら、14+11+12+13+18を計算し、MsgBox関数で68を表示するとい…

1-6. ブック、シート、セル

第27回.ブック・シートの選択(Select,Activate)
エクセルでは複数ブックを扱います。そして、それぞれのブックには複数のシートが存在します。従って、マクロVBAでも複数ブック・複数シートを扱う必要があります。ここまでのVBAでは、あくまでアクティブブックのアクティブシートを対象としてきました。
第28回.セル・行・列の選択(Select,ActivateとCurrentRegion)
マクロVBAで、セル、行、列を選択するときの記述について説明します。まずは、セルの選択について説明する前に、選択セルとアクティブセルについて、説明する必要があります。選択セルとアクティブセル この状態では、選択セルは、B2~C6の10個のセルです。
第29回.セル・行・列の削除・挿入(Delete,Insert)
単一セルまたは複数セルの削除・挿入と行・列の削除・挿入についてのマクロVBAを解説します。単一セルまたは複数セルを指定しての行全体・列全体に対する削除・挿入と、行・列を指定しての削除・挿入は結果としては同じ事になりますが、マクロVBAの書き方には違いがあり、実際のVBAでは使い分けが必要になる場合があります。

第30回.総合練習問題3
マクロVBA練習問題 以下の表で問題です。行・列の削除・挿入の問題です。⇒ 左側の表から、偶数行を削除し、1行目に空行、A列に空列を挿入し、右側の表にして下さい。ヒント!・偶数行の判定は行数を2で割った余りが0、余りは?…Mod演算子 ・行削除を行う時は上から?下から?…For...NextVBAのForNextは、

1-7. セルの書式

第31回.セルの書式(表示形式,NumberFormatLocal)
セルは表示形式を指定することで、セルに入っている値は同じ値でも色々な見え方をさせる事が出来ます。セルの値はそのままで、見た目をユーザーに見やすい形にすることが出来ます。同じ数値の、12345でも 12345 12,345 \12,345 等々の違う表示方法を指定する事が出来ます。
第32回.セルの書式(配置,Alignment)
セル内での値を表示する位置(縦位置、横位置)をマクロVBAで指定できます。「セルの書式設定」→「配置」で指定する内容です。マクロVBAでの配置の指定 Range.プロパティ=設定値 指定できるプロパティの設定値は以下になります。
第33回.セルの書式(フォント,Font)
セルで表示している文字の書体をマクロVBAで指定する方法です。セル(Rangeオブジェクト)のフォントは、Fontプロパティになります。Fontプロパティは、Fontオブシェクトを返します。解りづらい説明だと思います。
第34回.セルの書式(塗りつぶし,Interior)
セルを目立たせる最も有効な手段は、セルを色で塗りつぶすことでしょう、セルを塗りつぶす時のマクロVBAの解説です。セル(Rangeオブジェクト)の塗りつぶし(パターン)は、Interiorプロパティになります。Interiorプロパティは、Interiorオブシェクトを返します。
第35回.セルの書式(罫線,Border)
マクロVBAで罫線を引く必要が出てくる場合は結構あるものです。新規シートにデータを出力した場合やデータ範囲がマクロで変更されてしまう場合、罫線を引き直す事が必要になってきます。ネット等を検索すると、罫線を引くマクロは書き方が千差万別となっているようです。

第36回.総合練習問題4
マクロVBA練習問題 以下の表について、書式設定のマクロを書いて下さい。上の表の書式設定をして、下の表を完成させて下さい。ヒント!セルの書式設定では、同じ設定についてはまとめて一括でやるようにしてください。

1-8. 別シートにセルをコピー

第37回.ブック・シートの指定
ここまでのマクロVBA入門では、アクティブブックのアクティブシートだけを扱ってきました。アクティブブックのアクティブシートとは、一番手前に表示されているブックの選択しているシートで、通常、手作業で操作しているシートの事になります。手作業では、アクティブブックのアクティブシートしか扱えませんが、(作業グループで複数の…
第39回.セルのクリア(Clear,ClearContents)
セルをクリアするマクロVBAの書き方です、クリアするといっても、セルの何を(値、書式、コメント等々)クリアするかによって、VBAコードが違ってきます。具体的には、セルの何を(値、書式、コメント等々)クリアするかによって使用するメソッドが変わるという事です。
第40回.セルのコピー・カット&ペースト(Copy,Cut,Paste)
あるセルをコピーまたはカットして、別のセルに貼り付けるマクロVBAの説明です。セルを同じシートの別のセルにコピーしたり、セルを別のシートにコピーしたりするVBAになります。手作業で、セルをコピー(Ctrl+C)またはカット(Ctrl+X)して、他のセルに貼り付け(Ctrl+V後にESCまたはEnter) これと同じ…
第41回.セルのコピー&値の貼り付け(PasteSpecial)
値の貼り付けと題しましたが、値だけではなく、「形式を選択して貼り付け」のいろいろな指定方法です。セルをコピーして、他のセルに「形式を選択して貼り付け」する場合のマクロVBAコードです。セルの値や書式を別のセルにコピーすることはマクロVBAでは定番かつ必須の技術になります。
第42回.セルをコピーするとは
セルをコピーするとは、どういう事でしょうか… セルをコピーするというマクロVBAを少し掘り下げて考えることで、より実践的なマクロVBAコードを書くことが出来るようになります。コピーと一言で言っているものは、何のコピーを指しているのでしょうか。

第43回.総合練習問題5
マクロVBA練習問題 以下の表で問題です、いわゆる百ます計算です。このシートは、「Sheet1」とし、別に「Sheet2」が存在します。百マス計算です。・交点のセルに掛け算を入れて下さい。・「Sheet1」に計算式を埋めて下さい。

1-9. VBA関数

第44回.VBA関数について
ワークシートに関数があるように、マクロVBAにも専用の関数が用意されています、このマクロVBA専用の関数をVBA関数と呼んだりします。関数とは、多くの人が共通して必要となる機能(命令)を一塊にしてプログラミング言語として用意されているものです。
第45回.VBA関数(Format)
VBAのFormat関数は、指定した書式に変換した文字列を返す関数です。ワークシート関数のTEXT関数とほぼ同様の機能になります。Format関数は、非常に使用頻度の高い関数でありマクロVBAにおいては重要かつ必須習得関数です。
第46回.VBA関数(日付,DateAdd)
データ型の中でも日付時刻はかなり特殊であり、関数の使用は必要不可欠になります。ここでは、日付に関するVBA関数の一覧と、DateAdd関数について解説します。DateAdd関数以外の他の関数は、一覧のリンクより個別のページを参照して下さい。
第47回.VBA関数(文字列操作,Replace,InStr,StrConv)
文字列操作は、マクロVBAでプログラミングする上で必須です、データ整形、データクレンジング、データクリーニング、これらを行うVBAにおいて不可欠なものが、文字列操作関数です。ここでは、文字列操作に関するVBA関数の一覧と Replace関数、InStr関数、StrConv関数について解説します。
第48回.VBA関数(その他,Fix,Int,Rnd,Round,IsEmpty)
VBA関数の中で、日付関数、文字列操作関数以外でマクロVBAにおいてはぜひ覚えておいてほしい関数の一覧です。数学、データ型確認、データ型変換に関するVBA関数になります。一覧と、その中から注意点のある関数についてのみ一部説明します。
第49回.Like演算子とワイルドカード
文字列比較において部分一致やパターンマッチングでの文字列比較を行う時に使うのがLike演算子です。Like演算子は、2つの文字列のパターンマッチングを行い、規則に一致しているかどうかの結果をTrue(一致)またはFalse(不一致)で返します。

第50回.総合練習問題6
マクロVBA練習問題 1問目 セルA1に、20120203 と入っています、これを、セルB2に、日付(2012/2/3) として出力して入れて下さい。2問目 セルA1に、日本太郎 と入っています、姓名の間の空白は半角スペースです。これを、セルB1に、日本 セルC1に、太郎 と分けて入れて下さい。

第87回.WorksheetFunction(ワークシート関数を使う) … 公開順から学習順に変更しています
VBA関数以外に、Excelワークシート関数をマクロVBAで使うことが出来ます。ワークシート関数は、VBA関数よりはるかに多くの関数があるので、ぜひ活用したいところです。。ワークシート関数を使う事で、VBAコードを非常に簡潔に記述することが出来る場合が多いものです。

1-10. オブジェクトとは、コレクションとは

第51回.Withステートメント
Withステートメントを使う事で、Withに指定したオブジェクトに対してオブジェクト名を再度記述することなく、プロパティやメソッドを記述することができます。文章で例えて言えば、主語を一度だけ書いて、その後は主語を省略するような書き方になります。
第52回.オブジェクト変数とSetステートメント
変数のデータ型の説明において、Object…オブジェクト型 というのがあった事を覚えているでしょうか。数値や文字ではなく、オブジェクトを入れる変数がオブジェクト変数です。オブジェクトと言っても、いろいろなものがあります。
第53回.Workbookオブジェクト
Workbookオブジェクトは、ワークブックそのものです。1つのワークブックは、1つのExcelファイルです。マクロVBAで複数のブックを扱う場合や、ブックを読込んだり保存したりする場合は、Workbookオブジェクトをしっかり意識しつつVBAを記述しなければなりません。
第54回.Windowオブジェクト
Windowオブジェクトは、ブックやシートの見方を変えることのできるもので、エクセルで「ウィンドウ」と表現されているものをマクロVBAで扱う時のオブジェクトになります。エクセルのリボンでは「新しいウィンドウ」や「ウィンドウ枠」といった言葉で表現されているものです。
第55回.Worksheetオブジェクト
Worksheetオブジェクトは、ワークシートそのものです。エクセルのマクロVBAですから、ワークシートはしっかりと扱えなければなりません。WorkSheetオブジェクトの集まりがWorkSheetsコレクションになります。
第56回.Rangeオブジェクト(RangeとCells)
エクセルの根幹はセルです、セルはRangeオブジェクトになります、このRangeオブジェクトの理解なくしてマクロVBAは理解できません。マクロVBAで自在にセルを扱う為には、このRangeオブジェクトをしっかりと理解する必要があります。セルを表すVBA記述は多数存在します、Range、Cells、Rows、
第57回.Applicationのプロパティ(マクロ高速化と警告停止等)
Applicationは、Excel全体をあらわすオブジェクトです。つまり、エクセルそのものだと考えて下さい。ここでは、そのプロパティの一部を紹介します。ここで紹介するApplicationのプロパティはほんの一部です。
第58回.コレクションとは(Collection)
同種のオブジェクトを複数まとめたものを「コレクション」と呼びます、ただしコレクションもオブジェクトの一種です。例えば、Workbookオブジェクトが複数まとまったものは「Workbooksコレクション」Worksheetオブジェクトが複数まとまったものは「Worksheetsコレクション」オブジェクト名が単数形であ…
第59回.コレクション処理(For Each)
ForEachは、コレクションの各要素に対して繰り返し処理を実行します。コレクションはオブジェクトの集まりですので、ForEachは、コレクションの中から、個々のオブジェクトを取り出して処理する場合に使用します。コレクションの全ての要素に対しての処理が終わるとループは終了します。

1-11. ブック・シートを安全に扱う

第60回.エラー処理(On Error)
マクロVBAを実行していると、エラーメッセージが表示されマクロ実行が停止してしまう事があります。マクロがエラー停止しては自動化の目的が達成されませんので、エラー停止しないようにしなければなりません。エラーが出ないようにVBAを記述出来ればそれに越したことはありませんが、一切エラーを出さないようにVBAを書くことはか…
第61回.「On Error GoTo」と「Exit Sub」
「OnErrorGoTo行ラベル」このステートメントは、実行時エラーが発生した時に制御を指定の行ラベルに移動させるものです。マクロVBAは、エラーが発生するとその時点で停止してしまいます。VBAが実行不能となった場合には、エラー発生したVBAコードで停止します。
第62回.「On Error Resume Next」とErrオブジェクト
「OnErrorResumeNext」このステートメントは、実行時エラーが発生してもマクロVBAを中断せずに、エラーが発生したステートメントの次のステートメントから実行を継続します。マクロVBAは、エラーが発生するとその時点で停止してしまいます。
第63回.ブックを開く(Open)
他のブックを開く方法です。しかし、これが結構いろいろあるのです。Excelで開くことが出来るファイルはCSV等のテキストファイルもありますが、ここではエクセルファイル限定で説明します。テキストファイルやCSVについては、別の記事を参考にして下さい。
第64回.ブックを閉じる・保存(Close,Save,SaveAs)
ワークブックを閉じる場合や保存する場合のマクロVBAの説明です。閉じる時に保存するか保存しないかを指定できます。また、ブックを保存するにも、上書きなのか別ファイルにするのか等によってVBAの記述がそれぞれ違ってきます。
第65回.シートの挿入、名前の変更(Add,Name)
マクロVBAでシートを挿入(新規追加)したり、名前を変更する場合の解説です。シートを挿入すれば、大抵の場合はシート名も変更することになりますので、シート挿入→シート名変更、この一連のVBAをセットで覚えておきましょう。シートの挿入 VBAでシートを挿入するには、Sheets.Addメソッド、Worksheets.A…
第66回.シートのコピー・移動・削除Copy,Move,Delete)
シートのコピーや移動をしたり、また削除する場合の説明です。マクロVBAでは、雛形シートをコピーして使ったり、不要なシートを削除することは頻繁にあります。シートのコピー・移動には、Worksheet.Copyメソッド、Worksheet.Moveメソッド これら、WorkSheetオブジェクトのメソッドを使用します。
第67回.総合練習問題7
マクロVBA練習問題 ブックとシートを扱う問題です。まず以下を見て下さい。シート「ブック一覧」のA列にパス、B列にブック名が入っています。このブックを開き、中の全てのシート名を取得して下さい。先頭に「シート一覧」というシート追加し、A列にブック名、B列にシート名を書き出して下さい。


ここまではVBA入門として最低限の基本になります。
基本とはいえ、ここまで習得出来ればかなりExcel VBAを書けるようになっているはずです。


2. VBA入門に必要なVBEの基本的使い方

ここで、今後の学習をスムーズに進めるために、
VBE(Visual Basic Editor)の使い方と、デバッグ方法について確認しておきましょう。
VBEの使い方:VBE画面の全体説明
VBAをやるうえでVBE操作に慣れているかどうかで開発効率が大きく変わってきます。VBE(VisualBasicEditor)は、VBAの統合開発環境です。VBAで使われるコードエディタ、コンパイラ、デバッガ、その他の開発支援ツールが統合された開発環境がVBEです。
VBEの使い方:ツールのオプション設定
VBE(VisualBasicEditor)はVBAで使われるコードエディタ、コンパイラ、デバッガ、その他の開発支援ツールが統合された開発環境です。ここではVBEの環境設定となる、ツールのオプション設定について説明します。「メニュー」→「ツール」→「オプション」それぞれのタブについて順番に説明します。
VBEの使い方:ツールバー
VBE(VisualBasicEditor)は、VBAで使われるコードエディタ、コンパイラ、デバッガ、その他の開発支援ツールが統合された開発環境です。ここではツールバー(アイコン付きのボタン群)について説明します。ツールバーの表示方法 メニューの「表示」→「ツールバー」ツールバーは好きな位置に配置できます。
VBEの使い方:右クリックメニューとヘルプ
VBE(VisualBasicEditor)は、VBAで使われるコードエディタ、コンパイラ、デバッガ、その他の開発支援ツールが統合された開発環境です。ここではマウスの右クリックで表示されるメニューを通して、各機能について説明します。また、合わせてヘルプについても説明します。
VBEの使い方:ショートカットキーとコード編集
VBE(VisualBasicEditor)は、VBAで使われるコードエディタ、コンパイラ、デバッガ、その他の開発支援ツールが統合された開発環境です。ここではVBEのコード編集における、特に重要なショートカットキーと具体的な使い方について説明します。
VBEの使い方:イミディエイト ウィンドウ
VBE(VisualBasicEditor)は、VBAで使われるコードエディタ、コンパイラ、デバッガ、その他の開発支援ツールが統合された開発環境です。ここではイミディエイトウィンドウの使い方について説明します。目次 イミディエイトウィンドウの表示 イミディエイトウィンドウの基本的な使い方 値を表示 VBA実行中に変…
VBEの使い方:ローカル ウィンドウ
VBE(VisualBasicEditor)は、VBAで使われるコードエディタ、コンパイラ、デバッガ、その他の開発支援ツールが統合された開発環境です。ここではローカルウィンドウの使い方について説明します。ローカルウィンドウの表示 メニュー「表示」→「ローカルウィンドウ」初期設定では、コードウィンドウの下にドッキング…
VBEの使い方:ウォッチ ウィンドウ
VBE(VisualBasicEditor)は、VBAで使われるコードエディタ、コンパイラ、デバッガ、その他の開発支援ツールが統合された開発環境です。ここではウォッチウィンドウの使い方について説明します。ウォッチウィンドウの表示 メニュー「表示」→「ウォッチウィンドウ」初期設定では、コードウィンドウの下にドッキング…
VBEの使い方:オブジェクト ブラウザー
VBE(VisualBasicEditor)は、VBAで使われるコードエディタ、コンパイラ、デバッガ、その他の開発支援ツールが統合された開発環境です。ここではオブジェクトブラウザーの使い方について説明します。オブジェクトブラウザーの表示 メニュー「表示」→「オブジェクトブラウザ」ショートカットはF2 初期設定では、
VBEの使い方:デバッグ
VBE(VisualBasicEditor)は、VBAで使われるコードエディタ、コンパイラ、デバッガ、その他の開発支援ツールが統合された開発環境です。ここではVBA開発で重要かつ避けて通れないデバッグの方法について、VBEのメニュー及びツールバーにそって説明していきます。
VBEのショートカット一覧
VBE(VisualBasicEditor)にはコーディングを効率化する便利なショートカットが多数用意されています。ぜひ覚えて、タイピングを減らし、スピーディなコーディンクが出来るようにしましょう。VBE(VisualBasicEditor)の操作に慣れる事は、マクロに慣れる事の第一歩です。


3. VBAプログラミングの基礎・基本

このあたりで、VBAプログラミングの基本を見ておくと良いでしょう。
以下はVBA入門シリーズとは別記事です。
気になるタイトルのみ拾い読みで良いでしょう。
プログラミングの基本~ロジックの組み立て
プログラミングの基本というと、プログラミング言語の基本文法についての解説と思われるかもしれませんが、ここでは、プログラミングする上で最も大切な考え方、ロジックの組み立て方について解説します、本来は言語は問わないのですが、VBAのサイトですのでVBAを例に解説します。前処理、主処理、後処理 何かをしようとしたとき、
実は奥が深いIfステートメント
プログラムと言うものは、条件により処理を分ける。これにつきます。つまり、この条件が一番問題となります。そして、その記述をするものが、Ifステートメントになります。IFステートメントの基本 まずはIFステートメントの基本を確認しましょう。
論理積(And)論理和(Or)と真(True)偽(False)の判定
And演算子、Or演算子は、2つの数式内のビット単位の比較を行います、そして、IfステートメントのThenは、Trueの時と言うより、False以外の時に実行されます。何を言っているのか分かりずらいと思いますので、順に解説します。Trueとは何か、Falseとは何か True、Falseを数値で表すと、
条件式のいろいろな書き方:TrueとFalseの判定とは
If条件式の書き方で、VBAプログラムは大きく様相が変わってきます、VBAを習い始めは、比較演算子で比較した結果が 正しければTrue、間違っていればFalse という事で理解するはずです。しかし、いろいろなサンプルコードを見ていると、「あれっ」比較演算子が無い… というようなIfステートメントやSelectCas…
VBAでの括弧()の使い方、括弧が必要な場合
オブジェクトのメソッドや、プロシージャー(Sub、Function)を呼ぶときに、引数を括弧()で囲うのか、囲わないのか… 初心者が赤い文法エラーが出て悩むことの一つです。VBAでは、どんな時に括弧を付けて、どんな時に括弧を付けないのか… ・括弧が必要な場合 ・括弧が不要な場合 これらについて具体的な例とともに解説…
VBAにおけるピリオドとカンマとスペースの使い方
VBAの文法の中で、初心者が戸惑うことが多いのが、ピリオド、カンマ、スペース これらの使い方のようです。使い方を間違って、ピリオドを打つべきところにカンマを打ってしまうと、VBAコードが真っ赤になってしまいます。こうなるとビックリしてしまい、冷静に見直すことが出来なくなってしまったりします。
変数とプロシージャーの命名について
VBAを習い始めると、「変数」について学びます、変数に付ける名前を変数名と呼び、若干の規則はあるが、好きな名前を付けて良いと教わります。好きな名前って…ケイコ、ハルカ、アツコ… まあ、それでも良いけど、入れるデータが分かるような名前がよいですね、わかり易い名前を付けましょう。
文字列置換の基本と応用(Replace)
マクロVBAの処理において文字列置換は頻出の処理ですが、これに苦労している初心者の方が多いようです、そこで文字列置換の基本と応用について解説します。・文字列内の空白(半角・全角)を取り除く VBA関数のTrimは前後の空白が削除されるだけです、そこで、Replace関数を使います。
データクレンジングと名寄せ
複数の名簿を突き合わせて一つにする、いわゆる「名寄せ」名寄せを行うためには、その前にデータクレンジングを行う必要があります、データクレンジングとは、データの中から、重複の排除、誤記、表記の揺れの修正などを行い、データの品質を高めることです。データを整形して、扱いやすいデータに変換します。
ForとIfのネストこそがVBAの要点
VBA習得で最も肝心なものは、For文とIf文を確実に習得することです。For文とIf文の基本をしっかりと覚え、そして、For文とIf文をネストさせるプログラミング技術を習得してください。For~Nextステートメントは、繰り返し処理 If~EndIfステートメントは、条件分岐 つまり、条件により分岐しつつ繰り返し…
VBAを定型文で覚えよう
VBAの書籍を読んでも、ネットの解説記事を読んでも、なかなかVBAをマスター出来ないという場合は、学習方法が間違っているかもしれません。その人に合った学習方法、それは人それぞれ違うのは当然です。本サイトでも、入門者用として多くのページが存在します。
For Next の使い方いろいろ
VBAの繰り返し処理としては、ForNextまたはDoLoop この二つを最初に学んだのではないでしょうか。プログラムにおける繰り返し処理は、基本中の基本です。特に使用頻度の高いForNextを重点的に学んでいることと思いますが、書き方、使い方は、いくつかのパターンがあります。
複数条件判定を行う時のコツ
多くの条件を判定して処理を決めなければならない場合は多くあります。複数条件の判定を行う場合のIfステートメントの使い方はいろいろあります。覚えておきたい基本的なIfステートメントの組み立て方法を紹介します。
VBAの省略可能な記述について
VBAには、省略可能な記述が数多くあります。省略可能な記述とは、書いても書かなくても動作に何の違いもないものになります。VBAのこの記述の自由度は、慣れてしまえば楽なものですが、初心者の方が覚え始める時には、多少混乱することもあると思います。
VBAこれだけは覚えておきたい必須基本例文10
VBAを覚える順序としては、・文法から始める方法 ・実践例文から始める方法 どちらが良いとは言い切れませんが、もし文法習得に限界を感じているなら、実践的な基本例文を暗記することから始めてみると良いでしょう。また、VBA習得において、・何を目標にやっていけばよいのか ・どの程度出来たらVBAができると言えるのか こん…


4. Excel各種機能とオブジェクトの理解:VBA入門

ここからは、入門・初級から中級レベルに進むためのVBA知識の習得になります。
オブジェクト・プロパティ・メソッドといったプログラミングの専門用語が頻繁に出てきます。
言葉の定義にとらわれず、一つ一つが何を意味しているのか全体像を把握するようにしてください。
また、Excelの各種機能に該当するVBAコードについては、暗記する必要はありません。
必要な時に直ぐに調べられるように、一通り見ておく事が重要です。
オブジェクトを意識したVBAを書くために、まず最初に以下を読んでおいてください。
オブジェクト式について
オブジェクトは、objectであり、物・物体のことです、VBAで何か操作をしようとする対象となるものがオブシェクトです、オブジェクト式とは、オブジェクトを操作しようとしたときに、オブジェクトを特定するための書き方です。ただし「オブジェクト式」という言い方を特別なものとして覚える必要はありません。

エクセルのオブジェクトはとても複雑です。
オブジェクトのどのプロパティを設定すれば望みの状態にできるかを調べるのはかなり大変です。
オブジェクトの探索方法|マクロVBA技術解説
VBAを書き進めて行くと、どうしてもオブジェクトの扱い時に分からないことがでてきます、何が分からないかというと、オブジェクトの中の目的の要素をどのように指定したら良いのかということです、オブジェクトの中を調べて、目的の要素にたどり着く方法を説明します。ローカルウィンドウを主体に説明します。

VBAでは独自のプロパティを作成することもできます。
第140回.Property {Get|Let|Set} ステートメント
VBAでは、カスタムプロパティの作成と操作ができます。クラスモジュール、フォーム、標準モジュール、これらにカスタムプロパティを作成することができます。プロパティを作成するには、Property{Get|Let|Set}ステートメントを使用します。

4-1. シートを壊さない為に

第68回.シートの保護、ブックの保護(Protect)
せっかく作ったExcelシートを間違って壊してしまったり、Excel操作に慣れない人が壊してしまったら困ります。無用な改変、意図しない変更からシートを保護するには、ワークシートを保護します。ただしシートの削除は、シート保護では守れません、シートの保護に対応するには、ブックの保護が必要です。
第69回.シートの非表示(Visible,Hidden)
ユーザーが操作・閲覧する必要のないシートは非表示にする事で使い易いExcelブックにします。マスタ情報やマクロでのみ使用するデータが入っているシート等、通常は使用者が変更することがなく、見る必要もないのであれば、シート保護をするより非表示にしてしまった方が、ユーザーにとっては使いやすいブックとなります。
第70回.ウィンド枠の固定(FreezePanes)
ウィンドウ枠を固定し、行の上部や列の左側がスクロールされないようにする場合のマクロVBA解説になります。ワークシートの行の上部や列の左側は、通常は見出しとして使う事が多くなります。ウィンドウ枠を固定することで見出しの行や列を固定し、スクロールしても見出しが表示されたままにする場合が多くなります。

4-2. 印刷ページ設定

第71回.印刷(PrintOut)
シートの内容をマクロVBAで印刷する場合は、PrintOutメソッドを使用します。このPrintOutメソッドが使える対象オブジェクトは複数あります。ブック、シート、セル、それぞれにPrintOutメソッドが存在するので、印刷範囲によって使い分けてください。
第72回.印刷プレビュー(PrintPreview)
VBAで印刷プレビューを表示するには、・PrintPreviewメソッドを使用する ・PrintOutメソッドを使用する この2通りの方法があります。PrintPreviewメソッドとPrintOutメソッドが使える対象オブジェクトは複数あります。
第139回.エクスポート(PDF/XPS) … 後日追加
シートの内容をPDF/XPS出力するには、マクロVBAではExportAsFixedFormatメソッドを使用します。このメソッドが使える対象オブジェクトは複数あります、ブック、シート、セル、それぞれにExportAsFixedFormatメソッドが存在するので、印刷範囲によって使い分けてください。
第73回.ページ設定(PageSetup)
VBAで印刷のページ設定をするには、PageSetupオブジェクトのプロパィを設定することで行います。基本的には、事前に印刷するシートのページ設定をしておくことが望ましいのですが、VBAで作成したシート等、事前にページ設定することができない場合はマクロVBAで印刷のページ設定をします。


4-3. 組み込みダイアログ

第74回.ファイルを開くダイアログ(GetOpenFilename)
VBAで開くファイルが、あらかじめ決められたフォルダに決められたファイル名で存在している場合は単純にOpenできますが、都度ユーザーに開くファイルを選択してもらわなければならない場合もあります。ユーザーに開くフイルを選択してもらうには、ApplicationオブジェクトのGetOpenFilenameメソッドを使い、
第75回.名前を付けて保存ダイアログ(GetSaveAsFilename)
VBAで保存するExcelファイルの保存先フォルダとファイル名をあらかじめ決めておけない場合は、ユーザーに保存先フォルダとファイル名を指定してもらう必要があります。ユーザーに保存するフイルを指定してもらうには、ApplicationオブジェクトのGetSaveAsFilenameメソッドを使い、[名前を付けて保存]…
第76回.ファイルダイアログ(FileDialog)
VBAでファイルを指定するダイアログを扱うには、すでに紹介したGetOpenFilenameやGetSaveAsFilenameがありますが、さらに今回紹介する、FileDialogオブジェクト こちらも使用することができ、GetOpenFilenameやGetSaveAsFilenameにはない便利な機能が提供さ…
第77回.組み込みダイアログ(Dialogs,xlDialogPrint)
Excelを操作していると、その時々で多種多様なダイアログが表示されます。マクロVBAでは、Excelの全ての組み込みダイアログを使用することが出来ます。どのようなダイアログがあるか一覧を紹介しつつ、VBAでのダイアログの使い方を解説します。
第78回.総合練習問題8
マクロVBA練習問題 ・ダイアログで、Excelファイルを選択する ・指定されたExcelファイルの全ワークシートを印刷する ただし、非表示シートは対象外とする また、シートの全セルの背景色は消して下さい。チャレンジしてみましょう。ヒント!書き方はいろいろあります。

4-4. ファイル操作Ⅰ

第79回.ファイル操作Ⅰ(Dir)
VBAでは、フォルダのファイル一覧を取得したりファイルの存在確認をする事が出来ます、Dir関数は、指定したパターン(ワイルドカード)やファイル属性と一致するファイルまたはフォルダの名前を表す文字列の値を返します。引数に指定したファイルが存在すると、そのファイル名を返し存在しないと空欄を返します。
第80回.ファイル操作Ⅰ(その他)
VBAではファイル操作するためのステートメントと関数が多数用意されています、マクロVBAでファイル操作する場合は、これらの用意されたステートメントや関数を使い処理を実現します。ファイル操作で使う、ステートメントと関数 ChDriveステートメント ChDirステートメント CurDir関数 MkDirステートメント…
第81回.総合練習問題9
マクロVBA練習問題 自身のブックのあるフォルダについて、以下の処理をして下さい ・サブフォルダ"BACKUP"を作成して下さい ・フォルダ内のすべてのエクセルファイルを"BACKUP"にコピーして下さい。ただし、ファイル名は、〇〇○.xls→○○○_yyyymmdd.xls…

4-5. Rangeの必須プロパティ

第82回.RangeのResizeプロパティ
Resizeプロパティは、指定されたセル範囲(Rangeオブジェクト)のサイズを変更します、そして、サイズが変更されたセル範囲(Rangeオブジェクト)を返します。サイズ変更は、縦方向の行数、横方向の列数の両方またはどちらか一方を指定できます。
第83回.RangeのOffsetプロパティ
Offsetプロパティは、指定されたセル範囲(Rangeオブジェクト)をオフセット(移動)します、オフセット(移動)したセル範囲を表すRangeオブジェクトを返します。Offsetとは、「差し引きする」意味ですが、Offsetプロパティで取得されるのは、元のRange範囲を、指定した行数・列数移動したRange範囲…
第84回.RangeのAddressプロパティ
Addressプロパティは、セル範囲(Rangeオブジェクト)の参照範囲を表す文字列の値を返します。引数により、参照方法($の付いた絶対参照)や形式(R1C1形式)を指定できます。Addressは、マクロVBAの中で処理の一環として使う事はあまり多くないかもしれませんが、VBA作成過程ではRangeオブジェクト変数…
第85回.結合セルの扱い
セルが結合されていると、マクロでは時に扱いづらい事があります、セル結合されている場合に、VBAでどのように取り扱うかを解説します。そもそも、やたらにセル結合すべきではないのですが、見た目重視で作られたシートでは、セル結合が頻繁に使用されているものです。

第86回.総合練習問題10
マクロVBA練習問題 表の見出しを残して、データ部分のみ消去してください。・A1セルを起点に1つのセル領域があります、・1行目は列見出しとして使用、A列は行見出しとして使用しています、・つまりデータ部はB2セルから開始されています、・データ部のみ入力データを消去して下さい。

4-6. エクセルの機能を使い倒す

第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に関するプロパティとメソッド…
第95回.ハイパーリンク(Hyperlink)
VBAでハイパーリンク(Hyperlink)を追加したり削除したりする場合を解説します。ハイパーリンクは、Hyperlinkオブジェクトです、そして、Hyperlinkオブジェクトの集まりであるコレクションが、Hyperlinksコレクションになります。
第96回.グラフ(Chart)
マクロVBAでグラフを扱う時の解説になりますが、グラフの全ては解説しきれませんし、マクロVBAでグラフを全て作成しようとするのはかなり大変です。雛形のグラフを作成しておき、VBAでは必要な部分のみ変更するようにした方が良いでしょう。マクロVBAでグラフを扱うには、数多くのオブジェクトを理解する必要があります。
第97回.図形オートシェイプ(Shape)
マクロVBAで、オートシェイプ(図形)を扱う場合の解説です。オートシェイプ(図形)はShapeオブジェクトであり、ShapeオブジェクトのコレクションがShapesコレクションになります。Shapeオブジェクトは、多くのオブジェクトをメンバーに持った複雑なオブジェクトとなっています。
第136回.フォームコントロール ・・・ 後日追加
リボンの開発タブにコントロールの挿入があります。フォームコントロールをVBAで扱う場合の解説になります。ワークシートでフォームコントロールを扱う事の是非はありそうですが、使用することで便利かつ見栄えの良いシートになる場合もあります。
第137回.ActiveXコントロール ・・・ 後日追加
リボンの開発タブにコントロールの挿入があります。ActiveXコントロールをVBAで扱う場合の解説になります。ワークシートでActiveXコントロールを扱う事の是非はありそうですが、使用することで便利かつ見栄えの良いシートになる場合もあります。
第98回.Findメソッド(Find,FindNext,FindPrevious)
Findメソッドは、マクロVBAでセル範囲内の条件に当てはまるセルを検索するものです。Findメソッドは、Rangeオブジェクトのメソッドで、ワークシート操作の「検索と置換」の「検索」の機能をマクロVBAで使うものです。上の画像では「検索する文字列」だけしか指定できませんが、「オプション」をクリックすると、
第99回.Replaceメソッド(置換)
Replaceメソッドは、セル範囲内で条件に当てはまるセルの文字列を置換するものです。ReplaceメソッドはRangeオブジェクトのメソッドで、ワークシート操作の「検索と置換」の「置換」の機能をマクロVBAで使うものです。VBA関数のReplace関数とは全く違うものになりますので使い分けが必要です。
第132回.その他のExcel機能(グループ化、重複の削除、オートフィル等) ・・・ 後日追加
エセルの機能は豊富で、全部の機能を使っている人はまずいないでしょう。どのような機能があるかだけ知っていれば、必要な時に使えばそれで良いのです。マクロVBAでも全てのエクセル機能を覚える必要などありません。
第135回.ジャンプの選択オプション(SpecialCells) ・・・ 後日追加
数式の入っているセル、定数の入っているセル、条件付き書式の設定されているセル、これらをシート全体やセル範囲の中から一括で取得する方法がマクロVBAにはあります。手動でのジャンプ機能のセル選択をVBAで使うことができます。マクロVBAでは、RangeオブジェクトのSpecialCellsメソッドがこの機能に該当します。
第141回.行・列の表示・非表示・列幅・行高
行または列を非表示にしたり、逆に表示したりする場合のマクロVBAについて説明します。また、あるセルが表示されているか(可視セルか)の判定方法について解説します。行や列はRangeオブジェクトです。表示・非表示は、RangeオブジェクトのHiddenプロパティにTrue/Falseを設定することで行います。

4-7. プロシージャー分割

プロシージャーを適切な機能単位で分割し部品化します。
複数の部品を使い全体を組み立てていきます。

第105回.Callステートメント
プロシージャーの中で他のプロシージャーを呼び出すときには、マクロVBAではCallステートメントを使います。Callステートメントは、SubプロシージャーやFunctionプロシージャーに制御を渡し、Call先のプロシージャー終了後は、Callステートメントの次のステートメントに制御が移ります。
第106回.Functionプロシージャー
プログラム(マクロVBA)内で特定の作業を実行し値を返すプロシージャです。これはつまり、Functionプロシージャで独自の関数をつくれるということです。Subプロシードャーとの違いは、値を返すか返さないかの違いです。
第107回.プロシージャーの引数
Subプロシージャー、Functionプロシージャーにおける、引数リストの指定について説明します。引数は、呼び出し先のプロシージャーに渡すデータを指定するものです。Callステートメントでプロシージャーを呼び出すときに指定する引数を、呼び出される側のプロシージャーで受け取る記述についてのマクロVBA記述の説明になり…
第108回.変数の適用範囲(スコープ,Private,Public)
変数には、その変数をVBA内で使う事ができる範囲が決められています。マクロVBAでは変数の使える範囲を、適用範囲(スコープ)と言います。適用範囲とは、宣言した変数を使う事のできる範囲です。変数を宣言した場所と宣言方法によって、その変数を使える場所が違ってきます。

ここまでが、VBAで業務を自動化する上での必須になります。
自動化したいことのほとんどは、ここまでで実現できるはずです。

復習をかねて練習問題に取り組んでみましょう。
ExcelマクロVBA練習問題
ExcelマクロVBAを覚える為には、・とにかく書く ・とにかく動かす そして ・デバッグする この繰り返しでしか習得する事はできません。多くのプロパティ・メソッド・関数を覚えても、実際にそれを使う事が出来なければ意味がないのです。その為には、やはり練習が必要です。


5. VBA初級からVBA中級を目指して

ここからは、必要になった時に一つずつ覚えて行ってください。
VBA習得としては、既に入門を脱して次の段階に入っています。
すぐに理解できなくても構いませんので、VBAスキルアップに必要なものとして取り組んでください。

5-1. Applicationの便利メソッド

第100回.InputBoxメソッド(インプットボックス)
InputBoxメソッドはApplicationのメソッドで、ユーザー入力用のダイアログボックスを表示します。表示したダイアログボックスに入力された情報を受け取ることが出来ます。マクロVBAの途中でユーザーに何らかの値を入力してもらう事で、その後の処理にその値を使う場合に使用します。
第101回.Midステートメント
Midステートメントは、文字列変数の一部を他の文字列に置き換えます。これは、マクロVBAのステートメントであり、Mid関数とは根本的に違うものです。Mid関数と誤解されがちですが、全く別物になります。
第102回.Intersectメソッド
IntersectメソッドはApplicationのメソッドです。複数セル範囲の、重なっている部分のセル範囲を取得することが出来ます。あるセルが、特定セル範囲内にあるかどうかを判定したり、セル範囲の中から、特定の列や行の部分だけを取り出したりする場合に使います。
第103回.UnionメソッドとAreasプロパティ
UnionメソッドはApplicationのメソッドです。複数のセル範囲を集め、1つのRangeオブジェクとして参照することができます。つまり、Unionメソッドは複数のRangeオブジェクトを連結して1つのRangeオブジェクトにします。
第104回.GetPhoneticメソッドとSetPhoneticメソッド(フリガナ)
GetPhoneticメソッドは、指定した文字列の日本語の「ふりがな」を取得します。SetPhoneticメソッドは、セルに日本語の「ふりがな」を設定します。マクロVBAにおいて、「ふりがな」を扱う時はこれらのメソッドを使います。

5-2. 配列

第109回.列挙型(列挙体)Enum
列挙体は、数値限定のConst定数をひとまとめにして参照しやすくしたものになります。マクロVBAの中で、意味を持つ固定数値を直接記述することは、マジックナンバーとも呼ばれメンテナンス性がとても悪いものになってしまいます 例えば、列位置3(C列)を参照する場合、VBA内で何度も3と記述していては後で変更することが大変…
第110回.ユーザー定義型・構造体(Type)
ユーザー定義型は、名前の通りユーザーが定義できるデータ型になります。普通の変数は、1つの値しか入れられませんが、ユーザー定義型は、複数の異なるデータ型を入れる事が出来ます。プログラミング言語での一般的な呼び方としては、構造体とも呼ばれます。
第111回.静的配列
マクロVBAを学習していくと必ず配列が出てきます。VBA記述自体は簡単なものですが、正しく理解せずに使っている場合も結構見受けられます。ここでは、配列の概要から入り、VBAでの記述方法を解説していきます。
第112回.動的配列(ReDim)
マクロVBAにおける配列の説明として最初に静的配列を解説しました。静的配列では要素数は宣言時点で決められていました。しかし、プログラミングをする上で、実行時点で要素数を決めたい場合や、実行途中で要素数を増減させたい場合が多く出てきます。
第113回.配列に関連する関数
マクロVBAで配列を使う上で、必要となるVBA関数がいくつかあります。より便利に配列を活用するために必須となるVBA関数、・LBound関数 ・UBound関数 ・Array関数 ・IsArray関数 ・Join関数 ・Filter関数 以上のVBA関数について解説します。
第114回.セル範囲⇔配列(マクロVBA高速化必須テクニック)
セル範囲をVariant型変数に入れる事で、配列を作成することができます。また、配列をセル範囲にまとめて出力する事も出来ます。これは、マクロVBAを高速処理したい時の必須テクニックになります、マクロの処理が遅い場合は、このテクニックが使えないか検討してください。
第115回.Split関数
各要素(区切り文字)ごとに区切られた文字列から1次元配列を作成し返します。つまり、Split関数は、文字列を指定の区切り文字で分割し1次元配列を作る関数です。マクロVBAの文字列操作においてはSplit関数はとても重要かつ必須になりますので、しっかりと習得してください。

5-3. ファイル操作Ⅱ

第116回.ファイル操作Ⅱ(OpenとClose)
VBAで(CSV等のテキスト)ファイルを扱う時は、最初に、ファイルを開き、次に、読込書込みを行い、最後に、ファイルを閉じます。ファイルを開くには、Openステートメントを使います、ファイルを閉じるには、Closeステートメントを使います。今回はこのOpenステートメントとCloseステートメントを解説します。
第117回.ファイル操作Ⅱ(Line Input #)
VBAでファイル(CSV等)を扱う時は、最初に、ファイルを開き、次に、読込書込みを行い、最後に、ファイルを閉じます。ファイルを読み込む時には、LineInput#ステートメントを使います。LineInput#ステートメント シーケンシャル入力モード(Input)で開いたファイルから行全体を読み込み、
第118回.ファイル操作Ⅱ(Print #)
VBAでファイル(CSV等)を扱う時は、最初に、ファイルを開き、その後に、読込み書込みを行い、最後に、ファイルを閉じます。ファイルを書き込む時には、Print#ステートメントを使います。Print#ステートメント シーケンシャル出力モード(OutputまたはAppend)で開いたファイルにデータを書き込むファイル入…
第119回.ファイルシステムオブジェクト(FileSystemObject)
FileSystemObjectオブジェクトでは、コンピュータのファイルシステムへのアクセスが提供されています。VBAに用意されているファイル操作関連のステートメントや関数より、より強力で、より多くの機能が搭載されています。ただし機能が大変多いため、これらを全て覚えるという事は困難です。

5-4. VBA拡張機能

第120回.OnTimeメソッド
指定された時刻にマクロを実行させたい時、今から一定時間後にマクロVBAを実行させたい時、このような時に使うのが、OnTimeメソッドです。お昼になったらExcelが教えてくれたり、1時間経ったらExcelが教えてくれるといったことが、このOnTimeメソッドを使用するで実現出来ます。
第121回.SendKeysメソッド
マクロVBAから直接連携操作できない他のアプリケーションに対しても、VBAのキーコードを転送を使って操作することが可能です。SendKeysメソッドを使い、アクティブなアプリケーションにキーコードを転送することで操作します。これは、他のアプリケーションにキーホード入力をすることができるという事です。
第122回.Shell関数
Excelを自動操作するのがマクロVBAですが、他のアプリケーションを起動したい場合も時に出てきます。他のアプリケーションを起動する手段としてVBAに標準で用意されているものがShell関数です。VBAの実行結果をテキスト出力しておいて、マクロ終了時に、メモ帳で実行結果を表示するといったようなことが、
第123回.APIについて(Win32API)
一般的にはAPIは、アプリケーションプログラミングインタフェースのことです、ソフトウェアコンポーネントが互いにやりとりするのに使用するインタフェースの仕様です。ここでは、Windows標準のWin32APIについて解説します。APIを使用するには、まず、Declareステートメントで宣言が必要となります。


6. VBA入門の後日追加記事

一度完結したのですが、ここまでで漏れている内容がありました。
そこで、他のシリーズではなく、ここに記載しておいた方が良いと思うものを追加しました。
抜け番は、本来の章の位置に入れています。

6-1. イベント

第124回.Workbookのイベントプロシージャー
Workbookのイベントプロシージャーは、ブックに対し特定の操作(これがイベント)が行われた時に実行されます。イベントは、手動でもVBAでも、どちらで操作が行われても発生します。Workbookのイベントは多数用意されています。
第125回.Worksheetのイベントプロシージャー
Worksheetのイベントプロシージャーは、ワークシートまたはそのセルに対し特定の操作(これがイベント)が行われた時に実行されます。イベントは、手動でもVBAでも、どちらで操作が行われても発生します。Worksheetのイベントプロシージャーの一覧紹介と主要なイベントについて解説します。

6-2. テーブル機能

第130回.テーブル操作の概要(ListObject)
テーブルのVBAでの操作で使用するオブジェクトの概要の説明です、テーブルは、セルの範囲を表(テーブル)に変換することで、関連するデータの管理と分析を容易にできるエクセルの機能で、以前はリストと呼ばれていました。テーブルを作成して書式設定することで、データを視覚的にグループ化して分析しやすくできます。
第131回.テーブル操作のVBAコード(ListObject,DataBodyRange)
テーブル操作の具体的なVBAコードをパターン別に掲載します、テーブルの全体的な構成は・テーブル全体・見出し行 ・データ範囲 ・集計列 ・集計行 VBAでは、これらのオブジェクトを使い各要素にアクセスします。テーブル全体のオブジェクトがListObjectで、シート内に複数テーブルが作成可能なので、シート内のListO…
第142回.テーブル全件処理とデータ最終行(ListObject,DataBodyRange)
テーブルの全件処理と実際にデータが入っている最終行の取得について具体的なVBAを掲載します。注意点として、最新の365でテーブルが拡張されないパターンについても説明しておきます。テーブルの全体的な構成は ・テーブル全体 ・見出し行 ・データ範囲 ・集計列 ・集計行 VBAでは、これらのオブジェクトを使い各要素にアクセ…

6-3. その他諸々

第127回.他のブックのマクロを実行(Runメソッド)
他のブック中にあるプロシージャー(Sub,Function)を実行する場合は、Application.Runメソッドを使います。別々に作成されたマクロVBAの入ったブックを連携させる時には必須になります。Application.Runメソッド マクロの実行または関数の呼び出しを行います。
第128回.マクロをショートカットで起動(OnKeyメソッド)
マクロVBAをショートカットで起動したい時には、Application.OnKeyメソッドを使います、通常マクロはボタンや図形に登録して起動しますが、これらをクリックするにはマウス操作が必要です。Application.OnKeyメソッドを使う事でショートカットで起動できるようになります。
第129回.レジストリの操作(SaveSetting,GetSetting,GetAllSettings,DeleteSetting)
マクロVBAでレジストリを操作することの是非はあるかもしれませんが、VBAには、レジストリ操作のステートメントと関数が用意されています。VBAエキスパートのVBAスタンダートの出題範囲を見るとレジストリ操作が入っており、ここまでの「マクロVBA入門」で漏れている項目として今回取り上げます。
第133回.引数の数を可変にできるパラメーター配列(ParamArray)
Subプロシージャー、Functionプロシージャーにおいて、引数リストの数を特定せず、不定個数の引数を渡せるよう可変にしたい場合があります。ワークシートの関数では、引数の個数が不定の関数が多数あります。=SUM(数値1,数値2,...) このように、最後が「,...」となっていて、いくつでも(限度はありますが)指…
第134回.Errオブジェクトとユーザー定義エラー
VBA実行時には種々のエラーが発生します。実行時エラーに関する情報は、Errオブジェクトには入っていますので、VBA実行でエラー発生した場合は、Errオブジェクトを参照しエラー内容を調べることになります。Errオブジェクトの使い方と、ユーザー定義エラーの生成方法について解説します。
第138回.外部ライブラリ(ActiveXオブジェクト)
VBAには外部ライブラリ(ActiveXオブジェクト)を操作する事が出来る仕組みがあります。ActiveXオブジェクトとは、オートメーションをサポートするアプリケーションがオートメーションインターフェイスを通して他のアプリケーションに公開しているオブジェクトです。
第140回.Property {Get|Let|Set} ステートメント
VBAでは、カスタムプロパティの作成と操作ができます。クラスモジュール、フォーム、標準モジュール、これらにカスタムプロパティを作成することができます。プロパティを作成するには、Property{Get|Let|Set}ステートメントを使用します。

以上で、「ExcelマクロVBA入門」は完了です。(必要があれば今後も追加しますが)
全てを暗記することは困難ですし、その必要もありません。
マクロVBA開発の実務で不明な事がでてきたら、このページを検索して復習すれば良いことです。
一度学習したことは、案外簡単に思い出せるものです。


7. VBA入門その後の学習について

7-1. 復習したい人は練習問題で確認しましょう

VBA入門の進捗にあわせて全32問を用意しています。
マクロVBA練習問題
ExcelマクロVBAを覚える為には、・とにかく書く ・とにかく動かす そして ・デバッグする この繰り返しでしか習得する事はできません。多くのプロパティ・メソッド・関数を覚えても、実際にそれを使う事が出来なければ意味がないのです。その為には、やはり練習が必要です。

7-2. 途中でくじけてしまった人は実践重視で

VBEでのコード入力手順から実践重視の解説です。
マクロVBA再入門
VBAを学習しようとして、本を読んでもWEBをみても、結局挫折してしまった方を対象に、VBA再入門と題してマクロVBAの基礎の学習を実践形式で進める連載を開始します。理屈は最低限にとどめ、とにかくマクロVBAが書けるようになることを目的とします。

7-3. VBAエキスパートを受験する人は参考書として

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

7-4. VBAの特訓をしたい人にはVBA100本ノック

ツイッター連動企画です。
VBA100本ノック:VBAの特訓
VBAを習得するには実戦あるのみ。書籍を読んだり、WEBページを見ているだけでは自分のものになりません。知識だけでは実戦で使いこなせません。実際に書いて動かす。VBA100本ノックを通して自分のものにしてください。
ツイートでも出題しているので引用リプ等で回答すると多くの人に見てもらえるので良い刺激になると思います。
VBA100本ノック参加者ご紹介
ツイッター連動企画「VBA100本ノック」これに、何らかの形で参加してくださっている方達をここで紹介させてもらいます。・ツイッターの引用リツイート等で回答されている方 ・YouTubeで回答または解説されている方 ・ブログ等で回答または解説されている方 このような方達からの自己申告により以下でご紹介させていただきます。

筆者の独断と偏見で、エクセルVBAのスキルに段級位をつけてみました。
それぞれの段級位における習得技術を一覧にしたものです。
何級まで進んでいるかチェックしてみると励みになると思います。
エクセルVBA 段級位 目安
ツイッターで3日間に渡って順次ツイートしたもののまとめです。筆者の独断と偏見で書いているものですし、かつ、たたき台・原案なので、変更することがあります。各級位の内容は「VBA入門」に解説ページがあります。

ここでの学習が終了したら、もうVBAのエキスパートと言ってよいでしょう。
分からない事があったら以下で調べながら自分で解決できるはずです。

7-5. VBAの不明点を調べるなら

豊富なマクロVBAのサンプルと、VBAの詳細な文法と技術解説になります。
VBAリファレンス
ExcelマクロVBAに関する各種一覧、記事の目次です。
マクロVBA技術解説
ExcelマクロVBAの、良くある問題や少々難度の高い使い方等に対する技術的解説です。掲載しているVBAコードは解説用のコードとなっていますので、適宜変更してお使いください。そのまま使えるサンプル集は、マクロVBAサンプル集をお探しください。
マクロVBAサンプル集
ExcelマクロVBAの実用的なサンプル集として、なるべくそのまま使えるようにVBAコードを書いています。VBAコードの細部についての技術的な解説は少なめになっています。技術的な解説は、以下をご覧ください。


業務で多くの人が使うのなら、よりユーザーフレンドリーな画面を作りたいものです。
VBAでは、ユーザーフォームを作ることで、より使いやすい画面にすることができます。
第1回.ユーザーフォームを挿入
ユーザーフォーム入門として基礎から解説します。まずは、ユーザーフォームの挿入です。ユーザーフォームの挿入手順 メニユーの「挿入」→「ユーザーフォーム」または、左ウインドウのプロジェクト内を右クリックし、「挿入」→「ユーザーフォーム」「UserForm1」が挿入されます。
第2回.フォームのプロパティ
ユーザーフォーム入門として基礎から解説します。フォームのプロパティの主要なものについて説明します。フォームの全プロパティ プロパティはたくさんありますね。これ全部理解するのは大変です。いずれは、全て理解するに越したことはないですが、とりあえず、以下に掲載している必要最低限のプロパティだけは把握しておきましょう。
第3回.コントロールの追加(コマンドボタン)
ユーザーフォーム入門として基礎から解説します。何もないフォームでは何もできませんので、とりあえず部品を配置しましょう。この部品をコントロールと呼びます。ツールボックス ツールボックスには、使えるコントロールが並んでいます。
第4回.コントロールの位置・サイズ調整
ユーザーフォーム入門として基礎から解説します。閉じるボタンだけでは何もできないので、もう少し追加します。複数のボタンを配置したら、位置やサイズを統一したいですね。OKボタンの追加と移動 とりあえず、OKボタンを追加しましょう。
第5回.ラベルの追加
ユーザーフォーム入門として基礎から解説します。フュームが表示されたとき、ユーザーが何をしたらよいか分からないと困ります。それには、日本語で分かりやすく表示しておく必要があります。自由に固定の文字を表示するにはラベルを使います。
第6回.テキストボックスの追加
ユーザーフォーム入門として基礎から解説します。フュームにユーザーが自由に入力できるテキストボックスを配置します。テキストボックスの追加 前回は、ラベルだけ追加しました。今回は、ラベルに対応するテキストボックスを追加しましょう。
第7回.テキストボックスの値をセルへ
ユーザーフォーム入門として基礎から解説します。ユーザーフュームのテキストボックスに入力した値を、ワークシートのセルに出力します。前回までに作成したユーザーフォーム 前回作成したユーザーフォームです。「OK」ボタンを押下すると、このテキストボックスに入力した値をワークシートのセルに値を設定するようにします。
第8回.セルの値をテキストボックスへ
ユーザーフォーム入門として基礎から解説します。フュームのテキストボックスにワークシートのセル値を表示します。シートの実行ボタンを押下したら、アクティブセルの行の値をフォームに表示してみましょう。Initializeイベントプロシージャーの追加 フォームのコードを表示しましょう。
第9回.標準モジュールとフォーム間のデータ受け渡しⅠ
ユーザーフォーム入門として基礎から解説します。フォームが起動された時、起動したシートのアクティブセルの行数を知る方法について解説します。前回までに作成したVBA 標準モジュール フォームモジュール PrivateSubUserForm_Initialize() DimiAsLong WithWorksheets(&…
第10回.標準モジュールとフォーム間のデータ受け渡しⅡ
ユーザーフォーム入門として基礎から解説します。1.シートのセルを使う 2.標準モジュールのグローバル変数を使う 3.標準モジュールからフォームのコントロールを操作する 4.Subプロシージャーの引数を使う 5.Functionプロシージャーの戻り値を使う。
第11回.コンボボックス(ComboBox)の追加
ユーザーフォーム入門として基礎から解説します。ユーザーフォームで良く使われるコントロールは、ラベル、テキストボックス これは当然ですが、その次に良く使われるものは、コンボボックス、リストボックス、チェックボックス、オプションボタンになるでしょう。
第12回.リストボックス(ListBox)の追加
ユーザーフォーム入門として基礎から解説します。リストボックスについて解説します。リストボックスとコンボボックスの使い方はほぼ同様になります。前回コンボボックスで単一列(1列)の場合を説明しましたので、今回は特に複数列について詳しく説明します。
第13回.チェックボックス(CheckBox)の追加
ユーザーフォーム入門として基礎から解説します。チェックボックスは、ONかOFFかの2択の場合に使われます。チェックボックスの追加 今回は、顧客の休止状態のチェックボックスを追加してみましょう。オブジェクト名:chk休止 とすることにします。
第14回.オプションボタン(OptionButton)の追加
ユーザーフォーム入門として基礎から解説します。オプションボタンは、複数の項目からの単一選択になります。ラジオボタン、トグルボタンなどとも呼ばれるものです。前回のチェックボックスと混同されがちですが、チェックボクスはON/OFF、オプションボタンは複数からの選択になります。
第15回.ここまでの整理と完成VBA
ユーザーフォーム入門として基礎から解説します。一旦、ここまでの復習を兼ねて全VBAの整理をします。ついでに、シートの当該行のダブルクリックでフォームが開くようにします。ワークシート Worksheets("顧客マスタ") シートモジュール ダブルクリック時のイベントプロシージャーを追加しました。
第16回.アクティブコントロールに色を付ける
ユーザーフォーム入門として基礎から解説します。フォーム内のどこにカーソルがあるか分かりづらい場合があります。そこで、アクティブなコントロールのバックカラーを変えたり、対応するラベルのフォントを変更したりして、アクティブなコントロールを解り易くします。
第17回.Enterキーで次のコントロールに移動する
ユーザーフォーム入門として基礎から解説します。Enterキーの押下で、(タブ順が)次のコントロールに順々に移動してほしいものです。ユーザーフォームでのEnterキー動作について テキストボックスは、Enterキー押下で次のコントロールに進みます。
第18回.2段階のコンボボックス
ユーザーフォーム入門として基礎から解説します。2段階コンボボックスを作成します。1つのコンボボックスの選択内容により、次のコンボボックスのリストを変更します。ワークシートのセルの入力規則で実施する場合は、入力規則のリストを、2段階の絞り込みで作成1 入力規則のリストを、2段階の絞り込みで作成2一覧リストを使用して、
第19回.数値専用のテキストボックス
ユーザーフォーム入門として基礎から解説します。数値専用のテキストボックスの作成です。数字以外は入力出来ないテキストボックスを作成します。数値専用のテキストボックスの追加 以下のように金額のテキストボックスを追加します。
第20回.テキストボックスの各種イベント
ユーザーフォーム入門として基礎から解説します。ユーザーフォームで最も良く使われる、テキストボックスのイベントの一覧と、キー入力と、コントロール間の移動時のイベント発生順について記載します。ユーザーの操作に応じて自動処理するためには、その操作により発生するイベントと、その発生順序を理解しておくことが必要です。
第21回.ユーザーフォームの各種イベント
ユーザーフォーム入門として基礎から解説します。ユーザーフォームに対する操作(アクション)で発生するイベントの一覧です、ユーザーフォームそのものの制御をする場合は、このイベントを利用します。ユーザーフォームのイベント一覧 太字のイベントが良く使われるイベントになります。
第22回.コントロールの動的作成
ユーザーフォームは、事前に画面デザインを考えて、それにそって部品コントロールを配置するものです。しかし、ユーザーの操作に応じて、動的に部品コントロールを変更したい場合があります。このような場合の対処方法としては、大きく以下の2通りの方法があります。
第23回.イベントプロシージャーの共通化
ユーザーフォームに部品コントロールを配置していくとき、同種のコントロールを繰り返し何個も配置することは良くあります。コピペしながらようやく配置し終わったと思ったら、今度はVBAで同じイベントプロシージャーを何個も作成しなければならなくなります。
第24回.イベントプロシージャーの共通化(Enter,Exit)
ユーザーフォームのVBAでは、同じイベントプロシージャーを何個も作成することが多々あります。テキストボックスを複数個配置して同じイベント処理を実装する時、全く同じイベントプロシージャーをコピペで何個も作るといったことが必要になります。その解決方法として前回、第23回.イベントプロシージャーの共通化 WithEven…
第25回.簡易音楽プレーヤーの作成
VBAにも音楽を!ということでVBAで音楽再生するVBAクラスを作成しました。VBAで音楽再生するクラスを作成 そこで、このクラスを使い簡易的な音楽プレーヤーを作ってみました。あまり本格的なものは作れませんし、良いソフトが沢山ありますので自作しても仕方ありません。
第26回.プログレスバーを自作する
VBAで時間のかかる処理の場合、ユーザーはいつ終わるか分からずただひたすら待っているしかありません。そのような場合はVBAの進捗を画面に表示して、今なにをしているか、後どれくらいで終わるかを知らせることで、ユーザーのイライラはかなり解消されます。
第27回.インクリメンタルサーチの実装
VBAのユーザーフォームで大量のリストから選択する場合、リストが大量にあると単なるコンボボックスやリストでは探すのが大変になってしまいます。そこで、インクリメンタルサーチを実装してみます。インクリメンタルサーチとは、検索したい単語をすべて入力してから検索するのではなく、文字を入力するたびに即座に候補を表示させる機能で…


クラスが使えるようになると、VBAの見える世界がまた変わってきます。
本格的にVBA使いを目指すなら、VBAクラスの習得は必須です。
VBAのクラスとは(Class,Property,Get,Let,Set)
VBAを覚えて、いろいろ作りながらネットで調べたりしていると、クラスとかオブジェクト指向といった言葉に出くわします。VBEの「挿入」の一番下にある「クラスモジュール」は気になっていたかもしれません。このクラスモジュールを使ってクラスを作ります。
VBAクラスの作り方:列名の入力支援と列移動対応
クラスを使う良さとして、入力支援が使えてコーディングが楽になるという利点があります、列番号をクラスに持てば、列名が候補表示されて非常に便利です。しかし、これを実装するには、かなりの手間がかかります。つまり、クラス作成に手間をかけて、その後を楽にするということになります。
VBAクラスの作り方:列名のプロパティを自動作成する
クラスに列名のプロパティを作成することで、入力支援が使えてコーディングが楽になりますが、列数が多くなればVBAの記述量が増え、コーディングが大変になります。入力支援が使えるのは良いが、その事前準備があまりに大変ではやる気が失せてクラス作るのが面倒になってしまいます。
VBAクラスの作り方:独自Rangeっぽいものを作ってみた
クラスの作成は、標準モジュールで作成していた時とは様相が違い戸惑う部分も多いと思います、それは、初めてVBAに取り組んだ時の戸惑いと同じかもしれません。最初はとにかく慣れることが一番です、細かい文法や機能は、少し慣れてから改めて学んでも遅くはありません。
クラスを使って他ブックのイベントを補足する
VBAでイベントを使う場合は、通常はイベントが発生するオブジェクト(ブックやシート等)のモジュールに記載します、つまり、各ブックの中にマクロを入れなければなりません。開いている全ブックまたは、他の特定のブックのイベントを処理するには、WithEventsキーワードを付けた変数宣言を使います、クラスを使って全ブックま…
クラスとイベントとマルチプロセス並列処理
エクセルVBAではマルチスレッドによる並列処理はサポートされていません、つまり通常は順序良く直列に処理していくしかありません。しかし処理時間が多大にかかるような処理も現実には存在しているため、エクセルVBAで並列処理したいという要望も出てきます。
クラスとCallByNameとポリモーフィズム(多態性)
VBAの使い方が進んでいくとクラスを使うようになっていきます。クラスを使うようになるとオブジェクト指向という言葉に出会い、オブジェクト指向を学んでいくとポリモーフィズム(多態性)という言葉に出会います。オブジェクト指向における多態性の説明としては、メソッドの呼び出し時に、メソッドが属するオブジェクト(クラス)の種類…
オートフィルターを退避回復するVBAクラス
シートにオートフィルターが適用されていて、かつ絞り込みされている場合は、マクロVBAでは、何かと注意が必要になります。このような場合、オートフィルターを解除するか、フィルター絞り込みをクリアして対応している事が多くなります。しかし、オートフィルターを解除したり、フィルターをクリアしてしまうと、それまでの絞り込み条件が…
オートフィルター退避回復クラスを複数シート対応させるVBAクラス
ワークシートにオートフィルタが適用されていて、かつ絞り込みされている場合はマクロVBAは何かと面倒になります。そこで、これに対応するために作成したものが、オートフィルタを退避回復するVBAクラス ただし、これはシートが一つしか扱えません。複数シートで使う場合は、シートごとにクラスのインスタンスを作成する必要があります。
コレクション(Collection)の並べ替え(Sort)に対応するクラス
オブジェクトを扱う事が多くなってくるとコレクション(Collectionオブジェクト)を使う機会も増えてくると思います。配列やディクショナリー(Dictionary)を使ったほうが良い場合も多くはありますが、単純にオブジェクトを保管し、順序通り(FIFO)に処理するだけなら、とても扱いやすい場合もあります。
VBAクラスのAttributeについて(既定メンバーとFor…Each)
VBAクラスをエクスポートすると各種のAttributeが設定されているのが確認できます。それぞれのAttributeの意味と、さらに追加で指定できるAttributeについて説明します。Attributeの変更はVBA標準でサポートされておらず、その使用については慎重であるべきですが、どのようなものがあるかを知る…
VBAクラスを使ったイベント作成(Event,RaiseEvent,WithEvents)
VBAクラスを使う事で、ユーザー定義イベントを作成したり、動的にイベントを割り当てる事が出来ます。ユーザー独自のイベントを作成したり、フォームに動的に追加したコントロールにイベントを設定することができます。EventステートメントとRaiseEventステートメントを使う事で、ユーザー定義イベントつまりユーザー独自…
VBAで音楽再生するクラスを作成
VBAにも音楽を!ということでVBAで音楽再生をしてみることにしました。VBAでの音楽再生方法はいろいろありそうですが、多くの環境で動くのではないかという事でAPIを使いました。mciSendString このAPIで音楽再生します。
図形を方程式で動かすVBAクラス
図形を決められた方程式で動かします。もちろん、実用として何かに使うといった物ではなく、純粋にVBAやクラスの勉強素材になります。以下では、小さい●を円の方程式や8の字の方程式で動かしています。クラスモジュールのVBA クラスモジュール名:clsSpinAround 標準モジュールでのNewと一致させれば何でも構いま…
PropertyのSetはLetでも良い
クラス等にプロパティを作成する場合、Let Set Get この3種類があります。クラスモジュール、フォーム、標準モジュール、これらにプロパティを作成するには、Property{Get|Let|Set}ステートメントを使用します。Propertyの文法詳細については以下を参照してください。




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

ピッボットテーブルって便利だよね|還暦のVBA(2021-10-18)
還暦のVBA:VBAまでたどりつけるか… (2021-09-29)
VLOOKUPを使うことを基本としてシートを設計すべきか|エクセル雑感(2021-08-17)
コンピューターはブラックボックスで良い|エクセル雑感(2021-08-14)
小文字"abc"を大文字"ABC"に変換する方法|エクセル雑感(2021-08-13)
ADOでテキストデータを集計する|VBAサンプル集(2021-08-04)
VBA学習のお勧めコース|エクセル雑感(2021-08-01)
エクセル馬名ダービー|エクセル雑感(2021-07-21)
在庫を減らせ!毎日棚卸ししろ!|エクセル雑感(2021-07-05)
日付型と通貨型のValueとValue2について|エクセル雑感(2021-06-26)


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

1.最終行の取得(End,Rows.Count)|VBA入門
2.Excelショートカットキー一覧|Excelリファレンス
3.変数宣言のDimとデータ型|VBA入門
4.RangeとCellsの使い方|VBA入門
5.繰り返し処理(For Next)|VBA入門
6.マクロって何?VBAって何?|VBA入門
7.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
8.Range以外の指定方法(Cells,Rows,Columns)|VBA入門
9.セルに文字を入れるとは(Range,Value)|VBA入門
10.並べ替え(Sort)|VBA入門




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


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



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