プログラミング入門Ⅰ (No.10)
[1]
Excel VBA を使ってみる
VBA とは Visual Basic for Applications の略で、Microsoft 社が自社の Office 製品(Word, Excel、 PowerPoint、Aceess, Outlook など) で簡単にマクロを作れるように開発したプログラミング言語です。名前 のとおり、Visual Basic (VB)という言語に非常によく似たものになっています。
上に出てきたマクロとは、Word や Excel などのアプリケーションで、複雑な操作や定型的な作業を人間の 手動でなく自動的に実行させる機能のことです。マクロはVBA というプログラミング言語で書かれたプログ ラムです。そのため、VBA で書いたプログラムのことをマクロということもあります。企業や事務所などビ ジネスの場面では、Excel や Access を使う際にマクロ機能を利用することが多々あります。VBA を知ってお くことは、そういう場面でも役に立つでしょう。
VBA は厳密には Office 製品ごとに違うところがありますが、この授業では、ビジネスでも最もよく使われ ている Excel VBA を使うことにします。Excel に組み込みの機能ですから、Excel が入っているパソコンで あれば、どれでも利用することができます。Excel VBA は、本来は Excel の操作を強化するものですから、 Excel の機能と組み合わせて使うものなのですが、この授業の最初のうちは Excel 自身の機能とは別に使って みることにします。ですから、Excel 操作に慣れていない人でも安心しておいてください。
(1-1) VBE を開く
Visual Basic Editor(VBE)とは、Visual Basic でプログラムを作成するための専用ウィンドウです。 ① [スタート]ボタン>「Microsoft Excel 2013」を選ぶ。 ⇒ Excel が開く。
③ Visual Basic Editor のウィンドウが開く。
④ さしあたり Excel は使わないので、Excel のウィンドウは邪魔にならないように最小化しておく。
⑤ Visual Basic Editor の[挿入]メニュー > 「ユーザーフォーム」を選ぶ。
(1-2) VBE のウィンドウ
(1-3) コントロールの貼り付けと変更
プログラムを作る土台 → フォーム(Form) 色々な部品をフォームに貼り付けて使う。 部品 → コントロール(control)ツールボックス
色々なコントロールがツールボックスにある。 ツールボックスのサイズによって、 コントロールの位置が変わるので注意する。コントロールの貼り付け
ツールボックスでクリックしてフォーム上でドラッグするとそのコントロールが貼り付けられる。 貼り付けた後、フォーム上でクリックしてドラッグすると位置を変更できる。 また、ハンドル()をドラッグするとサイズを変更できる。 フォーム上でクリックして、 Delete キーを押すと削除できる。
ツールボックスでダブルクリックすると、アイコンが凹んだままになり、続けて複数個貼り付けでき るようになる。取り消しは、もう一度アイコンをクリックするか、 Esc キーを押すとよい。 ツールボックス フォーム ウィンドウ フォーム プロジェクト エクスプローラ ツールバー メニューバー ラベル (Label) テキストボックス (TextBox) コマンドボタン (CommandButton) イメージ (Image) プロパティ ウィンドウ[2]プログラムを入力する
(2-1) フォームのデザイン
① フォームにコマンドボタン(Command Button)を貼り付ける。(2-2) コードウィンドウを開く
プログラム(コード:code)を入力するためのウィンドウをコードウィンドウと呼ぶ。 ② コマンドボタンをダブルクリックする。→ コードウィンドウが現れ、「Private Sub CommandButton1_Click( )」と「End Sub」という 2 行が自動的に入っている。
「Private Sub CommandButton1_Click( )」とは、「CommandButton1 をクリックしたとき」に 実行させたいプログラム…という意味である。フローチャートの に相当すると思えば よい。 「End Sub」とは、1 つのプログラムの終わりを表し、フローチャートの に相当する と思えばよい。 コード ウィンドウ はじめ おわり
(2-3) プログラムを入力する
③「Private Sub CommandButton1_Click( )」と「End Sub」の間の行に次のプログラムを入力する。
dim a as integer
dim b as integer
dim c as integer
a=20
b=35
c=a+b
msgbox(c)
[入力のしかた]
プログラム部分は、半角のアルファベット・数字・記号で書く。 入力は小文字でよい。 改行は Enter キーを押す。 改行すると自動的に大文字に変更されたり、色が変わる部分がある。 これは VB の予約語(VB で決まっている言葉)である。変わらないときはスペルを間違ってい る可能性がある。 式や書き方がおかしいときは、赤字になって教えてくれる。 式の間など、自動的にスペースが入れられることもある。 キーボードから入力していると、次に入力する言葉の候補がリストに表示されることがある。 そのリストの中から選びたいときは、 マウスでダブルクリックするか、 ↑・↓キーでカーソルを合わせて、 Tab キー(改行なし)か、 Space キー(空白+改行なし)か、 Enter キー(改行あり) を押す。[入力ができた状態]
(2-4) プログラムを実行する
④ プログラムを実行してみよう。
[実行]メニュー>「Sub/ユーザーフォームの実行」を選ぶ。 または、ツールバーの ボタンをクリックしてもよい。
Visual Basic Editor のタイトルバーに[実行中]と表示されると、実行状態である。
⑤ 実行状態になったら、コマンドボタンをクリックする。 どんな結果が出力されますか?
(2-5) プログラムの実行を終了する
⑥ プログラムを終了してみよう。 [実行]メニュー>「リセット」、またはツールバーの ボタンを選ぶ。 ユーザーフォーム右上のボタンをクリックしてもよい。 (Visual Basic ウィンドウ右上のではない!) プログラムを修正するときは、一旦、実行を終了してから行う。 注意
[実行]を指定する際に、ウィン ドウフォーカスがユーザーフォ ームやコードウィンドウにない と、「マクロ実行のダイアログボッ クス」が現れる。それを避けるに は、一度ユーザーフォームをク リックしておいてから[実行]を 指定するとよい。[入力したプログラム]
[このプログラムのフローチャート](2-6) プログラムの説明
変数の宣言
プログラムの先頭部分で、そのプログラムの中で使う変数について、変数名と型を宣言しておく。 変数の名前(変数名)は、次の規則に従って自由に付けることができる。 変数名に使用できるのは、半角英字、半角数字、日本語、アンダースコア( _ )。 名前の先頭は、半角英字または日本語で始まること。 長さは最大半角255 文字分。大文字・小文字に区別はない。 VB で決まっている予約語(dim, as, if, ・・など VB の命令で使う単語)は使えない。 変数やデータには、 型 (type) がある。 《型の種類》 型 名 書き方 サイズ 値の範囲 整数型 Integer 2 バイト -32768~32767 の整数 長整数型 Long 4 バイト -2147483648~2147483647 の整数 実数型 (単精度浮動小数点型) Single 4 バイト -3.402823×1038 ~ -1.401298×10−45(負の数) 0(零) 1.401298×10−45 ~ 3.402823×1038(正の数) 文字列型 String 文字列に よる 文字を入れる この他にも、倍精度浮動小数点型(Double)、通貨型(Currency)、バイト型(Byte)、 ブール型(Boolean)、日付型(Date)、バリアント型(Variant) などがある。 変数の宣言
Dim 変数名 As 型名
(例)Dim a As Integer
→ a という変数を整数型として使う と宣言している (整数型変数 a を使う) はじめa = 20
c 出力
おわりb = 35
c = a + b
代 入
変数に値を代入するには「=」を使う。 「=」の右辺の値を左辺の変数に代入する。 値の代入 変数名 = 値 や 数式
《フローチャート》 《プログラム》S = 0
S
=
0
(0
=
S
は間違い!)N = N+1
N
=
N
+
1
(N+1
=
N
は間違い!) フローチャートもプログラムも、「=」の左右が重要。計算式
計算式を書くとき、掛け算・割り算では計算記号(演算子)に注意する。 《演算子の種類》 計算 数学記号 VB で使う記号 足し算 ++
引き算 --掛け算 ×
*
(星印、アスタリスク) 割り算 ÷ / (スラッシュ)出 力
変数の値を出力するには「MsgBox」関数を使う。 MsgBox はメッセージボックス(message box) の略である。 値の出力
MsgBox
( 変数名 )
《フローチャートとの関係例》MsgBox (W)
MsgBox (A)
MsgBox (B)
2 つの変数 A と B の値を出力したいとき、MsgBox (A,B)
と書くのはダメ。 一度に複数の変数の値を出力する方法は、No.13 の授業で説明する予定です。
出力しないと計算結果は表示されないことに注意!W 出力
A, B 出力
(2-7) 練習問題
問題 1
変数d,e,f を追加し、それぞれ a と b の引き算・掛け算・割り算を計算して、答を出力させてみよう。 まず、手で書いて考える。 Dim a As Integer Dim b As Integer Dim c As Integer Dim d a = 20 b = 35 c = a + b d = MsgBox (c) どんな結果が出力されますか? (チェックポイント) 割り算の答が小数点付きになっていますか?問題2
a,b の値を色々変えて実行してみよう。 [a= b= ]とすると ⇒[ ] [a= b= ]とすると ⇒[ ] [a= b= ]とすると ⇒[ ]発展問題
ユーザーフォームの色やコマンドボタンを変えてみよう。 ユーザーフォームの色は、フォームを選択しておいて、プロパティウィンドウの「BackColor」で設 定できる。BackColor 欄のをクリックし、現れるウィンドウで[パレット]タブを指定する。 コマンドボタンの色は、コマンドボタンを選択しておいて、プロパティウィンドウの「BackColor」 で設定できる。BackColor 欄のをクリックし、現れるウィンドウで[パレット]タブを指定する。[3]プログラムを保存する
せっかく作ったプログラムなので、保存しておこう。
Excel VBA では作成したプログラムは、Excel のファイル(ブック)の中に保存される。 今回保存するファイル名は「
prog1-10
」とすることにする。(3-1) VBA プログラムの保存
① 実際に保存する前に、自分の[ドキュメント]内に「プログラミング入門」用のフォルダーを作っておく。 [ドキュメント]を開き、リボンの[ホーム]タブから「新しいフォルダー」を選ぶ。 フォルダー名を「プログラミング入門」としておく。 ※ 学内の PC では「ドキュメント」と個人用フォルダー「111xxxx (ckgfile\ckc-home) (Z:)」は同じものになっ ている。どちらから開いても同じものが見える。 ② Visual Basic のウィンドウに戻り、プログラムを保存する。 Excel のウィンドウを開く。(Visual Basic Editor のウィンドウからExcel のボタンをクリックするとよい。 リボンの[ファイル]タブ>「名前をつけて保存」を選ぶ。 保存する場所を「ドキュメント(Z:)」の「プログラミング入門」フォルダーにする。 フォルダーの名前を 「プログラミング入門」と する。 「プログラミング入門」フォルダー をダブルクリックして、開く。 「 ド キュメ ン ト」 、 また は「 Z:」 を選 ぶ。 見つからないときは、 「参照」から捜す。
[ファイルの種類]ボックス右端のをクリックして、種類を「Excel マクロ有効ブック」に変更する。 [ファイル名]ボックスに、保存するファイル名(今回は「prog1-10」)を入力して保存する。 ③ 保存できたかどうか確認する。 [ドキュメント]で保存したフォルダを開いてみる。 今保存したExcel のファイルがあることを確認する。
(3-2) VBE の終了と Excel の終了
④ Visual Basic ウィンドウ右上のをクリックする。 または、[ファイル]メニュー>「終了して Microsoft Excel へ戻る」を選ぶ。 ⑤ Excel のウィンドウを元に戻して、Excel ウィンドウ右上のをクリックする。 または、[ファイル]タブ>「閉じる」を選ぶ。※ 忘れずに Excel も終了しておくこと!
今保存した、VBA プログラムが 入った Excel のファイル 「プログラミング入門」フォルダー になっていることを確認する。 [ファイルの種類]が「Excel マクロ有効ブック」になって いることを確認する。 フ ァ イ ル 名 を 入力する。(3-3) ファイルの形式について
マクロ有効ブック
Excel 2013 では、VBA プログラム(マクロ)を含んだ Excel ファイルは、セキュリティのために 特別扱いをすることになっている。これはマクロを利用してコンピュータウィルスが作られること があるので、マクロが入ったファイルをはっきりと区別できるようにするためである。 VBA プログラム(マクロ)を含んだ Excel ファイルはマクロ有効ブックとして保存する。 マクロ有効ブックは、ファイル名の後に「.xlsm」の拡張子が自動的につけられる。 VBA プログラム(マクロ)を含まない通常の Excel ファイルは、ただのブックとして保存 する。通常のブックは、ファイル名の後に「.xlsx」の拡張子がつけられる。 Excel 2003 まではどちらのファイルも、ただのブックとして保存され、ファイル名の後に「.xls」 の拡張子がつけられる。