【RangeとCellsでセルの位置を指定する】
1 新しいマクロをつくる
2 マクロをコピーして書きかえる
3 Rangeのセル番地を直接指定
4 Rangeのセル番地を定数で指定
5 Rangeのセル番地を変数で指定
6 Cellsの行番号と列番号を直接指定
7 Cellsの行番号と列番号を定数で指定
8 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に記録されていない、新しいマクロをつくりだすという話でした。
プログラミングでは、既に作成したプログラムをコピーして書きかえるというように、
プログラムの再利用がよく行われます。
では、マクロをコピーして書きかえるにはどうしたらよいのでしょうか。
これについては、次回『マクロをコピーして書きかえる』で紹介します。」
◇もしもPython-xlwingsだったら、
2023-03-19
2021-12-20
2021-12-12