【RangeとCellsでセルの位置を指定する】
3 Rangeのセル番地を直接指定
4 Rangeのセル番地を定数で指定
5 Rangeのセル番地を変数で指定
6 Cellsの行番号と列番号を直接指定
7 Cellsの行番号と列番号を定数で指定
8 Cellsの行番号と列番号を変数で指定
9 Rangeのセル範囲を指定
Cellsの行番号と列番号を変数で指定
パイさん
「Excel VBA/マクロのCellsの行番号と列番号については三つの指定方法がありますが、
今回は、その三、Cellsオブジェクトの引数となる行番号と列番号を変数で指定する方法を紹介します。
セル位置を行番号と列番号で指定するCells(行番号, 列番号)オブジェクトを再び紹介します。」
ソンくん
「変数とはなんですか。」
パイさん
「変数とは、一時的に値を保持するためのデータの入れ物です。」
パイさん
「変数をつかうときは、まず名前を決めます。この変数の名前には次のような決まりがあります。
この決まりは、定数の名前を決めるときの決まりとまったく同じです。」
パイさん
「『Cells』で、特定のセルを変数で指定するときは、
行番号を示す変数名と列番号を示す変数名を決めます。
名前の決まりに従えば、変数名はどのようにつけてもかまわないのですが、
意味のある文字にしておくと、あとで見たときにわかりやすいコードになります。
Excel VBAでは、変数名を日本語文字にすることもできるため、
ここでは、行番号を示す変数名を『行』・列番号を示す変数名を『列』とします。
変数名を決めたら、それが変数であることを宣言しないとパソコンには通じません。
そこで、『Dim』という変数宣言文字を、自分で決めた変数名の前にもってくることになります。
定数は定数宣言と同時にその値を設定しますが、
変数は変数宣言のときにその値を設定するのではなく、
あとで、その値を設定します。
そのため、変数は、変数宣言のときに、
その変数のデータ型だけ定義する(決めておく)必要があります。
データ型には数値型、文字列型、日付型などがありますが、
行番号と列番号については必ず数字で指定することになるため、
データ型は数値型になります。」
ソンくん
「数値型ってなんですか。」
パイさん
「数値型とは、数値の設定や計算が可能な数字タイプということです。
一口に数値型といっても、その中には、整数型・長整数型・小数点数型などのいろいろなデータ型があります。
整数型は-32,768から32,767までの間の整数しか格納することができないのですが、
行番号と列番号については通常この範囲におさまるので、ここでは整数型を定義します。
整数型は『Integer』という型指定文字をつかいます。
整数型を定義するときは、『As Integer』のように、整数型『Integer』の前に
『As』というデータ型定義文字を付けますが、この『As』は『○○として定義する』という意味です。
つまり、『As Integer』は『整数型として定義する』という意味です。
また、数値型の変数に値を設定するときは、文字列型のときに値の前後に付ける『”』は不要です。」
パイさん
「マクロ名『行番号と列番号_変数指定』をつくってみましょう。
1行目・1列目のセルに対して、『変数1行1列』を設定しましょう。
行番号を示す変数名を『行』とし整数型として変数宣言。
列番号を示す変数名を『列』とし整数型として変数宣言。
行番号を示す変数『行』に 1 を設定。
列番号を示す変数『列』に 1 を設定。
行番号が変数『行』と列番号が変数『列』のセルの値として、『変数1行1列』を設定。
今回は、このように変数を使ったプログラムを組んでみましょう。」
パイさん
「まず、行番号を示す変数名を、『行』、データ型を『Integer』として変数を宣言してみましょう。」
ソンくん
「『Dim』という変数宣言文字を打って、スペースを入れて、変数名『行』を打って、スペースを入れて、
『As』を打って、スペースを入れて、データ型『Integer』を打ちます。」
パイさん
「OKです。」
Dim 行 As Integer
ソンくん
「変数『行』を整数型として変数宣言しました。」
パイさん
「次に、列番号を示す変数名を、『列』、データ型を『Integer』として変数を宣言してみましょう。」
ソンくん
「『Dim』という変数宣言文字を打って、スペースを入れて、変数名『列』を打って、スペースを入れて、
『As』を打って、スペースを入れて、データ型『Integer』を打ちます。」
パイさん
「OKです。」
Dim 列 As Integer
ソンくん
「変数『列』を整数型として変数宣言しました。」
パイさん
「次に、変数『行』に1を設定してみましょう。」
行 = 1
ソンくん
「変数『行』に1を設定しました。」
パイさん
「次に、変数『列』に1を設定してみましょう。」
列 = 1
ソンくん
「変数『列』に1を設定しました。」
パイさん
「最後に、行番号が変数『行』と列番号が変数『列』のセルの値として、『変数1行1列』を設定しましょう。」
Cells(行, 列).Value = "変数1行1列"
ソンくん
「変数『行』と変数『列』のセルの値として、『変数1行1列』を設定しました。」
Sub 行番号と列番号_変数指定()
Dim 行 As Integer
Dim 列 As Integer
行 = 1
列 = 1
Cells(行, 列).Value = "変数1行1列"
End Sub
ソンくん
「マクロ『行番号と列番号_変数指定』が完成しました。」
パイさん
「それでは、マクロ『行番号と列番号_変数指定』を実行してみましょう。」
ソンくん
「1行目・1列目のセルに、『変数1行1列』が書きこまれました。」
パイさん
「マクロ『行番号と列番号_変数指定』を少し書きかえてみましょう。
3行目・2列目のセルに対して、『変数1行1列』を設定しましょう。
行番号を示す変数名を『行』とし整数型として変数宣言。
列番号を示す変数名を『列』とし整数型として変数宣言。
行番号を示す変数『行』に 3 を設定。
列番号を示す変数『列』に 2 を設定。
行番号が変数『行』と列番号が変数『列』のセルの値として、『変数3行2列』を設定。
今回は、このように変数を使ったプログラムを組んでみましょう。」
Sub 行番号と列番号_変数指定()
Dim 行 As Integer
Dim 列 As Integer
行 = 3
列 = 2
Cells(行, 列).Value = "変数3行2列"
End Sub
ソンくん
「マクロ『行番号と列番号_変数指定』を書きかえました。」
パイさん
「それでは、マクロ『行番号と列番号_変数指定』を実行してみましょう。」
ソンくん
「3行目・2列目のセルに、『変数3行2列』が書きこまれました。」
パイさん
「このように、セルの行番号と列番号を示す値をそれぞれの変数に設定しておけば、
『Cells(行番号, 列番号).Value』の行番号・列番号をそれぞれの変数により指定することができます。
試しに、変数『行』と変数『列』に設定する数値を適当な値に書きかえて、マクロを実行して、
指定したセルの位置に文字が書きこまれることを確かめてみましょう。
(1) 2行目・1列目のセルに『変数2行1列』を、
(2) 1行目・2列目のセルに『変数1行2列』を、
(3) 3行目・3列目のセルに『変数3行3列』を、代入してみましょう。
-
演習(1):マクロ『行番号と列番号_変数指定』
行番号を整数型の変数『行』として定義
列番号を整数型の変数『列』として定義
変数『行』に、値『2』を設定
変数『列』に、値『1』を設定
行番号が変数『行』と列番号が変数『列』のセルの値に、『変数2行1列』を代入
-
Sub 行番号と列番号_変数指定()
Dim 行 As Integer
Dim 列 As Integer
行 = 2
列 = 1
Cells(行, 列).Value = "変数2行1列"
End Sub
-
演習(2):マクロ『行番号と列番号_変数指定』
行番号を整数型の変数『行』として定義
列番号を整数型の変数『列』として定義
変数『行』に、値『1』を設定
変数『列』に、値『2』を設定
行番号が変数『行』と列番号が変数『列』のセルの値に、『変数1行2列』を代入
-
Sub 行番号と列番号_変数指定()
Dim 行 As Integer
Dim 列 As Integer
行 = 1
列 = 2
Cells(行, 列).Value = "変数1行2列"
End Sub
-
演習(3):マクロ『行番号と列番号_変数指定』
行番号を整数型の変数『行』として定義
列番号を整数型の変数『列』として定義
変数『行』に、値『3』を設定
変数『列』に、値『3』を設定
行番号が変数『行』と列番号が変数『列』のセルの値に、『変数3行3列』を代入
-
Sub 行番号と列番号_変数指定()
Dim 行 As Integer
Dim 列 As Integer
行 = 3
列 = 3
Cells(行, 列).Value = "変数3行3列"
End Sub
Cellsの行番号・列番号については三つの指定方法がありますが、
今回は、その三、Cellsオブジェクトの引数となる行番号・列番号を変数で指定する方法を
紹介しました。
これで、Cellsの行番号・列番号の指定方法が三つ揃いましたので、おさらいします。
その一、行番号・列番号を直接指定
コードに行番号・列番号を直接記述する方法。
マジックナンバーと呼ばれるやり方でプログラムのメンテナンス上、非推奨。
前々回『Cellsの行番号と列番号を直接指定』で紹介
その二、行番号・列番号を定数で指定
行番号・列番号に名前をつけて定数宣言すると同時に、
その定数に行番号・列番号を示す数値を設定する方法。
マクロが終了するまで行番号・列番号が変わることがない固定値のときに有効。
前回『Cellsの行番号と列番号を定数で指定』で紹介
その三、行番号・列番号を変数で指定
行番号・列番号に名前をつけて数値型として変数宣言した後に、
その変数に行番号・列番号を示す数値を設定する方法。
マクロが終了するまでに行番号・列番号が何回も変わる変動値のときに有効。
定数に値を設定するのは宣言時の一回限りですが、変数は宣言後に何回でも値を設定することが可能です。
今までは、Cellsオブジェクトをつかい、一つのセルを行番号・列番号で指定しました。
では、Cellsオブジェクトをつかい、多数のセルを行番号・列番号で指定するには
どうしたらよいのでしょうか。
これについては、『多数のセルの行番号と列番号を直接指定して値を書きこむ』で紹介します。」