
基本からわかるExcel VBA 実用Q&A
目次
-
[Excel VBA]フォルダーの選択画面を開くには?
マクロの実行中、ユーザーにフォルダーを選択させるには、“フォルダーの選択”ダイアログボックスを使うと便利です。方法はいくつかありますが、FileDialogオブジェクトを使う方法が簡単です。引数には、表の定数を指定できます。
-
[Excel VBA]ステータスバーに文字を表示するには?
画面の一番下にあるステータスバーには、任意の文字列を表示できます。表示する文字列は、ApplicationオブジェクトのStatusBarプロパティに設定します。
-
[Excel VBA]MsgBoxを自動的に閉じるには?
VBAのMsgBox関数は、ユーザーがボタンを押すまで表示され続けます。指定した時間が経過した後に自動的に閉じるMsgBoxを表示するには、Windows Scripting Host(WSH)のPopupメソッドを使います。
-
[Excel VBA]画面の更新を止めるには?
マクロを実行すると、何らかの操作をするたびに画面が更新され、その更新処理により処理速度が遅くなることがあります。そこで、マクロによる画面の更新を抑止すると、マクロの実行が速くなる場合があります。
-
[Excel VBA]配列をコピーするには?
配列は、複数の値を格納できる“変数の一種”です。変数が一戸建て住宅だとすれば、配列は集合住宅のようなものでしょう。VBAでは、配列名の後ろにカッコを付けて、配列内の要素の番号を書きます。番号は0から始まる点に注意してください。
-
[Excel VBA]オブジェクト型変数を使うには?
オブジェクト型変数を使うと、任意のオブジェクトを別の名前で操作できます。オブジェクト型変数にオブジェクトを格納するときは、Setステートメントを使います。値を変数に入れるときのように、単に「変数名 = 値」と書くだけではダメで、「Set 変数名 = オブジェクト」のような書き方をします。
-
[Excel VBA]定数を使うには?
定数を宣言するときは、Constステートメントを使います。変数を宣言するDimステートメントと同様、「Const」に続けて定数名を書き、その後ろに「As」とデータ型を指定します。Dimと異なるのは、さらに続けて、その定数が指し示す値を記述できる点です。なお、データ型の指定は省略可能です。
-
[Excel VBA]ショートカットキーを設定するには?
ApplicationオブジェクトのOnKeyメソッドを実行すると、マクロ(プロシージャ)にショートカットキーを設定できます。キーの指定は、{ }でキーの名前を囲みます。pキーなら「{p}」、F2キーなら「{F2}」と書きます。ShiftやCtrl、Altと組み合わせる場合は、それぞれ「+」「^」…
-
[Excel VBA]同じ対象に複数の処理を施すには?
同じセルに対して、値を入れたり、文字色を変更したり、塗りつぶしを設定したりと、複数の処理を実行するようなケースがあります。このとき、個々の処理に対して「Range(”A1”).~」のように毎回セルを指定して書くのは面倒です。
-
[Excel VBA]エラーを無視するには?
エラーが発生しても、そのエラーを無視して次の行の処理を継続するには、On Errorステートメントに「Resume Next」と付けて実行します。
-
[Excel VBA]マクロを強制終了するには?
実行中のマクロ(プロシージャ)を強制終了するには、「Exit Sub」と記述します。これは、Exitステートメントにキーワード「Sub」を付けたものです。
-
[Excel VBA]別のプロシージャを呼び出すには?
プロシージャとは、Sub~End SubやFunction~End Functionなどと表される、マクロの最小実行単位のことです。あるプロシージャの中で、別のプロシージャを呼び出すには、Callステートメントを使います。
-
[Excel VBA]ユーザー定義関数を作るには?
標準モジュールに記述したFunctionプロシージャは、ワークシートのセル内でワークシート関数のように使用できます。これを、ユーザー定義関数と呼びます。
-
[Excel VBA]マルチページを操作するには?
マルチページは、フォーム上に複数のタブを設ける機能です。タブの数(ページ数)はPagesオブジェクトのCountプロパティで、表示中のタブのインデックス値はValueプロパティで取得できます。タブを切り替えるには、MultiPageのValueプロパティに、表示するタブのインデックス値を指定します…
-
[Excel VBA]フォームの表示位置を指定するには?
マルチページは、フォーム上に複数のタブを設ける機能です。タブの数(ページ数)はPagesオブジェクトのCountプロパティで、表示中のタブのインデックス値はValueプロパティで取得できます。
-
[Excel VBA]条件に応じて処理を分岐するには?
条件が成り立つ場合にだけ特定の処理を実行させるには、If文を使います。IfとThenの間に条件式を書き、End Ifとの間に、条件が成り立つときの処理を記述します。
-
[Excel VBA]複雑な条件分岐をするには?
複雑な条件分岐には、Select Caseを使うと便利です。指定した「値」が、値1のときは処理1、値2のときは処理2…という具合に、上から順番に条件分岐できます。「Case 80 To 99」や「Case Is < 50」のように数値の範囲を条件にすることも可能です。
-
[Excel VBA]処理を繰り返すには?
表の1行目から10行目までを続けて処理する場合など、特定の処理を繰り返すにはFor NextステートメントやDo Loopステートメントを使います。
-
[Excel VBA]リストの選択時に処理を実行するには?
リストボックスで、任意のデータが選択されたときに処理を自動実行するには、ListBoxのClickイベントにコードを記述します。
-
[Excel VBA]コンボボックスにデータを登録するには?
コンボボックスは、テキストボックスとリストボックスが合体したようなコントロールです。それぞれの部位は、テキストボックスやリストボックスと同じように操作できます。コンボボックスのリスト部分にデータを登録するには、AddItemメソッドを使います。