35

はじめにƒ…報処理論~表計算マクロ(VBA)の活用~ 序章 0.1 VBA、マクロとは(VBA≒Macro) VBA(Visual Basic for Application) はプログラム言語の一種でMS

  • Upload
    buicong

  • View
    223

  • Download
    0

Embed Size (px)

Citation preview

Page 1: はじめにƒ…報処理論~表計算マクロ(VBA)の活用~ 序章 0.1 VBA、マクロとは(VBA≒Macro) VBA(Visual Basic for Application) はプログラム言語の一種でMS
Page 2: はじめにƒ…報処理論~表計算マクロ(VBA)の活用~ 序章 0.1 VBA、マクロとは(VBA≒Macro) VBA(Visual Basic for Application) はプログラム言語の一種でMS
Page 3: はじめにƒ…報処理論~表計算マクロ(VBA)の活用~ 序章 0.1 VBA、マクロとは(VBA≒Macro) VBA(Visual Basic for Application) はプログラム言語の一種でMS

はじめに

内容 -表計算ソフトExcelの基礎知識を修得されたかたを対象に、マク

ロ(ExcelVBA)プログラミングを通したExcel活用法について入門レベル

で学習します。その中でGUI(Graphical User Interface)部品(ボタン、チ

ェックボックスなどのアイコン)と組み合わせたExcelの自動処理や動的

処理のためのプログラミンングを行い、簡単な作品作りも行ってもらいま

す。自分ならどのような作品を作ってみたいか、考えてみてください。

使用するソフト ― MS Office Excel 2003および内蔵のVBEエディタと

VBA言語

対象者 ― Excelの基礎的な知識を持ち、基本操作ができる方およびVBプ

ログラミングに興味のある方

授業のスタンス -VBAとはVisual Basic for Applicationのことで、Excelを

はじめとしたオフイスソフト専用に内蔵されたVB(Visua lBasic)言語です。

VB(Visual Basic)に比べ簡単とは言っても、それなりのプログラミング

テクニックを必要とします。またVBAの世界は奥が深く、5時間足らずの

時間でできる内容は限られます。そこでごく基本的な導入部に絞った内容

にしたいと思います。

本資料の使い方

広範囲のテーマを包含していますが、実際に授業の中で行える項目はそ

の一部になります。興味をもたれた方が、この先さらに進んだ学習ができ

るように考えました。本授業が終了した後でも続けてご活用くだされば幸

いです。

Page 4: はじめにƒ…報処理論~表計算マクロ(VBA)の活用~ 序章 0.1 VBA、マクロとは(VBA≒Macro) VBA(Visual Basic for Application) はプログラム言語の一種でMS

本授業で使うサンプルプログラム類について

以下のようなサンプルプログラム等が下記のWebページからダウンロードできる。

http://www.life.hyogo-u.ac.jp/ina/

サンプルプログラム、参考資料、画像一覧

[Excelプログラム]

入出力&計算&セル書きこみ.xls 炭団origin.xls 炭団.xls ルーレットorigin.xls ルーレット.xls スロットorigin.xls スロット.xls きらりorigin.xls きらり.xls 分岐による円面積と円周計算.xls LoopStopButton.xls タイマーWait.xls 合格不合格判定.xls 図形作画移動.xls 画像配置移動.xls 計算VBAorigin.xls 計算VBA.xls

[参考文書]

競馬.doc

[サンプルプログラムで使用する画像]

きらり.jpg

Page 5: はじめにƒ…報処理論~表計算マクロ(VBA)の活用~ 序章 0.1 VBA、マクロとは(VBA≒Macro) VBA(Visual Basic for Application) はプログラム言語の一種でMS

目次 序章 ........................................................................................................................................................................ 1 0.1 VBA、マクロとは(VBA≒Macro)...................................................................................................... 1 0.2 なぜ VBA か? ................................................................................................................................... 1 0.3 私の VBA 作品ちょっとだけ紹介 ......................................................................................................... 1 0.4 授業を進める上で................................................................................................................................. 5 0.5 覚えてほしいこと................................................................................................................................. 5 0.6 Excel VBA できることいろいろ ........................................................................................................ 5 0.7 プログラムの文法面の話 ...................................................................................................................... 5

1.マクロ自動記録機能(ノンプログラムでのマクロ作成)は一応あるが ......................................................... 6 1.1 マクロの自動作成................................................................................................................................. 6 1.2 マクロの実行 ........................................................................................................................................ 6 1.3 Excel マクロは VBA そのもの ............................................................................................................. 6

2.まずは簡単なプログラムを作って動かしてみよう ......................................................................................... 6 2.1 プログラム作成の準備―VB エディタの起動 ....................................................................................... 6 2.2 VBE(Visual Basic Editor)の使い方................................................................................................... 7 2.3 プログラムの書き方.......................................................................................................................... 8 2.4 プログラムの入力と実行、保存 ........................................................................................................... 9 2.4.1 入力 ........................................................................................................................................... 9 2.4.2 実行 ........................................................................................................................................... 9 2.4.3 保存 ........................................................................................................................................... 9 2.4.4 プログラムの基本構造 ............................................................................................................... 9 2.4.5 変数の利用:変数はデータの入れ物であり、入れるデータに対応して型をもつ...................... 9 2.4.6 簡単な計算と表示を行ってみよう ............................................................................................. 9

3. セル/ワークシート/ブックの操作 .............................................................................................................. 10 3.1 セルの操作 ......................................................................................................................................... 10 3.2 ワークシートの操作 ........................................................................................................................... 13 3.3 ブックの操作 ...................................................................................................................................... 13

4. プログラムの流れ制御:分岐と繰り返し .................................................................................................. 14 4.1 分岐処理 ............................................................................................................................................. 14 4.2 繰り返し処理 ...................................................................................................................................... 15 4.2.1 指定回繰り返し:For~Next 文................................................................................................ 15 4.2.2 条件付繰り返し:Do~Loop While 文 ...................................................................................... 16 4.2.3 無限繰り返し処理:Do~Loop 文 ............................................................................................. 16

5. GUI コントロール部品の貼り付けとプログラムでの利用 ........................................................................ 16 6.プログラムのデバッグ方法 ........................................................................................................................... 17

6.1 ウオッチ式の追加編集........................................................................................................................ 17 6.2 ステップイン(1 行ずつの小刻み実行)............................................................................................ 17

7. 発展 ........................................................................................................................................................... 18 7.1 乱数の利用 ......................................................................................................................................... 18 7.1.1 乱数の初期化 ........................................................................................................................... 18 7.1.3 練習:下図のようなスロットゲームを作ってみよう .............................................................. 19

7.2 オリジナルのダイアログボックスを作る ........................................................................................... 19 7.2.1 ユーザフォームの挿入と作成 .................................................................................................. 19

Page 6: はじめにƒ…報処理論~表計算マクロ(VBA)の活用~ 序章 0.1 VBA、マクロとは(VBA≒Macro) VBA(Visual Basic for Application) はプログラム言語の一種でMS

7.2.2 練習:コントロール部品のプログラム利用............................................................................. 20 7.2.3 練習:リストボックス............................................................................................................. 21 7.2.4 練習:スクロールバーで画像サイズの変更............................................................................. 22 7.2.5 練習:成績表入力のフォームを作成 ....................................................................................... 22 7.2.6 OK、キャンセルボタンでユーザフォームを閉じる ................................................................ 22 7.2.7 ブックのオープン/クローズ時の処理.................................................................................... 23 7.2.8 ワークシート新規作成時の処理(シート作成時にシート名を決める).................................. 23 7.2.9 ワークシート関数の利用 ......................................................................................................... 24

8.作品作りに挑戦............................................................................................................................................. 25 8.1 作品の分野、分類............................................................................................................................... 25 8.2 作品作りのためのテクニカルな話...................................................................................................... 25 8.2.1 図形を描く、動かす ................................................................................................................ 25 8.2.2 画像を置く、動かす ................................................................................................................ 25 8.2.3 タイマーで待ち時間間隔を制御する ....................................................................................... 26

8.3 魔法の命令 DoEvents ........................................................................................................................ 26 付録...................................................................................................................................................................... 27

A マクロ(VBA プログラム)の簡易実行(メニュー、ツールバー、図形ボタンへの割り当て) ............... 27 A.1 マクロの登録(1)メニューへの割り当て ......................................................................................... 27 A.2 マクロの登録(2)ツールバーのボタンへの割り当て ....................................................................... 27 A.3 ボタンの絵柄の変更および編集........................................................................................................... 27 A.4 マクロを図形ボタンに割り当てる ....................................................................................................... 28

B. 数値から文字列に変換する関数(Cstr) .................................................................................................. 28 C. Sub プロシージャと Function プロシージャ ............................................................................................ 29

Page 7: はじめにƒ…報処理論~表計算マクロ(VBA)の活用~ 序章 0.1 VBA、マクロとは(VBA≒Macro) VBA(Visual Basic for Application) はプログラム言語の一種でMS

情報処理論~表計算マクロ(VBA)の活用~

序章 0.1 VBA、マクロとは(VBA≒Macro)

VBA(Visual Basic for Application)はプログラム言語の一種で MS Office ソフト専用の内蔵言語で

ある。マクロは

一連の処理をまとめてひとつの手続きで実行できる形にした命令である。

マクロの中身は VBA 言語で記述される。

0.2 なぜ VBAか?

VBA は動的な処理、自動処理、無人処理、込み入った計算処理が得意である。

まずイメージをつかんでいただくために私の作ったサンプルを使って VBA の動き方を示す。

0.3 私のVBA作品ちょっとだけ紹介

競馬予想プログラム

スロットゲーム

炭団積み

“純情きらり”の世界

2006.8.24-25 兵庫教育大学 伊奈諭

1

Page 8: はじめにƒ…報処理論~表計算マクロ(VBA)の活用~ 序章 0.1 VBA、マクロとは(VBA≒Macro) VBA(Visual Basic for Application) はプログラム言語の一種でMS

情報処理論~表計算マクロ(VBA)の活用~

• 競馬予想プログラム

• スロットゲーム

2006.8.24-25 兵庫教育大学 伊奈諭

2

Page 9: はじめにƒ…報処理論~表計算マクロ(VBA)の活用~ 序章 0.1 VBA、マクロとは(VBA≒Macro) VBA(Visual Basic for Application) はプログラム言語の一種でMS

情報処理論~表計算マクロ(VBA)の活用~

炭団積み

• “純情きらり”の世界

2006.8.24-25 兵庫教育大学 伊奈諭

3

Page 10: はじめにƒ…報処理論~表計算マクロ(VBA)の活用~ 序章 0.1 VBA、マクロとは(VBA≒Macro) VBA(Visual Basic for Application) はプログラム言語の一種でMS

情報処理論~表計算マクロ(VBA)の活用~

2006.8.24-25 兵庫教育大学 伊奈諭

4

Page 11: はじめにƒ…報処理論~表計算マクロ(VBA)の活用~ 序章 0.1 VBA、マクロとは(VBA≒Macro) VBA(Visual Basic for Application) はプログラム言語の一種でMS

情報処理論~表計算マクロ(VBA)の活用~

0.4 授業を進める上で VBA の奥は非常に深いが、総花的網羅的内容にはしない。そこで枝葉末節的なもの(画面の飾り付けや色づ

けなど)は省き、少数の重要な命令文のみで動くものを対象にする。 プログラミングの雰囲気を知り、興味と自信を持ってもらい、今後自力でやっていってもらう足がかり、き

っかけ作りを行う。 プログラムはまず真似をすることから。 一字一句をおろそかにせず正確に入力すること、正確さ第一! コンピュータは一切融通が利かないことを

肝に銘じて。 本冊子で紹介する参考例題や事例の教材プログラムはWeb教材ページ(http://www.life.hyogo-u.ac.jp/ina/)

からダウンロードして適宜使うことができる。

0.5 覚えてほしいこと VBA の操作と実行方法、命令文の書き方(操作には以下で述べる VBE を使う) プログラムは空白も含めてすべて半角英数で記述する。半角全角の区別は厳格に行うこと。ただしプログラ

ム名や変数名、コメントなどは例外的に日本語が使える。 VBE の各ウインドウの用途(プロジェクトウインドウ、プロパティウインドウ、コードウインドウ、ウオッ

チウインドウ) コメント行(’)の活用 標準モジュール(VBE で 初に挿入追加する)とシート(sheet)直属のモジュール(プログラム)の区別

0.6 Excel VBAできることいろいろ まずは計算処理と入出力処理 セルの動的自動操作 (セル指定の 2 通りの方法 Cells と Range) セルデータのプログラムからの読み書き(キー入力不要)

初のサンプル(入出力&計算&セル書き込み.xls) 図形や画像の描画と操作 文字列や数字の連結記号 &

0.7 プログラムの文法面の話 セルの表現方法 四則演算と代入 変数と定数 処理の流れ制御:順次処理、分岐処理と繰り返し処理 メッセージの入力と出力、Input ボックスと MsgBox(メッセージボックス) ボタン、基本図形など GUI コントロール

直接 Excel 画面に貼り付ける方法 新たなユーザフォーム(ダイアログボックス)を用意する方法

2006.8.24-25 兵庫教育大学 伊奈諭

5

Page 12: はじめにƒ…報処理論~表計算マクロ(VBA)の活用~ 序章 0.1 VBA、マクロとは(VBA≒Macro) VBA(Visual Basic for Application) はプログラム言語の一種でMS

情報処理論~表計算マクロ(VBA)の活用~

1.マクロ自動記録機能(ノンプログラムでのマクロ作成)は一応あるが 本機能はあまり使うことはお薦めしない。こんな機能もあるということで紹介だけしておく。

1.1 マクロの自動作成 マクロ自動記録(作成)の一例として 文字色を赤に、太字・斜体に設定するマクロ まず Excel 起動、任意のセルに適当な文字列を入力しておく

[ツール]-[マクロ]-[新しいマクロの記録]を選択 [マクロの記録]ダイアログボックスでマクロ名(たとえば RedBoldItalic)を付ける 文字色を赤に、太字・斜体のツールボックスをクリック [ツール]-[マクロ]-[記録終了]を選択

1.2 マクロの実行 文字の入った適当なセルを選択したまま [ツール]-[マクロ]-[マクロ]を選択 マクロ一覧からマクロ名(RedBoldItalic)を選択して[実行]をクリック

1.3 ExcelマクロはVBAそのもの VBE を開いてソースコードを覗いてみよう (ALT+F11 キー)。 プロジェクトウインドウの Module1 アイコンをダブルクリックすると、以下のプログラムが表示される。

マクロの VBA ソース(中身)

Sub RedBoldItalic() ' ' RedBoldItalic Macro ' マクロ記録日 : 2006/09/09 ユーザー名 : xxx ' ' Selection.Font.ColorIndex = 3 Selection.Font.Bold = True Selection.Font.Italic = True End Sub

2.まずは簡単なプログラムを作って動かしてみよう 2.1 プログラム作成の準備―VBエディタの起動 VBA でプログラムを作るには ①Excel を起動する。 ②ファイルメニューから[新規作成]を選択する。 VB エディタ(以下 VBE)を起動して使う。そこで ③[ツール]-[マクロ]-[Visual Basic Editor]メニューを選択するか

2006.8.24-25 兵庫教育大学 伊奈諭

6

Page 13: はじめにƒ…報処理論~表計算マクロ(VBA)の活用~ 序章 0.1 VBA、マクロとは(VBA≒Macro) VBA(Visual Basic for Application) はプログラム言語の一種でMS

情報処理論~表計算マクロ(VBA)の活用~

Visual Basic ツールバーの 「Visual Basic Editor」ボタンを左クリックする。

起動された VBE の画面を以下に示す。

コードウインドウ プログラムを書き込

む領域

2.2 VBE(Visual Basic Editor)の使い方 [挿入]-[標準モジュール]メニューを選んで、ブックで共通に使うプログラムを入れる入れ物を作っておく。 各シート(Sheet1~Sheet3)自体にもシート名をダブルクリックすることで対応するコードウインドウを開きプ

ログラムを入れられるが、各シート独自のプログラムとなる。後でシート上にボタンなどのアイコンを直接貼り

2006.8.24-25 兵庫教育大学 伊奈諭

7

Page 14: はじめにƒ…報処理論~表計算マクロ(VBA)の活用~ 序章 0.1 VBA、マクロとは(VBA≒Macro) VBA(Visual Basic for Application) はプログラム言語の一種でMS

情報処理論~表計算マクロ(VBA)の活用~

付けた場合には、各シート独自のプログラムから操作する必要のあることが分かるが、今はすべてブックで共通

の標準モジュールを使うことにする。

標準モジュールが追

加された状態

2.3 プログラムの書き方 プログラムの実行処理の単位(ひとまとまり)をサブルーチン(subroutine)と呼び、必ず以下のように記述する。

サブルーチンはいくつ記入してもよい。[挿入]-[プロシージャ]メニューで以下の Sub と EndSub が自動的に

入るが、自分でキーインしてもよい。

Sub プログラム名( )

プログラム本体記述 End Sub

サブルーチンから他のサブルーチンを呼び出して使うこともできる。a サブルーチンから b サブルーチンを呼び

出す呼び出し方は、以下のように記述する。 Sub a() b ’または call b( ) End Sub ここでコメント(’)記号については休憩室を参照。

2006.8.24-25 兵庫教育大学 伊奈諭

8

Page 15: はじめにƒ…報処理論~表計算マクロ(VBA)の活用~ 序章 0.1 VBA、マクロとは(VBA≒Macro) VBA(Visual Basic for Application) はプログラム言語の一種でMS

情報処理論~表計算マクロ(VBA)の活用~

2.4 プログラムの入力と実行、保存

2.4.1 入力 標準モジュールのコードウインドウにプログラムを入力する。たとえば以下のように。 Sub Test() Cells(3,2).Value=100 End Sub

2.4.2 実行 実行するには VBE の[実行]-[Sub/ユーザフォームの実行]メニューを選択後、プログラム名を選択して OKボタンを押す。または Excel 画面か VBE 画面の Visual Basic ツールバーの下記ボタンをクリックしても同様に

実行できる。

2.4.3 保存 VBA プログラムを保存するのは、本体の Excel ブックに戻って「名前を付けて保存」あるいは「上書き保存」

で行う。

実行ボタン

2.4.4 プログラムの基本構造 プログラムは基本的には、記述にしたがって上から下にひとつずつ順番に実行されていくが、それだけではたい

した仕事はできない。そこで新たに 2 種類の流れが用意されている。分岐処理と繰り返し処理である。分岐処理

はある地点で、右に行くか左に行くか、をそのときの条件で選べるようにする処理である。繰り返し処理は、指

定した回数分あるいは、ある条件が満足されている間中、指定した範囲の命令文を繰り返し実行する処理である。 すなわちプログラムは、①順次処理、②分岐処理、③繰り返し処理の三つの基本処理のみで出来上がっている。

2.4.5 変数の利用:変数はデータの入れ物であり、入れるデータに対応して型をもつ プログラムに慣れてくると変数というものを利用するようになる。変数とは、データ(数値や文字など)を入れ

ておく入れ物のことであり、名前を適宜付けて好きなだけ使用できる。データの種類によって型を指定する。 変数は、データ型を気にせずに宣言なしで必要になったときに名前を付けて自由に使える万能型(variant 型)

と、使用前に名前を付けて宣言が必要な型がある。整数としての Integer 型、Long 型、実数としての Single 型、

Double 型、文字としての String 型などである。たとえば整数型の変数 a を使う場合、宣言は以下のように Dim文で行う。 Dim a As Integer

2.4.6 簡単な計算と表示を行ってみよう 四則演算は、+(和),-(差),*(積),/(商)といった演算子を使う。MsgBox 文に関しては休憩室を参照。 Sub 円面積 1( ) MsgBox 3.14*10*10 End Sub Sub 円面積 2( ) r=10 s=r*r*3.14

2006.8.24-25 兵庫教育大学 伊奈諭

9

Page 16: はじめにƒ…報処理論~表計算マクロ(VBA)の活用~ 序章 0.1 VBA、マクロとは(VBA≒Macro) VBA(Visual Basic for Application) はプログラム言語の一種でMS

情報処理論~表計算マクロ(VBA)の活用~

MsgBox s End Sub

3. セル/ワークシート/ブックの操作 3.1 セルの操作 • 単一セル 操作対象セルは Cells(行,列)で表す。.value(値プロパティ:属性のこと)を続けて記述することでそのセルの値

を表す。ここで「.」は日本語の「の」で読み替えると解りやすい。Cells(m.n).value であれば、「m 行 n 列セル

の値(value)」と訳す。たとえば 3 行 4 列目のセルの値を 123 にするには、以下のプログラムを標準モジュール

のコードウインドウに入力する。 Sub Test() Cells(3,4).Value=123 End Sub • セル範囲 セルの範囲を表すには Range(”A1 形式の範囲”)を使う。 たとえば A3:C5 のセル範囲の値をすべて文字 A にするには、以下のプログラムを標準モジュールのコードウイ

ンドウに入力して実行する。 Sub Test() Range("A3:C5").Value="A" ’Range(Cells(3,5),Cells(4,7)).Value="A" これはコメント行である End Sub 参考例題:入出力&計算&セル書き込み.xls

コメント

プログラムの行内でアポストロフィ(’)を付けると、それ以降の文字はコメントに

なって、実行には無関係の部分になる。上記のプログラムではコメント行を有効に使

って実行させたい命令文を適宜切り替えている。

画面に文字を表示する簡単な方法はメッセージボックス(MsgBox)命令文を使

うことである。 (例) Sub メッセージボックス()

MsgBox ("年齢は" & 25 & "才です") End Sub

文字データ データが文字や文字列であることを表すためにはダブルコーテーション(”)記号で ”あいうえお″のようにサンドイッチにする。これは変数名と区別するためである。

文字列の接着剤(連結記号) & 文字列同士あるいは数字と文字列を連結するには & を使う。 x=“年齢は” & 25 & “才です。”

2006.8.24-25 兵庫教育大学 伊奈諭

10

Page 17: はじめにƒ…報処理論~表計算マクロ(VBA)の活用~ 序章 0.1 VBA、マクロとは(VBA≒Macro) VBA(Visual Basic for Application) はプログラム言語の一種でMS

情報処理論~表計算マクロ(VBA)の活用~

• 数式の代入 日時を求める関数 now( )を代入した場合 Sub Test()

Cells(1,2).Formula=”=NOW()” Cells(2,2).FormulaR1C1=”=YEAR(R1C2)”

End Sub • 文字フォント、サイズ Sub Test() Cells(1,1).Value="ABC" Cells(1,2).Value="あいう" Cells(1,1).Font.Name="MS ゴシック" Cells(1,2).Font.Name="MS 明朝" Cells(1,1).Font.Size=20 End Sub • 太字、斜体、下線付き Sub Test() Cells(1,1).Value="太字" Cells(1,1).Font.Bold=True Cells(1,2).Value="斜体" Cells(1,2).Font.Italic=True Cells(1,3).Value="下線" Cells(1,3).Font.Underline=True End Sub • 文字色 Sub Test() Cells(1,1).Value="赤" Cells(1,1).Font.Color=RGB(255,0,0) Cells(1,2).Value="青" Cells(1,2).Font.ColorIndex=5 End Sub • 背景色 Sub Test() Cells(1,1).Value="123" Cells(1,1).Font.Color=RGB(0,0,0) Cells(1,1).Interior.Color=RGB(192,192,192) End Sub • 網掛け、網色 Sub Test() Range("A1:B3").Interior.Pattern=xlPatternLightUp Range("A1:B3").Interior.PatternColor=RGB(255,0,0) Range("C1:D3").Interior.Pattern=xlCrissCross Range("C1:D3").Interior.PatternColor=RGB(0,255,255) End Sub • 罫線、太さ、色 Sub Test() Range("B2:C4").Borders.LineStyle=xlContinuous

2006.8.24-25 兵庫教育大学 伊奈諭

11

Page 18: はじめにƒ…報処理論~表計算マクロ(VBA)の活用~ 序章 0.1 VBA、マクロとは(VBA≒Macro) VBA(Visual Basic for Application) はプログラム言語の一種でMS

情報処理論~表計算マクロ(VBA)の活用~

Range("B2:C4").Borders.Color=RGB(0,0,255) Range("B2:C4").Borders.Weight=xlThick Range("B2:C4").Borders(xlInsideHorizontal).LineStyle=xlDot Range("B2:C4").Borders(xlInsideHorizontal).Color=RGB(0,255,255) Range("B2:C4").Borders(xlInsideHorizontal).Weight=xlThin Range("B2:C4").Borders(xlInsideVertical).LineStyle=xlDot Range("B2:C4").Borders(xlInsideVertical).Color=RGB(0,255,255) Range("B2:C4").Borders(xlInsideVertical).Weight=xlThin End Sub • セル表示形式、文字配置、行/列幅 Sub Test()

Cells(1,1).NumberFormatLocal="¥#,###" Cells(1,2).Value=#1/1/2000# Cells(1,2).NumberFormatLocal="yyyy 年 mm 月 dd 日"

Cells(1,1).HorizontalAlignment=xlHAlignCenter Cells(1,1).VerticalAlignment=xlVAlignBottom

Rows(1).RowHeight=20 '単位:ポイント Columns(1).ColumnWidth=12 '単位:文字

End Sub • セルまたはセル範囲の選択(アクティブセル化) Sub test() Range("A1:C3").Select または Cells(3,2).Select End Sub • 選択セル範囲の操作 Sub Main() Selection.Borders.Weight=xlThin Selection.Value="このセルです" End Sub • セルポインタ存在セル Sub Test()

ActiveCell.Borders.weight=xlThick ActiveCell.HorizontalAlignment=xlHAlignCenter

End Sub • セルポインタ位置の取得(通知) Sub Test()

MsgBox(”行は”& ActiveCell.Row) MsgBox(”列は”& ActiveCell.Column)

End Sub • 選択セル、範囲の取得 Selection.Row+Selection.Rows.Count-1 Selection.Column+Selection.Columns.Count-1 • セル範囲アドレスの取得 Sub Test() MsgBox Selection.Address & ”が選択されています”

2006.8.24-25 兵庫教育大学 伊奈諭

12

Page 19: はじめにƒ…報処理論~表計算マクロ(VBA)の活用~ 序章 0.1 VBA、マクロとは(VBA≒Macro) VBA(Visual Basic for Application) はプログラム言語の一種でMS

情報処理論~表計算マクロ(VBA)の活用~

End Sub • セル範囲のカットアンドペースト Range("A1:C2").Copy Destination:=Range("E2") Range("A1:C2").Cut Destination:=Range("E2") • セル内容の消去 Range("A1:B3").Clear Range("A1:B3").ClearContents Range("A1:B3").ClearFormats • セル範囲の削除 行削除 Rows(<行番号>).Delete 列削除 Columns(<列番号>).Delete セル削除+詰める Cells(2,3).Delete Shift:=xlShiftToLeft

3.2 ワークシートの操作 • ワークシート 指定 Worksheets("Sheet2").Cells(1,1).Value="Sheet2" • アクティブワークシートの操作 ActiveSheet.Range("A1:B3").Value="ActiveSheet" Dim WK As WorkSheet Set WK=Worksheets("Sheet1") WK.Cells(1,1).Value=100 • ワークシートの切り替え Worksheets("Sheet3").Activate • ワークシートの追加 Worksheets.Add Before:=Worksheets("Sheet1") Worksheets.Add After:=Worksheets("Sheet3") • ワークシートの名前変更 Worksheets("Sheet1").Name="2000 年度" • ワークシートの印刷 ActiveSheet.PrintOut

3.3 ブックの操作 • ブックの指定 Workbooks("smplbook.xls").ActiveSheet.Cells(1,1).Value=100 Dim WB As WorkBook Set WB=WorkBooks("smplbook.xls") WB.Worksheets("Sheet1").Cells(1,1).Value=100 • アクティブブックの参照 ActiveWorkbook.Name • マクロが含まれているブックの操作 ThisWorkbook.Sheets("Sheet1").Cells(1,1).Value=100 • ブックの切り替え

2006.8.24-25 兵庫教育大学 伊奈諭

13

Page 20: はじめにƒ…報処理論~表計算マクロ(VBA)の活用~ 序章 0.1 VBA、マクロとは(VBA≒Macro) VBA(Visual Basic for Application) はプログラム言語の一種でMS

情報処理論~表計算マクロ(VBA)の活用~

Workbooks("smplbook.xls").Activate • ブックの新規作成 Workbooks.Add • ブックファイルのオープン Workbooks.Open Filename:="c:¥sample¥smplbook.xls" • ブックの保存 ThisWorkbooks.SaveAs Filename:="c:¥sample¥smplbook.xls" • ブックファイルのクローズ ThisWorkbooks.Close SaveChanges:=True,Filename:="c:¥sample¥close.xls"

4. プログラムの流れ制御:分岐と繰り返し 4.1 分岐処理 基本的に上から下に一本で順に流れるプログラムを、ある地点で二つ以上の流れに分けることを分岐処理と呼ぶ。 分岐処理は、下記のように If~Then~Else~End If 文で行う。以下は一般に N 個の分岐を行う例である。 If 条件文 1 Then プログラム1 Elseif 条件文 2 Then プログラム2 Elseif 条件文 3 Then プログラム3

………………….. Else プログラム N End If プログラム例 A1 セルの値を調べて 60 以下のとき、B2 セルに不合格と表示、60 を超えるとき合格と表示する

プログラムを作る。 Sub 比較() If Cells(1,1).value<=60 Then Cells(1,2).value=”不合格” Else Cells(1,2).value=”合格” End If End Sub 参考例題:分岐による円面積と円周計算.xls サンプル:計算 VBA.xls C3 セルの演算子記号の種類を調べて四則演算の別を分岐で処理する例になっている。参考までに if 関数を使用

した場合と対比させて記述した。この例ではどちらも同じ結果が得られる。

2006.8.24-25 兵庫教育大学 伊奈諭

14

Page 21: はじめにƒ…報処理論~表計算マクロ(VBA)の活用~ 序章 0.1 VBA、マクロとは(VBA≒Macro) VBA(Visual Basic for Application) はプログラム言語の一種でMS

情報処理論~表計算マクロ(VBA)の活用~

セルを非表示にするには(上記参考例題では C4:C7 セルの+,-,×,÷が非表示) 選択セル範囲を右クリックし、[セルの書式設定]メニューをクリックすると、以下の

ダイアログボックスが出る。ここで表示形式タグの「分類」欄で「ユーザ定義」を選

び、「種類」欄に半角セミコロンを三つ続けて(;;;)入力して OK ボタンを押す。

4.2 繰り返し処理 基本的に上から下に一本で順に流れるプログラムを、ある地点で下から上の地点に流れを戻して複数回繰り返し

て実行することを繰り返し処理(ループ)と呼ぶ。 繰り返し処理には①指定回数繰り返し(For~Next 文と呼ぶ)、②条件付き繰り返し(Do~Loop While 文と呼ぶ)

および③無限繰り返し(Do~Loop 文と呼ぶ)が使用できる。

4.2.1 指定回繰り返し:For~Next文 For i=1 to 10 プログラム Next i これは 10 回繰り返す場合にあたり、ここで i は中途繰り返し回数をカウントするための補助的変数で名前は何

でもよい。

2006.8.24-25 兵庫教育大学 伊奈諭

15

Page 22: はじめにƒ…報処理論~表計算マクロ(VBA)の活用~ 序章 0.1 VBA、マクロとは(VBA≒Macro) VBA(Visual Basic for Application) はプログラム言語の一種でMS

情報処理論~表計算マクロ(VBA)の活用~

例:1 から 100 までの合計を計算する Sub 合計( )

For i=1 to 100 sum=sum+i Next i Cells(1,1).value=sum

End Sub

4.2.2 条件付繰り返し:Do~Loop While文 Do プログラム Loop While 条件文 例:1 から 100 までの合計を計算する Sub 合計( ) i=1

Do sum=sum+i i=i+1 Loop While i<101 Cells(1,1).value=sum

End Sub

4.2.3 無限繰り返し処理:Do~Loop文 Do プログラム Loop 無限ループしたプログラムを停めたいときはエスケープ(ESC)キーを押す。 参考サンプル:炭団.xls 指定した繰り返し回数だけ指定した形で炭団を積み上げるプログラムである。

5. GUIコントロール部品の貼り付けとプログラムでの利用 ボタンやチェックボックスなどをコントロール部品と呼ぶ。これらの部品を Excel シートに貼り付けてプログラ

ムで利用する方法について学習する。まず Visual Basic ツールバーからピッケルのアイコン(コントロールツー

ルボックス)をクリックしてコントロールツールボックスを開く。そこにはボタンをはじめとした各種の GUI部品が羅列されている。Excel シート上に部品を配置するには、希望の部品アイコンを左クリックして、+形に

なったマウスカーソルをシート上の任意の地点からドラッグすることで領域選択する。とにかくいろいろな部品

をシート上に配置してみよう。後で移動、サイズ変更、削除等ができるので 初のレイアウトは心配しないでよ

い。またボタンを押したときの動作は、デザインモードでのボタンを左ダブルクリックすると自動的に開かれる

sub プロシージャ(CommandButton1_Click())の中にプログラムを記述する。

2006.8.24-25 兵庫教育大学 伊奈諭

16

Page 23: はじめにƒ…報処理論~表計算マクロ(VBA)の活用~ 序章 0.1 VBA、マクロとは(VBA≒Macro) VBA(Visual Basic for Application) はプログラム言語の一種でMS

情報処理論~表計算マクロ(VBA)の活用~

これがボタン部品

これがデザインモード切替ボタン

これがチェックボックス部品

• 練習問題 以下のような三角形面積計算プログラムを完成してください。 底辺と高さを与えてボタンを押すと面積欄に答えを表示する。

(発展練習)チェックボックスも加えて、チェックが有の場合に三角形面積、無の場合に四角形面積を答えるよ

うにする。

6.プログラムのデバッグ方法 プログラムが予定通り動かない場合、どこが悪いのかを見つけ出して修正することをプログラムデバッグという。

VBE ではデバッグのために便利な機能がいくつか備わっている。プログラムを一行ずつ分けて実行(ステップイ

ンと呼ぶ)し、その中で、注目したい式(変数)の値の変化を 1 ステップごとに監視(ウオッチ)できる機能が

ある。手順は以下のとおりである。

6.1 ウオッチ式の追加編集 注目したい式(変数)のある行にカーソルを位置づけて、クイックウオッチアイコン(メガネのアイコン)をク

リックすると、ウオッチウインドウにその式が追加される。監視の必要な式に対して、この操作を繰り返す。

6.2 ステップイン(1行ずつの小刻み実行) ステップインアイコンを押すたびに一行ずつ処理が進み(処理中の行は黄色で示される)、その時点でのウオッ

チ式の値がウオッチウインドウに表示される。このウオッチ式の値を追跡することによってプログラム動作のロ

ジック誤りの箇所を発見しやすくなる。

2006.8.24-25 兵庫教育大学 伊奈諭

17

Page 24: はじめにƒ…報処理論~表計算マクロ(VBA)の活用~ 序章 0.1 VBA、マクロとは(VBA≒Macro) VBA(Visual Basic for Application) はプログラム言語の一種でMS

情報処理論~表計算マクロ(VBA)の活用~

ウオッチ式とその値

クイックウオッチアイコン

ステップインアイコン

7. 発展 7.1 乱数の利用 0.0 から 1.0 未満の実習乱数を発生させるには Rnd(ランダム)関数を使う。たとえばサイコロの 1 から 6 まで

の目(整数)を得たい場合は Int 関数(実数の小数以下を切り捨てて整数に変換する関数)と組み合わせて Int(Rnd*6)+1 として計算できる。 二つのサイコロの目を乱数でシミュレーションして A2 セルと B2 セルに表示するプログラムは以下のようにな

る。 Sub サイコロ乱数取得() Range("A2").value=Int(6*Rnd)+1 Range("B2").value=Int(6*Rnd)+1 End Sub

7.1.1 乱数の初期化 Rnd だけで乱数を発生させると、毎回同じ乱数系列となってしまう。乱数を発生させる初期値を毎回変更して異

なる系列の乱数を発生させたい場合には、Rnd 関数を呼び出す前に一度だけ乱数初期化のための関数

(randomize)を呼び出す必要がある。

2006.8.24-25 兵庫教育大学 伊奈諭

18

Page 25: はじめにƒ…報処理論~表計算マクロ(VBA)の活用~ 序章 0.1 VBA、マクロとは(VBA≒Macro) VBA(Visual Basic for Application) はプログラム言語の一種でMS

情報処理論~表計算マクロ(VBA)の活用~

Sub サイコロ乱数取得( ) Randomize

Range("A2").value=Int(6*Rnd)+1 Range("B2").value=Int(6*Rnd)+1 Range("C2").value=Int(6*Rnd)+1 End Sub

7.1.3 練習:下図のようなスロットゲームを作ってみよう

7.2 オリジナルのダイアログボックスを作る

7.2.1 ユーザフォームの挿入と作成 ①VBE 画面で[挿入]-[ユーザフォーム]を選択すると下図左のようにユーザフォーム画面とコントロールツール

ボックスが表示される。 ②このフォーム上に部品を適宜配置してダイアログボックスを作ることができる。下図右ではラベル、テキスト

ボックス、ボタンを配置したところである。また部品(コントロール)に表示する文字などの属性は、画面左下

の「プロパティウインドウ」で設定できる。

2006.8.24-25 兵庫教育大学 伊奈諭

19

Page 26: はじめにƒ…報処理論~表計算マクロ(VBA)の活用~ 序章 0.1 VBA、マクロとは(VBA≒Macro) VBA(Visual Basic for Application) はプログラム言語の一種でMS

情報処理論~表計算マクロ(VBA)の活用~

7.2.2 練習:コントロール部品のプログラム利用 下図のようなダイアログボックス(ユーザフォーム)を作り結果を画面表示するプログラムを作ってみよう。 1. ユーザフォームのオブジェクト名と表示文字(キャプション)の変更 forMain,練習問題 2. ボタンの配置 ボタン名:cmdFinished ボタンと endbutton ボタン、キャプション:入力完了,終了 3. 文字の入力(ラベルとテキストボックス) Label:“数字を入力してください”,TextBox:tbValue 4. 二者択一(チェックボックスのオブジェクト名とキャプション) ChkPrint,印刷 5. 複数の選択肢(フレーム、オプションボタン)フレームキャプション:カラー、オブジェクト名:OptAka,

OptMidori,OptAo 6. 選択入力(リストボックス/コンボボックス) 各ボックス名:lstCity / CmbCity ユーザフォームへの入力値をプログラム内で取得するには 7. テキストボックスからの取得

Text プロパティ tbValue.Text 8. チェックボックス/オプションボタンのからの取得

Value プロパティ ChkPrint.Value,OptAka.Value,OptMidori.Value,OptAo.Value 9. リストボックスからの値取得 lstCity.Value

また ListIndex プロパティからはリストの先頭を 0 番としたときの位置番号を取得できる

Sub cmdFinished_Click() Dim str As String str =

forMain

tbValue.TOptAka.Value Then

OptMidori.Value Then

OptAo.Value Then

ChkPrint.V

lstCity.CmbCity.V

ext If

str = str & "赤" ElseIf

str = str & "緑" ElseIf

str = str & "青" End If If alue Then str = str & "プリントON" Else str = str & "プリントNO" End If str = str & Value str = str & alue MsgBox str End Sub Sub endbutton_Click()

Unload forMain End Sub

cmd

リストボックス、コンボボックスへ

の項目引用するために、それぞれ

Sheet1!A1:A3とする Rowsourceプロパティを

endbutton

Finished

lstCit

CmbCity

ChkPrint tbValue

OptAka

OptAo

2006.8.24-25 兵庫教育大学 伊奈諭

20

Page 27: はじめにƒ…報処理論~表計算マクロ(VBA)の活用~ 序章 0.1 VBA、マクロとは(VBA≒Macro) VBA(Visual Basic for Application) はプログラム言語の一種でMS

情報処理論~表計算マクロ(VBA)の活用~

7.2.3 練習:リストボックス

Sub UserForm_Initialize() ListBox1.AddItem "焼き鳥" ListBox1.AddItem "刺身" ListBox1.AddItem "生姜焼き" ListBox1.AddItem "ミックスフライ" ListBox1.AddItem "肉じゃが" ListBox1.AddItem "おひたし" ListBox1.AddItem "ご飯" ListBox1.AddItem "味噌汁" Cells(1, 1).Value = "焼き鳥" Cells(2, 1).Value = "刺身" Cells(3, 1).Value = "生姜焼き" Cells(4, 1).Value = "ミックスフライ" Cells(5, 1).Value = "肉じゃが" Cells(6, 1).Value = "おひたし" Cells(7, 1).Value = "ご飯" Cells(8, 1).Value = "味噌汁" End Sub Sub CommandButton1_Click() Dim i As Integer For i = 1 To 8 If ListBox1.Selected(i - 1) = True

Then Cells(i, "C").Value = 1 Else Cells(i, "C").Value = 0 End If Next i End Sub

ListBoxのMultiSelectプロパティ

をfmMultiSelectMultiとする

ListBox1

CommandButton1

2006.8.24-25 兵庫教育大学 伊奈諭

21

Page 28: はじめにƒ…報処理論~表計算マクロ(VBA)の活用~ 序章 0.1 VBA、マクロとは(VBA≒Macro) VBA(Visual Basic for Application) はプログラム言語の一種でMS

情報処理論~表計算マクロ(VBA)の活用~

7.2.4 練習:スクロールバーで画像サイズの変更

Sub ScrollBar1_Change()

Image1.Width = ScrollBar1.Value Image1.Height = ScrollBar1.Value * 240 / 360

以下の二つのコントロール部品を配置し、イメージ部品の

Picture プロパティには適切な画像を割り当てておく。 イメージオブジェクト名:Image1

スクロールバーオブジェクト:ScrollBar1 Image1

ScrollBar1

End Sub

7.2.5 練習:成績表入力のフォームを作成

A=10,B=6,C=2 として平均を出す • プロシージャからユーザフォームを開く方法 ユーザフォーム(frmTest)を開く (プログラム) Sub Test() Load frmTest 'メモリへの読み込み frmTest.Show 'ユーザフォームを開く unload frmTest 'メモリから削除 End Sub

7.2.6 OK、キャンセルボタンでユーザフォームを閉じる

2006.8.24-25 兵庫教育大学 伊奈諭

22

Page 29: はじめにƒ…報処理論~表計算マクロ(VBA)の活用~ 序章 0.1 VBA、マクロとは(VBA≒Macro) VBA(Visual Basic for Application) はプログラム言語の一種でMS

情報処理論~表計算マクロ(VBA)の活用~

cmdOK

cmdCancel

frmTest

キャンセルボタンCancelプロパティ True

OKボタンDefaultプロパティ True

(プログラム) Sub cmdOK_Click() IsOK=True Hide End Sub Sub cmdCancel_Click() IsOK=False Hide End Sub Sub Test() Load frmTest 'メモリへの読み込み frmTest.Show 'ユーザフォームを開く If frmTest.IsOK=True Then MsgBox "OK ボタンがクリックされました" Else MsgBox "キャンセルボタンがクリックされました" End If Unload frmTest 'メモリから削除 End Sub

7.2.7 ブックのオープン/クローズ時の処理 オープン時の処理 Sub Workbook_Open() MsgBox "現在" & Time & "です" End Sub クローズ時の処理 Sub Workbook_BeforeClose(Cancel As Boolean) MsgBox "お疲れ様でした" End Sub

7.2.8 ワークシート新規作成時の処理(シート作成時にシート名を決める) Sub Workbook_NewSheet(ByVal Sh As Object) ShtName=InputBox("シート名を入力してください") If ShtName<>"" Then

2006.8.24-25 兵庫教育大学 伊奈諭

23

Page 30: はじめにƒ…報処理論~表計算マクロ(VBA)の活用~ 序章 0.1 VBA、マクロとは(VBA≒Macro) VBA(Visual Basic for Application) はプログラム言語の一種でMS

情報処理論~表計算マクロ(VBA)の活用~

Sh.Name=ShtName Sh.Cells(1,1).Value=Time ’セル A1 に現在時刻を入れる End If End Sub

7.2.9 ワークシート関数の利用 Excel にあらかじめ組み込まれたワークシート用の組み込み関数が多数あり、VBA プログラムから使うことがで

きる。こうしたワークシート関数は頭に Application.WorksheetFunction 属性をつけて呼び出す。以下に2,3

の例を示す。 ①小数切り上げ関数 RoundUp:第1引数(3.7)を第2引数(0)の小数以下桁数で切り上げ計算する。 X=Application.WorksheetFunction.RoundUp(3.7,0) ②合計関数 Sum:セル A1:C1 の合計を求めて、変数 X に代入する。 X= Application.WorksheetFunction.Sum(Range("A1:C1")) ③ 大を求める関数 Max:セル C3:C12 の 大値を求めて、変数 X に代入する。 X= Application.WorksheetFunction.Max(Range("C3:C12"))

2006.8.24-25 兵庫教育大学 伊奈諭

24

Page 31: はじめにƒ…報処理論~表計算マクロ(VBA)の活用~ 序章 0.1 VBA、マクロとは(VBA≒Macro) VBA(Visual Basic for Application) はプログラム言語の一種でMS

情報処理論~表計算マクロ(VBA)の活用~

8.作品作りに挑戦

8.1 作品の分野、分類 作品の観点、重点

実用計算ツール、家計簿、小遣い帳、住所録など 実用性 教育性 夢がある 美しさ、鑑賞性 将来性、発展性 アイデア(機知) 技術(テクニック) ゲーム性

その他

統計計算プログラム アンケート結果解析など 予想プログラム 競馬着順予想など シミュレーション ゲーム 教育プログラム 計算ドリル、CAI など 観賞用ビジュアルアート 数学関数の視覚化 その他

8.2 作品作りのためのテクニカルな話

8.2.1 図形を描く、動かす 以下のプログラムでは楕円と直線を描画後、楕円のみを斜め右下に 1 ピクセルずつ動かしている。 Sub 図形作画()

ActiveSheet.Ovals.Add 100, 100, 300, 200 ’楕円の描画 引数:左上x,左上 y,幅,高さ ActiveSheet.Lines.Add 100, 100, 300, 200 ’直線の描画 引数:始点x,始点 y,終点 x,終点 y

End Sub Sub 図形移動()

x = 0 y = 0 Do

x = x + 1 y = y + 1 移動 x, y ’Call 移動(x,y)でもよい

Loop End Sub Sub 移動(x, y)

[楕円 1].Top = y [楕円 1].Left = x

End Sub

8.2.2 画像を置く、動かす 以下のプログラムではブックオープン時に画像を配置後、その画像を斜め右下に 1 ピクセルずつ動かす。 Sub Workbook_Open( ) 'ActiveSheet.Shapes.AddPicture "z:¥きらり.jpg", 0, -1, 0, 0, 128, 163 'アクティブセル位置への画像の挿入 ActiveSheet.Pictures.Insert "z:¥きらり.jpg" End Sub

2006.8.24-25 兵庫教育大学 伊奈諭

25

Page 32: はじめにƒ…報処理論~表計算マクロ(VBA)の活用~ 序章 0.1 VBA、マクロとは(VBA≒Macro) VBA(Visual Basic for Application) はプログラム言語の一種でMS

情報処理論~表計算マクロ(VBA)の活用~

Sub 図形() x = 0 y = 0 Do

x = x + 1 y = y + 1 移動 x, y ’Call 移動(x,y)でもよい

Loop End Sub Sub 移動(x, y)

[図 1].Top = y [図 1].Left = x

End Sub

8.2.3 タイマーで待ち時間間隔を制御する 以下のプログラムでは、A1 セルと B1 セルに 0 から9までの乱数を一定の時間間隔で繰り返し表示できるように

タイマー待ちを使っている。 ①Wait 命令(メソッド):1 秒以上の間隔で時間待ちさせる Sub ウエイト秒( )

Do Cells(1, 1).Value = Int(10 * Rnd) Cells(1, 2).Value = Int(10 * Rnd) Application.Wait (Now + TimeValue("0:00:01"))

Loop End Sub ②Sleep 関数(Win32API 関数):ミリ秒単位の細かい時間間隔を指定して時間待ちさせる この場合は、Windows システムの API 関数(Sleep 関数)を直接呼び出して利用する方法となる。 そのためには、API 関数を VB から利用するための下記のインタフェース宣言を標準モジュールの頭で定義して

おかなければならない。 ’指定時間待機をする関数の宣言 Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) Sub ウエイトミリ秒( )

Do Cells(1, 1).Value = Int(10 * Rnd) Cells(1, 2).Value = Int(10 * Rnd) Sleep 300 ’300ms の間待機させる

Loop End Sub

8.3 魔法の命令DoEvents Do~Loop などの無限繰り返し処理の中で、ボタンやチェックボックスなどの割り込み機能を受け入れ可能とする

ためには、ループの 後(Loop 文の前)に、DoEvents 文を入れておくこと。こうすることで、ループ処理が計

算時間を占有することなく Windows システムに制御が戻る余裕を与えることができる。“純情きらり”やスロッ

トゲームのサンプルで、終了ボタン、軌跡チェックボックスやストップボタンが問題なく働けるのは、この魔法

の言葉を使ったからである。

2006.8.24-25 兵庫教育大学 伊奈諭

26

Page 33: はじめにƒ…報処理論~表計算マクロ(VBA)の活用~ 序章 0.1 VBA、マクロとは(VBA≒Macro) VBA(Visual Basic for Application) はプログラム言語の一種でMS

情報処理論~表計算マクロ(VBA)の活用~

付録 A マクロ(VBAプログラム)の簡易実行(メニュー、ツールバー、図形ボタンへ

の割り当て)

A.1 マクロの登録(1)メニューへの割り当て メニューの部分を右クリックしてポップアップメニューから[ユーザ設定]をクリック [ユーザ設定]ダイアログボックスから「分類」で「マクロ」、コマンドで「ユーザ設定メニュー項目」を選ぶ マクロを追加したいメニュー([ファイル]など)をクリックして開く 「ユーザ設定」ダイアログボックス]の「コマンド」で「ユーザ設定メニュー項目」を選び、メニューを追加し

たい位置までドラッグアンドドロップする 追加したメニュー項目を右クリックしポップアップメニューを開く [名前]欄にメニュー表示する文字列を入力する ポップアップメニューの[マクロの登録]を選び、メニューに登録したいマクロを選ぶ

A.2 マクロの登録(2)ツールバーのボタンへの割り当て [ツール]-[ユーザ設定]の[コマンド]タブを選択 [分類]から[マクロ]を選択し、[コマンド]から[ユーザ設定ボタン]をドラッグしメニューバーの右端に

ドロップ 貼り付けたボタンの名前を替え、[マクロの登録]メニューを選択して登録

A.3 ボタンの絵柄の変更および編集

2006.8.24-25 兵庫教育大学 伊奈諭

27

Page 34: はじめにƒ…報処理論~表計算マクロ(VBA)の活用~ 序章 0.1 VBA、マクロとは(VBA≒Macro) VBA(Visual Basic for Application) はプログラム言語の一種でMS

情報処理論~表計算マクロ(VBA)の活用~

[ユーザ設定]ダイアログボックスを開いた状態で変更・編集対象ボタンを右クリックし、ポップアップメニュ

ーの[ボタンイメージの変更]または[ボタンイメージの編集]を選ぶ

A.4 マクロを図形ボタンに割り当てる 対象図形を右クリックしてポップアップメニューを開き、[マクロの登録]メニューを選んで、割り当てたいマク

ロを指定する

B. 数値から文字列に変換する関数(Cstr) Sub IntToTxt()

Dim IntAge As Integer Dim strAge As String

IntAge = 32 strAge = CStr(IntAge) MsgBox ("年齢は" + strAge + "です") End Sub

2006.8.24-25 兵庫教育大学 伊奈諭

28

Page 35: はじめにƒ…報処理論~表計算マクロ(VBA)の活用~ 序章 0.1 VBA、マクロとは(VBA≒Macro) VBA(Visual Basic for Application) はプログラム言語の一種でMS

情報処理論~表計算マクロ(VBA)の活用~

C. SubプロシージャとFunctionプロシージャ Function(関数)は Sub と似ているが、Function では値を呼び出し元に持ち帰り、使用することができる。したが

って Function 自体にも(下記の As Integer のように)データ型を指定する。

Function funcTestInc(x As Integer) As Integer funcTestInc=x*2+3 End Function Sub DispInt() intFunc=2 intReturn=funcTestInc(intFunc) strAns=CStr(intReturn) MsgBox("答えは"+strAns+"です。") End Sub また 5 章の練習にあった三角形の面積計算部分をユーザ定義関数で作成すると以下のようにできる。 Public Function 三角形面積(底辺 As Single,高さ As Single) As Single 三角形面積=底辺*高さ/2 End Function

2006.8.24-25 兵庫教育大学 伊奈諭

29