Comments
Description
Transcript
12 VBA 入門 I
12 VBA 入門 I 今週は Excel において重要な概念であるオブジェクト、プロパティ、メソッドについて学ぶ。初学者はなか なかわからないと思うが、とにかくプログラミングを通じて理解すること。 12.1 プロパティ マクロ (1) Excel2010 を起動する。 (2) まずマクロが使えるようにする. ファイルタブの [オプション] → [リボンのユーザー設定] をクリッ ク。[コマンドの選択] は [基本的なコマンド] 、[リボンのユーザー設定] は [メインタブ] であること を確認したら右の窓にある [開発] にチェックを入れる。これで開発タブが現れる。 (3) 開発タブで [マクロのセキュリティ] をクリック。[すべてのマクロを有効] にチェックを入れる。こ れでマクロが使える。(今後はこの操作をまず最初にすること) (4) 先週の課題として提出した Excel ファイルを開く。(無ければHPの lec10.xlsm をダウンロード) (5) VBE を起動する (6) マクロ Msg のソースコード中を次のように変更する。 Sub Msg() MsgBox(Range(”B1”).Value) End Sub (7) 上書き保存してから課題ボタンを押すと B1 セルにある名前が出る。 このプログラムを元にオブジェクトについて説明する。オブジェクトとは直訳すると「モノ」という意味 で、具体的には Excel を構成するセルやワークシート、グラフなどの部品を意味する。ソースコードにある Range(”B1”) は B1 セルというオブジェクトの名前である。 もうひとつ重要なのがプロパティである。直訳すると「属性」で、オブジェクトの属性を意味する。例えば セルというオブジェクトのプロパティとしては値やフォント、色などがある。プロパティは次のように用いる。 • オブジェクト名. プロパティ名 セルの値のプロパティは「Value」であるので、B1 セルの値を使う時は Range(”B1”).Value と記述する。 これを少し変えてみよう。 31 マクロ (1) マクロ Msg のソースコード中を次のように変更する。& の両側に半角スペースをつけること。 Sub Msg() MsgBox(”私の名前は” & Range(”B1”).Value & ”です。”) End Sub (2) これで上書き保存してから課題ボタンを押すと B1 セルにある名前が出る。 (3) VBE ではソースコードを間違えるとエラーメッセージが出て下記のような中断モードに入る。 (4) 間 違 え た 場 合 、ソ ー ス コ ー ド を 直 し て 上 の ツ ー ル バ ー に あ る [継 続] ボ タ ン を 押 す 。 (5) これをエラーが直るまで繰り返す。(上の画像が見にくい学生は HP の PDF 画像がカラーでわかり やすい) このソースコードについて説明しよう。”私の名前は” のように”と”で囲まれた部分は文字列のデータとして 扱われる。文字列と文字列の連結には文字列連結演算子 & を使う。すなわち • 文字列 A & 文字列 B で文字列の結合を行う。これを更に発展させよう マクロ (1) A3 セルに「3」, B3 セルに「+」, C3 セルに「12」, D3 セルに「=」と入力する。 (2) このままでは見にくいので A3 から D3 までの範囲 A3:D3 を選択して右クリックで [セルの書式設 定] → [配置] 。[横位置] を「中央揃え」にして [OK] をクリックする。 (3) マクロ Msg のソースコード中を次のように変更する。 Sub Msg() MsgBox(Range(”A3”).Value) End Sub (4) これで上書き保存してから課題ボタンを押すと A3 セルにある数字が出る。 32 セルのプロパティの参照(情報の獲得)の方法がわかったので、今度は設定方法を学ぶ。 マクロ (1) マクロ Msg のソースコード中を次のように変更する。 Sub Msg() Range(”E3”).Value = Range(”A3”).Value + Range(”C3”).Value MsgBox (Range(”E3”).Value) End Sub (2) これで課題ボタンを押すと E3 セルに計算結果が出る。 プロパティへの値の設定は簡単で=を使う。 • オブジェクト名. プロパティ名=設定値 E15 のフォントの色を変えてみよう。 マクロ (1) マクロ Msg のソースコード中を次のように変更する。 Sub Msg() Range(”E3”).Value = Range(”A3”).Value + Range(”C3”).Value Range(”E3”).Font.ColorIndex = 3 MsgBox (Range(”E3”).Value) End Sub (2) 採点ボタンを押すとマクロ Msg が動くように変更する。 (3) 上書き保存してから採点ボタンを押すと E3 セルに計算結果が赤文字で出る。 ここで注意して欲しいのは Range(”E3”).Font.ColorIndex である。実はよく使われるオブジェクトはこの ようにオブジェクトが階層構造になっている。すなわちこのコマンドは「Range(”E3”) オブジェクトの Font の CokorIndex というプロパティ」を意味する。この階層構造には注意すること。 12.2 メソッド プロパティと並んで重要なのが「メソッド」である。直訳すると「動作」で、オブジェクトの動作を意味す る。例えばセルというオブジェクトのメソッドとしては選択、コピー、貼り付けなどがある。メソッドは次の ように用いる。 • オブジェクト名. メソッド名 早速、例を作ってみよう。 33 マクロ (1) マクロのソースコードに下記のコードを追加する。 Sub Reset() Range(”E3”).ClearContents End Sub (2) クリアボタンを押すとマクロ Reset が動くようにする。 (3) 上書き保存してからクリアボタンを押すと E3 セルがクリアされる。 ClearContents はセルの内容をクリアするメソッドである。なお引数のいる場合、例えばセルのコピー先を指定 する場合は下記のようになる。 • オブジェクト名. メソッド名 引数名:=設定値 • オブジェクト名. メソッド名 引数名 1:=設定値 1, 引数名 2:=設定値 2,· · · (引数が複数の場合) さっそく例を示そう。A3:E3 を A5:E5 にコピペするメソッドを作成しよう。 マクロ (1) マクロのソースコードに下記のコードを追加する。 Sub mymulticopy() Range(”A3:E3”).Copy Destination:=Range(”A5”) End Sub (2) 課題ボタンを押すとマクロ mymulticopy が動くように変更する。 (3) 上書き保存してから課題ボタンを押すとコピーされる。 12.3 まとめ 今週はオブジェクト、プロパティ、メソッドなど VBA を構成する基本的な概念を導入した。来週以降、ど んどんこれらが出てくるので、今日の例を元によく理解すること。 34