【RangeとCellsでセルの位置を指定する】
1 新しいマクロをつくる
2 マクロをコピーして書きかえる
3 Rangeのセル番地を直接指定
4 Rangeのセル番地を定数で指定
5 Rangeのセル番地を変数で指定
6 Cellsの行番号と列番号を直接指定
7 Cellsの行番号と列番号を定数で指定
新しいマクロをつくる
パイさん
「『ビジュアル ベーシック エディター』をつかえば、Excelに記録したマクロを書きかえることができますが、
Excelに記録されていない、新しいマクロをつくりだすこともできます。
自由に新しいマクロをつくりだすことができるようになれば、
思い通りにExcelを操作することができるようになります。
新しいマクロをつくって実行してみましょう。
まず、『ビジュアル ベーシック エディター』を開きましょう。」
ソンくん
「『ビジュアル ベーシック エディター』を開きました。」
パイさん
「『ビジュアル ベーシック エディター』を開いたら、挿入タブを選んで、標準モジュールをクリックします。」
ソンくん
「真っ白な『コードウィンドウ』が現れました。」
パイさん
「通常、新しいマクロをつくるときは、このように新しく『標準モジュール』を追加し、
その『コードウィンドウ』の中に、プロシージャを記述(コーディング)していくことになります。
プロシージャを記述してみます。コードウィンドウの1行目にキーボードで『Sub』と打ってみましょう。」
ソンくん
「『Sub』と入力しました。」
パイさん
「その『Sub』に続けて、マクロ名を入力します。
『 』(スペース) を1文字入れて、ここでは『新しいマクロ』と打ってみましょう。」
ソンくん
「『新しいマクロ』と入力しました。」
パイさん
「その『新しいマクロ』の右側にカーソルがある状態(縦線が点滅している状態)で、
Enterキーを打ってみましょう。」
ソンくん
「『新しいマクロ』の右側に『()』が現れ、一行あけて、『End Sub』という文字が、自動的に現れました。」
パイさん
「マクロ名の右側の『()』は、引数(ひきすう)と呼ばれるデータを、プロシージャに渡すときに、
つかわれるものですが、渡すデータがないときは、このように『()』で表示されます。
また、『Sub』という文字がプロシージャの始まりを『End Sub』という文字がプロシージャの終わりを
示すことになります。
2行目に、サンプルコードとして
と打ってみましょう。先頭に『 』(スペース) を入れておくと、見やすいコードになりますよ。」
ソンくん
「Range("A1").Value = "初めてのマクロ"と入力しました。」
パイさん
「『新しいマクロ』を実行してみましょう。」
ソンくん
「『新しいマクロ』を実行しました。」
ソンくん
「セルのA1に『初めてのマクロ』という文字が表示されました。」
パイさん
「プロシージャの2行目のコードRange("A1").Value = "初めてのマクロ"について説明します。」
パイさん
「『Range』は、特定のセルをセル番地で指定するときに使うオブジェクトです。
オブジェクトとはマクロ操作の対象のことで、Excelファイル(Book)、Excelシート(Sheet)、セルなどのこと
を言います。
また、『Range』の右側の『( )』は引数を書く場所で、
一つのセル、または、セル範囲の位置を文字列で表します。
Range("A1")はセルA1という意味です。」
パイさん
「『.』(ドット)は、オブジェクトをつなげるための特別な記号で『の』という意味です。
『Excelファイル.Excelシート.セルA1』のような使い方もあります。
これは、『ExcelファイルのExcelシートのセルA1』という意味です。
Range("A1").はセルA1のという意味です。」
パイさん
「『Value』は、セルの値を設定するためのプロパティです。
プロパティとはオブジェクトの属性のことです。
属性とは、そのオブジェクトの情報そのものです。
Range("A1").ValueはセルA1の値という意味です。」
パイさん
「『=』は、変数またはプロパティに値を代入する演算子です。
ソンくん
「変数ってなんですか。」
パイさん
「変数とは、一時的に値を保持するための入れ物です。
プログラム実行時に一時的に値を保持したいときに使います。」
ソンくん
「演算子ってなんですか。」
パイさん
「演算子とは、四則演算(加減乗除)、文字列や変数の比較や操作などを行うための
特別な記号や文字のことです。
代入演算子としての『=』は、 A = B のような形で使われますが、
このときは、左辺のAの値に右辺のBの値を代入するという意味です。
(このときは、左辺のAの値と右辺のBの値が同じという意味ではありません。)
パイさん
「プログラムコードの中に、文字列を記述するときは、それが文字列であることを示すために
特別な記号『”』を使います。」
ソンくん
「文字列ってなんですか。」
パイさん
「文字列とは、アルファベット、ひらがな、カタカナ、漢字、記号、数字のような
文字が一つ以上連なったもののことです。
サンプルコードでは、『A1』(セル番地)と『初めてのマクロ』が文字列です。」
ソンくん
「『A1』はアルファベットと数字が連なった文字列、
『初めてのマクロ』は漢字とひらがなとカタカナが連なった文字列、ということですね。」
パイさん
「その通りです。」
ソンくん
「『A1』は2文字だけど、『A』だったら1文字です。これも文字列ですか?」
パイさん
「その通りです。1文字でも『A』は文字列です。」
ソンくん
「わかりました。では、『1』は文字列ですか?」
パイさん
「『1』は用途によって、文字列か数値かに分かれるため、そのときの状況によって、
どちらになるかが決まります。
プログラムにおいて、数字は、設定や計算のために数値として使うときは数値、
単なる文字として使うときは文字列、となります。
今回、『1』はセル位置を示す文字列『A1』の一部であるため、今回、『1』は文字列です。」
ソンくん
「わかりました。数字は用途によって文字列になったり数値になったりするのですね。」
パイさん
「Excelマクロで文字列を記述するときは、
『”』をその文字列の前と後に一つずつセットし、
『”』と『”』でその文字列を囲みます。
サンプルコードの中の『初めてのマクロ』という値を示す文字列でも
”初めてのマクロ”というように、『”』と『”』でその文字列を囲でいます。
また、サンプルコードの中の『A1』というセル位置を示す文字列でも
”A1”というように、『”』と『”』でその文字列を囲でいます。
ソンくん
「わかりました。Excelマクロで文字列を記述するときは、”文字列”と記述するのですね。」
パイさん
「これで、Range("A1").Value = "初めてのマクロ"を構成する全てのパーツを説明しました。
では、改めて質問します。Range("A1").Value = "初めてのマクロ"とは、どういう意味でしょうか。」
ソンくん
「Range("A1").Value = "初めてのマクロ"は、セルA1の値に文字列『初めてのマクロ』を代入する
という意味です。」
パイさん
「その通りです。今回は、初めてのマクロとして、次のサンプルコードを紹介しました。
Range(セル番地)オブジェクトをつかえば、特定のセルをセル番地で指定することができます。
それと、Excelに記録されていない、新しいマクロをつくりだすという話でした。
プログラミングでは、既に作成したプログラムをコピーして書きかえるというように、
プログラムの再利用がよく行われます。
では、マクロをコピーして書きかえるにはどうしたらよいのでしょうか。
これについては、次回『マクロをコピーして書きかえる』で紹介します。」