エクセルやワードなどのオフィスプログラムには VBA(Visual Basic for Applications) で構成されるマクロという機能があります エクセルを使っていると同じ操作を何度も繰り返すことがあります. 例えば実験で得たデータを入力し, それをグラフにする操作は学生実験を行うと毎回のように行います. コンピュータを使った処理の便利な点は速い上に簡単に自分の望む結果が得られる点です. 複雑な同じ操作を何回も繰り返すのはコンピュータを賢く利用しているとは言えません. グラフを作成するという手順は下記の通りです. 1. データを入力する 2. データを選択 3. 挿入 -> 散布図 上記の手順で作成すると上手のようなグラフが出来上がります. しかし, エクセルのデフォルトの書式は化学のグラフには適切ではありません. 下図のようなグラフにするには上の手順に加えて 4. 軸ラベルの追加, グラフタイトルの削除 5. グリッドの削除 6. 補助目盛の追加 7. 目盛間隔の変更 8. データマークのサイズ変更などが必要になります. もしこのような作業をいつも行うのであればこの手順を VBA として記述しておけばボタン
を押すだけで作業が終了します. このようなことを可能にしてくれるのがマクロ (VBA) です. VBA は Basic というプログラム言語が元になっており比較的理解しやすいプログラム言語です. まずは, エクセルの VBA の概要を簡単なプログラムを作りながら見てみましょう. エクセルを起動します. メニュータブの中の開発とタブを選択します.[ 開発タブが現れていない場合はファイル->オプション->リボンのユーザー設定で開発にチェックを入れて下さい.] 開発メニューの一番右側に Visual Basic というのがあり, これが Visual Basic Editor(VBE) と呼ばれプログラムを作るためのツールです. これをクリックします. Visual Basic Editor が起動すると下図のようなウィンドウが現れます.
VBE が起動すると上図のようになり, プロジェクトエクスプローラとプロパティウィンドが表示されます ( 表示されていない場合には VBE -> 表示でそれぞれを選択して下さい ). プロジェクトウィンドウでは右図のようにエクセルを起動することで動いているプログラムが表示されています.VBA でプログラムを作り始めるとこのウィンドウにプログラム部分が追加されます. プロパティウインドではプロジェクトエクスプローラで選択されたもの ( オブジェクト ) の色々なパラメータの値が表示されています. 例えばエクセルワークシートの名前が Sheet1になっています. これを変更するとワークシートの名前も変更されます. このままの状態ではまだプログラムを作ることはできません. プログラムを作るにはその一番基礎となる標準モジュールを追加する必要があります. そのためには VBE メニューの挿入 -> 標準モジュールを選択するか, プロジェク
トエクスプローラの VBAProject のところで右クリックし, 挿入 -> 標準モジュール ( 右図 ) を選択します. すると, 下図の様に灰色で何もなかったところに白い背景のウィンドウが現れます. これがコードウィンドウです. この部分にプログラムを記入します. コードウィンドウ コードウィンドウが現れると同時にプロジェクトエクスプローラでは VBA プロジェクトの下に標準モジュール (Module1) が追加されます これが皆さんがプログラムを記述す本体です
さっそくコードウィンドウにプログラムを入力してみてましょう まず Sub test() と入力しエンターキーを押すと自動的に End Sub が補填されます Sub というのはサブプロシジャのことで VBA のプログラムと考えてください Sub からはじまって End Sub までの間に様々な命令を記述するのが VBA プログラムの基本です Sub の次に記述されている test() というは作成する人が自由につけることのできるプログラムの名前です この名前をエクセル側から指定することでプログラムを実行することができます それではプログラムを書いてスペースを入れるみましょう 右図のように Sub と End Sub の間にプログラムを記入してください 記入する時は ) の日本語のみ全角後ろまたは E の前にカーソルを移動し エンターキーを押すと記入できる行ができます MsgBox という文字は全文小文字で入力して大丈夫です また xと の間にスペースを入れてください 注意点としては日本語以外は全文半角で入力してください これでプログラムの出来上がりです プログラムが出来上がったら先ず行わなければならないのが保存です プログラムはできてすぐに動くかどうかわかりません エラーが出て止まる程度なら問題ありませんが 最悪の場合 暴走して PC を再起動しなければなりません 暴走してからは保存することはできませんのでプログラムを実行する前に保存することは鉄則です 保存は VBE からではなくエクセル本体から行います ファイル-> 名前を付けて保存とするとウィンドウが開きますのでそこで適当なフォルダに名前を付けて保存します その際には 保存形式に注意してください
マクロ (VBA) を含むエクセルファイルはマクロ有効ブックという保存形式があります ウィンドウが開いたらファイル名の下のファイルの種類のところでマクロ有効ブックを選択してください すると ファイルの拡張子が xlsm になります ファイル名は適当につけてください 準備ができたら OK を押して保存します これで保存できましたのでエクセルを一度終了して保存したエクセルを起動してみましょう 対応するファイルをダブルクリックするとエクセルが起動します もし 上記のようなセキュリティの警告が出たらコンテンツを有効化してください これはネット上や他人からもらったエクセルファイルで悪意のあるプログラムが勝手に動いてしまうことを防ぐために行っています エクセルファイルに含まれている VBA の素性がわかっている場合には有効化して問題ありません さてこれで準備ができましたのでプログラムを実行してみましょう まず VBE を起動してください プログラムの実行はメニューの実行からマクロの実行を選択するか メニューバーの実行ボタン ( ) を押してください
実行ボタン 実行すると右の様な運動が開き なかに先ほど記述した情報化学へようこその文字が現れるはずです さきほどのプログラムには MsgBox 情報化学へようこうそ と書きました この 1 行で右のようなウィンドウが開き 文字が表示されたわけです つまり 逆に考えると MsgBox というのは次に続く で囲まれた文字を画面に表示する命令であると解釈できます それであればこれを2つ続けると 2 つのウィンドウが開くはずです 右のようにプログラムを変更してみましょう End Sub の頭にカーソルを移動してエンターキーを押して追加します そして 保存したのちに実行してみてください すると先ほどと同じように 情報化学へようこそ というウィンドウは現れますが もう一つは現れません そこで OK ボタンを押してみると次のウィンドウが現れました 確かに MsgBox の後ろの の中の文字が表示されています また 一度に 2 つ現れなかったということはプログラムは上から 1 行ずつ実行されているということです これまでプログラムの実行は VBE の中だけで行っていましたが 毎回 VBE を起動して実行するのは大変です また エクセルのマクロ (VBA) である以上 エクセルから使うというのが原則です そのためにエクセルのシート上に何か設置してこのプログラムに連動させます 開発タブの挿入をクリックするとボタンなどのコントロールが出てきます どちらを使ってもよいのですが ここではフォームコントロールを使ってシート状にボタンを配置しましょう
どれがボタンかはマウスカーソルを移動すると説明が出ます ( 右図 ) のでそれで判断してください ボタンをクリックしたらマウスカーソルが十字になるのでシート上でドラッグして適当な大きさにしてください するとボタンが作成されます 続いて新しいウィンドウが開いてマクロの登録画面になります 開発画面での挿入はマクロに関係する物を挿入することですので自動的にマクロの登録画面が開きます マクロ (VBA) の登録画面にはマクロ (VBA) 名が表示されています 図では ボタン3_ Click と表示されています この意味は作成したボタン3をクリックしたときという意味です このボタンでどのマクロ (VBA) を起動するかを決めます 下のボックスに test と作成したマクロの名前が挙がっています もし マクロ (VBA) を複数作成していたらここには複数の名前が表示されます ここで下のボックスの一つを選択して OK を押すとボタンとプログラムの連携が確立されます マクロの登録が終わった直後はボタンが選択された状態になっているので空白のセルをクリックした後にボタンを押してみてください プログラムが動くはずです
プログラムの起動はボタンのような開発タブ内の挿入からフォームコントロールを配置する以外に普通の図形や写真などにも連携させることができます たとえば挿入タブの図形から正方形 / 長方形を作成します ( 右図 ) 作成した正方形/ 長方形の上で右クリックするとメニューが現れます この中にマクロの登録という項目があるのでこれを選択します マクロの登録画面ではマクロ名として正方形長方形 2_Click と表示されています これは作成した正方形長方形をクリックしたときに起動するプログラムという意味です これに連携するプログラムを下のボックスから選びます ここでは test を選択し OK を押します この場合も登録直後は正方形 / 長方形が選択された状態になっていますのでどこか空白のセルをクリックするか Esc を押して正方形長方形をクリックしてみてください プログラムが起動するはずです
プログラムを作ったときにはうまくゆけばすぐに動きますが ミス ( エラー ) があると動きません たとえばエラーがあり 右の様なエラーメッセージが出ることがあります 同時に VBE が起動します コンパイルエラーというのはエクセルがマクロ (VBA) を実行しようとしたときに知らない命令があるということを表しています どこが問題点なのかは VBE で反転しているところです このようなときにはエラーメッセージの OK を押して 該当の箇所を修正します 修正できたら VBE の実行タブからリセットを選択して もう一度実行して確認してください 右のようなエラーメッセージが出る場合があります この実行時エラーというのはマクロ (VBA) の命令を行ったらエクセルでは扱いきれない状態になったということです たとえば右の例では計算を行っているうちに 0で割り算しなければならなくなったという意味です ここで終了でなくデバッグを押すと VBE が起動し エラーのおこった部分が示されます 右図で見ると MsgBox の右側に1/0とあります これは1/0の結果を画面に表示しなさいという命令ですのでこの部分が明らかに間違っています コンパイルエラーはプログラムの文法上の間違いですので比較的容易に修正できます 実行時エラーはエラーが起こった場所が必ずしも間違っているとは限りません その部分よりかなり前で間違った処理をした関係でエラーが起こることがあります 全体のプログラムの流れを考えなければならないのでエラーの修正は大変です
これまで示してきたプログラムはエクセルのシートに対しては何もしませんでした 次のプログラムを試してみましょう このプログラムを入力し 実行すると先ほどと同じように画面にここは 理工学図書館です と表示されると同時にエクセルのシートの左上のセルに 情報化学へようこそ とあらわれます このプログラムの MsgBox の部分は理解できるはずです では Cells(1,1)= 情報化学へようこそ の部分はどのような意味でしょう? 実行したのでわかると思いますが 情報化学へようこそ と現れているのは一番左上のセルです エクセルではこのセルを A1 と表します 別の表現をすると1 行 1 列目のセルです VBA はアメリカで作られているのでプログラムの命令は英語に関係しています Cells というのはエクセルのセルのことを表わしていて その右のカッコの中はセルの位置を示していると考えられます 実行したら A1 のセルに文字が現れたということはこの命令はエクセルの表の1 行 1 列目のセルに文字を代入しなさいということを意味していることが分かります セルの位置を変えて確かめてください
下記のプログラムを作成 実行し 各命令の意味を説明せよ 答えをメールに解答しなさい ここにプログラムを入力 1.Range("b2:d4") = 10 2.Msgbox 20+6 3.Msgbox 20*6 4.Msgbox 20/6 5.MsgBox 20-6 6.Msgbox 3^3 Msgbox 2^4 7.a = InputBox(" 数を入力してください ") MsgBox a 8.a=InputBox(" 数を入力してください ") a=a+1 MsgBox a