プログラミング入門 Ⅰ (No.10) Ⅰ10-1 [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 でプログラムを作成するための専用ウィンドウです 1 [ スタート ] ボタン > Microsoft Excel 2013 を選ぶ Excel が開く 2 Excel のリボンの [ 開発 ] タブ > [ コード ] グループ > [Visual Basic] を選ぶ
Ⅰ10-2 3 Visual Basic Editor のウィンドウが開く 4 さしあたり Excel は使わないので Excel のウィンドウは邪魔にならないように最小化しておく 5 Visual Basic Editor の [ 挿入 ] メニュー > ユーザーフォーム を選ぶ 6 フォームウィンドウが現れる
(1-2) VBE のウィンドウ メニューバー ツールバー フォームウィンドウ Ⅰ10-3 プロジェクトエクスプローラ フォーム ツールボックス プロパティウィンドウ (1-3) コントロールの貼り付けと変更 プログラムを作る土台 フォーム (Form) 色々な部品をフォームに貼り付けて使う ラベル (Label) テキストボックス (TextBox) 部品 コントロール (control) ツールボックス コマンドボタン (CommandButton) 色々なコントロールがツールボックスにある ツールボックスのサイズによって コントロールの位置が変わるので注意する コントロールの貼り付け イメージ (Image) ツールボックスでクリックしてフォーム上でドラッグするとそのコントロールが貼り付けられる 貼り付けた後 フォーム上でクリックしてドラッグすると位置を変更できる また ハンドル ( ) をドラッグするとサイズを変更できる フォーム上でクリックして Delete キーを押すと削除できる ツールボックスでダブルクリックすると アイコンが凹んだままになり 続けて複数個貼り付けできるようになる 取り消しは もう一度アイコンをクリックするか Esc キーを押すとよい
Ⅰ10-4 [2] プログラムを入力する (2-1) フォームのデザイン 1 フォームにコマンドボタン (Command Button) を貼り付ける (2-2) コードウィンドウを開く プログラム ( コード :code) を入力するためのウィンドウをコードウィンドウと呼ぶ 2 コマンドボタンをダブルクリックする コードウィンドウが現れ Private Sub CommandButton1_Click( ) と End Sub という 2 行が自動的に入っている コードウィンドウ Private Sub CommandButton1_Click( ) とは CommandButton1 をクリックしたとき に 実行させたいプログラム という意味である フローチャートの はじめ に相当すると思えば よい End Sub とは 1 つのプログラムの終わりを表し フローチャートのおわりに相当する と思えばよい
(2-3) プログラムを入力する Ⅰ10-5 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 キー ( 改行あり ) を押す
Ⅰ10-6 [ 入力ができた状態 ] うまく入力できましたか??
(2-4) プログラムを実行する 4 プログラムを実行してみよう [ 実行 ] メニュー > Sub/ ユーザーフォームの実行 を選ぶ または ツールバーの ボタンをクリックしてもよい Ⅰ10-7 Visual Basic Editor のタイトルバーに [ 実行中 ] と表示されると 実行状態である 5 実行状態になったら コマンドボタンをクリックする 注意 [ 実行 ] を指定する際に ウィンドウフォーカスがユーザーフォームやコードウィンドウにないと マクロ実行のダイアログボックス が現れる それを避けるには 一度ユーザーフォームをクリックしておいてから [ 実行 ] を指定するとよい どんな結果が出力されますか? (2-5) プログラムの実行を終了する 6 プログラムを終了してみよう [ 実行 ] メニュー > リセット またはツールバーの ボタンを選ぶ ユーザーフォーム右上の ボタンをクリックしてもよい (Visual Basic ウィンドウ右上の ではない!) プログラムを修正するときは 一旦 実行を終了してから行う
Ⅰ10-8 [ 入力したプログラム ] [ このプログラムのフローチャート ] はじめ a = 20 b = 35 c = a + b c 出力 おわり (2-6) プログラムの説明 変数の宣言 プログラムの先頭部分で そのプログラムの中で使う変数について 変数名と型を宣言しておく 変数の名前 ( 変数名 ) は 次の規則に従って自由に付けることができる 変数名に使用できるのは 半角英字 半角数字 日本語 アンダースコア ( _ ) 名前の先頭は 半角英字または日本語で始まること 長さは最大半角 255 文字分 大文字 小文字に区別はない VB で決まっている予約語 (dim, as, if, など VB の命令で使う単語 ) は使えない 変数やデータには 型 (type) がある 型の種類 型名 書き方 サイズ 値の範囲 整数型 Integer 2 バイト -32768~32767 の整数 長整数型 Long 4 バイト -2147483648~2147483647 の整数 実数型 ( 単精度浮動小数点型 ) 文字列型 Single String 4 バイト 文字列による -3.402823 10 38 ~ -1.401298 10 45 ( 負の数 ) 0( 零 ) 1.401298 10 45 ~ 3.402823 10 38 ( 正の数 ) 文字を入れる この他にも 倍精度浮動小数点型 (Double) 通貨型 (Currency) バイト型 (Byte) ブール型 (Boolean) 日付型 (Date) バリアント型 (Variant) などがある 変数の宣言 Dim 変数名 As 型名 ( 例 ) Dim a As Integer a という変数を整数型として使うと宣言している ( 整数型変数 a を使う )
Ⅰ10-9 代 入 変数に値を代入するには = を使う = の右辺の値を左辺の変数に代入する 値の代入 変数名 = 値や数式 フローチャート プログラム S = 0 S = 0 (0 = S は間違い!) N = N+1 N = N + 1 (N+1 = N は間違い!) フローチャートもプログラムも = の左右が重要 計算式 計算式を書くとき 掛け算 割り算では計算記号 ( 演算子 ) に注意する 演算子の種類 計算 数学記号 VB で使う記号 足し算 + + 引き算 - - 掛け算 * ( 星印 アスタリスク ) 割り算 / ( スラッシュ ) 出力 変数の値を出力するには MsgBox 関数を使う MsgBox はメッセージボックス (message box) の略である 値の出力 MsgBox ( 変数名 ) フローチャートとの関係例 W 出力 MsgBox (W) A, B 出力 MsgBox (A) MsgBox (B) 2 つの変数 A と B の値を出力したいとき MsgBox (A,B) と書くのはダメ 一度に複数の変数の値を出力する方法は No.13 の授業で説明する予定です 出力しないと計算結果は表示されないことに注意!
Ⅰ10-10 (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 プログラムの保存 Ⅰ10-11 1 実際に保存する前に 自分の [ ドキュメント ] 内に プログラミング入門 用のフォルダーを作っておく [ ドキュメント ] を開き リボンの [ ホーム ] タブから 新しいフォルダー を選ぶ フォルダー名を プログラミング入門 としておく フォルダーの名前を プログラミング入門 とする 学内の PC では ドキュメント と個人用フォルダー 111xxxx (ckgfile\ckc-home) (Z:) は同じものになっている どちらから開いても同じものが見える 2 Visual Basic のウィンドウに戻り プログラムを保存する Excel のウィンドウを開く (Visual Basic Editor のウィンドウから Excel のボタンをクリックするとよい リボンの [ ファイル ] タブ > 名前をつけて保存 を選ぶ 保存する場所を ドキュメント (Z:) の プログラミング入門 フォルダーにする ドキュメント または Z: を選ぶ 見つからないときは 参照 から捜す プログラミング入門 フォルダーをダブルクリックして 開く
Ⅰ10-12 [ ファイルの種類 ] ボックス右端の をクリックして 種類を Excel マクロ有効ブック に変更する [ ファイル名 ] ボックスに 保存するファイル名 ( 今回は prog1-10 ) を入力して保存する プログラミング入門 フォルダーになっていることを確認する ファイル名を入力する [ ファイルの種類 ] が Excel マクロ有効ブック になっていることを確認する 3 保存できたかどうか確認する [ ドキュメント ] で保存したフォルダを開いてみる 今保存した Excel のファイルがあることを確認する 今保存した VBA プログラムが入った Excel のファイル (3-2) VBE の終了と Excel の終了 4 Visual Basic ウィンドウ右上の をクリックする または [ ファイル ] メニュー > 終了して Microsoft Excel へ戻る を選ぶ 5 Excel のウィンドウを元に戻して Excel ウィンドウ右上の をクリックする または [ ファイル ] タブ > 閉じる を選ぶ 忘れずに Excel も終了しておくこと!
(3-3) ファイルの形式について Ⅰ10-13 マクロ有効ブック Excel 2013 では VBA プログラム ( マクロ ) を含んだ Excel ファイルは セキュリティのために特別扱いをすることになっている これはマクロを利用してコンピュータウィルスが作られることがあるので マクロが入ったファイルをはっきりと区別できるようにするためである VBA プログラム ( マクロ ) を含んだ Excel ファイルはマクロ有効ブックとして保存する マクロ有効ブックは ファイル名の後に.xlsm の拡張子が自動的につけられる VBA プログラム ( マクロ ) を含まない通常の Excel ファイルは ただのブックとして保存する 通常のブックは ファイル名の後に.xlsx の拡張子がつけられる Excel 2003 まではどちらのファイルも ただのブックとして保存され ファイル名の後に.xls の拡張子がつけられる 保存形式を間違えた場合 VBA プログラム ( マクロ ) を含んだ Excel ファイルを保存する際に 間違えて [ ファイル ] タブ > 名前をつけて保存 > Excel ブック (.xlsx) を選ぶと [ 保存 ] ボタンをクリック後に警告が表示される [ はい ] ボタンをクリックすると プログラムは削除され通常の Excel ブックとして保存される プログラムを消さずに保存したいときは [ いいえ ] ボタンをクリックして [ 名前をつけて保存 ] ダイアログボックスに戻り [ ファイルの種類 ] を Excel マクロ有効ブック に変更して保存し直す [ ファイルの種類 ] を Excel マクロ有効ブック に変更する