【基礎編】Excel VBA基本操作
◆ メソッドって何??
オブジェクトに対して操作する処理のこと。
Clear メソッドや Delete メソッドなどがある。
◆ メソッドの特徴とは??
オブジェクト名.メソッド名 で処理が実行される。
◆ Sub プロシージャ, Function プロシージャの違い
Sub プロシージャ・・・呼び出された時、基本的に戻り値を返さない。
Function プロシージャ・・・呼び出し元に何らかの値を返す。
◆ メソッドでオブジェクトの処理を行う方法
1行目:プロシージャ名「MethodTest」を定義する。
2行目:B2 セルをクリアにする。
3行目:B5 セルを削除して上方向に詰める。
4行目:Sheet2 の後ろにワークシートを 2 枚追加する。
※オプションが複数ある場合には「,」で区切る。
― 実行結果 ―
B2 セルの中身がクリアされて、
B5 セルが詰まり B8 セルが空白になっているのが確認できた。
Sheet2 の後ろに Sheet5 と Sheet4 が追加されているのが確認できた。
◆ Integer型の変数を使う
1行目:プロシージャ名「VariableTest」を定義する。
2行目:整数を割り当てている。
3行目:計算結果を x に代入する。
4行目:3行目の結果に 1 をプラスする。
5行目:A1 セルを指定し、Valueプロパティに値を代入する。
6行目:x の値をイミディエイトウィンドウに表示する。
※値の確認だけしたい時は、イミディエイトウィンドウが便利!
― 実行結果 ―
実行すると、このように 16 と表示されているのが確認できた。
◆ いろいろなデータ型の変数を使う
1行目:プロシージャ名「VariableTest」を定義する。
3~5行目:それぞれのデータ型を宣言する。
6行目:型の指定をせずに、何か入ってきた瞬間に型を決定する。
7行目:真偽値を格納する。
8行目:Range オブジェクトを格納する。
10~13行目:それぞれの値を代入する。
14行目:オブジェクト型のため、セットする時に必ず「Set」をつける。
16行目:実数のため、四則演算が使える。
17行目:文字列を連結する。
18行目:日付に 7 日間プラスする。
19行目:A1 セルに7 日間プラスした日付を表示する。
― 実行結果 ―
10.5 を 3 で割った 3.5 、
連結された文字列の helloworld 、
9 月 7 日に 7 日間足された 2021/09/14 が表示されているのが確認できた。
値の確認だけしたい時は、イミディエイトウィンドウで行う。
A1 セルに 2021/09/14 と表示されているのが確認できた。
◆ 配列を使う
添字は 0 から始まるので、宣言する時は用意したい個数から 1 を引く。
― 実行結果 ―
イミディエイトウィンドウで 150 が表示されているのが確認できた。
◆ 複数の配列を指定する
一気に配列を指定してみます。
― 実行結果 ―
このように 300 が表示されたのが確認できた。
◆ Ifで条件分岐をする
A1 に入った値に応じて A2 に何らかのメッセージが出るようにする。
― 実行結果 ―
条件が真だった場合は OK! となっているのが確認できた。
20 点だった場合は NG! が表示されるのが確認できた。
70 点だった場合、実行すると soso... となるのが確認できた。
◆ Selectで条件分岐をする
Range オブジェクトの場合は必ず Set を使わなければいけません。
― 実行結果 ―
A1 セルに「red」と入れて実行すると STOP! と出ているのが確認できた。
適当に何か入れると、n.a. と出ているのが確認できた。
セルの値が決まっていて、
選択肢をスッキリ書きたい場合には Select 文が使えます。
◆ While/Forでループ処理をする
― 実行結果 ―
セルの A1 から A9 に 1 から 9 の数字が表示された。
For 文に関しては、2 飛びや 3 飛びすることができる。
― 実行結果 ―
2 の倍数のときだけスキップしているのが確認できた。
While文と両方のやり方も使えるようにしておきましょう!
◆ Eachで配列のループ処理をする
names から 1 個ずつ取り出して Name に入れてくれるので、処理の中で Name を使うことができます。
全ての要素が取り出せたのが確認できた。
◆ Callでプロシージャを呼び出す
複雑な処理を部品化したい場合にプロシージャを分けて Call で呼び出す。
― 実行結果 ―
このようにプロシージャが呼び出されて、
1 つ 1 つに対して「hi!, 」が連結されているのが確認できた。
◆ Functionプロシージャで戻り値を返す
― 実行結果 ―
「hi!, 」の後に名前が 3 つ印刷されているのが確認できた。