...

12 VBA 入門 I

by user

on
Category: Documents
17

views

Report

Comments

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
Fly UP