【基礎編】Excel VBA基本操作

◆ メソッドって何??

オブジェクトに対して操作する処理のこと。
Clear メソッドや Delete メソッドなどがある。

◆ メソッドの特徴とは??

オブジェクト名.メソッド名 で処理が実行される。

◆ Sub プロシージャ, Function プロシージャの違い

Sub プロシージャ・・・呼び出された時、基本的に戻り値を返さない。
Function プロシージャ・・・呼び出し元に何らかの値を返す。

◆ メソッドでオブジェクトの処理を行う方法

画像7

1行目:プロシージャ名「MethodTest」を定義する。
2行目:B2 セルをクリアにする。
3行目:B5 セルを削除して上方向に詰める。
4行目:Sheet2 の後ろにワークシートを 2 枚追加する。
     ※オプションが複数ある場合には「,」で区切る。

― 実行結果 ―

画像8

B2 セルの中身がクリアされて、
B5 セルが詰まり B8 セルが空白になっているのが確認できた。

画像6

Sheet2 の後ろに Sheet5 と Sheet4 が追加されているのが確認できた。

◆ Integer型の変数を使う

画像1

1行目:プロシージャ名「VariableTest」を定義する。
2行目:整数を割り当てている。
3行目:計算結果を x に代入する。
4行目:3行目の結果に 1 をプラスする。
5行目:A1 セルを指定し、Valueプロパティに値を代入する。
6行目:x の値をイミディエイトウィンドウに表示する。
     ※値の確認だけしたい時は、イミディエイトウィンドウが便利!

― 実行結果 ―

画像2

実行すると、このように 16 と表示されているのが確認できた。

◆ いろいろなデータ型の変数を使う

画像3

1行目:プロシージャ名「VariableTest」を定義する。
3~5行目:それぞれのデータ型を宣言する。
6行目:型の指定をせずに、何か入ってきた瞬間に型を決定する。
7行目:真偽値を格納する。
8行目:Range オブジェクトを格納する。
10~13行目:それぞれの値を代入する。
14行目:オブジェクト型のため、セットする時に必ず「Set」をつける。
16行目:実数のため、四則演算が使える。
17行目:文字列を連結する。
18行目:日付に 7 日間プラスする。
19行目:A1 セルに7 日間プラスした日付を表示する。

― 実行結果 ―

画像4

10.5 を 3 で割った 3.5 、
連結された文字列の helloworld 、
9 月 7 日に 7 日間足された 2021/09/14 が表示されているのが確認できた。
値の確認だけしたい時は、イミディエイトウィンドウで行う。

画像5

A1 セルに 2021/09/14 と表示されているのが確認できた。

◆ 配列を使う

画像27

添字は 0 から始まるので、宣言する時は用意したい個数から 1 を引く。

― 実行結果 ―

画像27

イミディエイトウィンドウで 150 が表示されているのが確認できた。

◆ 複数の配列を指定する

画像28

一気に配列を指定してみます。

― 実行結果 ―

画像29

このように 300 が表示されたのが確認できた。

◆ Ifで条件分岐をする

画像25

A1 に入った値に応じて A2 に何らかのメッセージが出るようにする。

― 実行結果 ―

画像24

条件が真だった場合は OK! となっているのが確認できた。

画像23

20 点だった場合は NG! が表示されるのが確認できた。

画像22

70 点だった場合、実行すると soso... となるのが確認できた。

◆ Selectで条件分岐をする

画像19

Range オブジェクトの場合は必ず Set を使わなければいけません。

― 実行結果 ―

画像20

A1 セルに「red」と入れて実行すると STOP! と出ているのが確認できた。

画像21

適当に何か入れると、n.a. と出ているのが確認できた。
セルの値が決まっていて、
選択肢をスッキリ書きたい場合には Select 文が使えます。

◆ While/Forでループ処理をする

画像18

― 実行結果 ―

画像17

セルの A1 から A9 に 1 から 9 の数字が表示された。

画像16

For 文に関しては、2 飛びや 3 飛びすることができる。

― 実行結果 ―

画像15

2 の倍数のときだけスキップしているのが確認できた。
While文と両方のやり方も使えるようにしておきましょう!

◆ Eachで配列のループ処理をする

画像13

names から 1 個ずつ取り出して Name に入れてくれるので、処理の中で Name を使うことができます。

画像14

全ての要素が取り出せたのが確認できた。

◆ Callでプロシージャを呼び出す

画像11

複雑な処理を部品化したい場合にプロシージャを分けて Call で呼び出す。

― 実行結果 ―

画像12

このようにプロシージャが呼び出されて、
1 つ 1 つに対して「hi!, 」が連結されているのが確認できた。

◆ Functionプロシージャで戻り値を返す

画像10

― 実行結果 ―

画像9

「hi!, 」の後に名前が 3 つ印刷されているのが確認できた。




この記事が気に入ったらサポートをしてみませんか?