1. VBA とマクロ

1. VBA とマクロ
1.1 VBA とは
VBA(Visual Basic for Applications)は、1997 年に Microsoft 社がマクロを作成するために開発さ
れた言語である。Windows 対応のアプリケーションを開発するためのプログラミング言語 Visual Basic
をもとにしているため、次のような特徴がある。
①
VBA は、Excel、Word,
Access, PowerPoint など、Microsoft Office のソフトで共通利用できる。
②
マクロを作成する環境が全ソフトで統一されている。
③
Visual Basic の文法や考え方が応用できる。
1.2 マクロとは
一連の処理(手順)を登録しておき、同じ処理を行うときにその処理が呼び出せれば、作業効率が
上がる。この登録された一連の処理がマクロである。マクロ機能には次のような特徴がある。
①
操作が簡単になる。頻繁に利用する定型業務をマクロとして登録しておけば、Excel の操作を良く
知らない人でも処理が可能になる。
②
正確な処理が行える。
③
高度な処理が行える。
1.3 VBA の基礎用語
オブジェクト:ブック、シート、セルなど、Excel で操作の対象となるものを言う。
コレクション:同じ種類のオブジェクトの集まりをコレクションと言う。例えば、1つのブックに
は、複数のワークシート(オブジェクト)が存在する。このコレクションを1つのオブジェクトと同じ
ように扱うことができる。
「選択する」
「コピーする」などの動作の指示を
メ ソ ッ ド:オブジェクトに対する指示のうち、
行うものをメソッドという。
「セルの色を赤」などの設定を行う。
プ ロ パ テ ィ:オブジェクトの状態の設定を行う。例えば、
オブジェクト・メソッドの一般形
オブジェクト.メソッド
例:Range("A1").Select
オブジェクト.プロパティ=値
例:Range("A1")="湘北"
プロシージャ:VBA プログラムを実行する際に1つの単位として扱われる VBA コードの集まり。
(Sub(....)~ End Sub(....)までのひとかたまり)
モ ジ ュ ー ル:プロシージャを管理する部分をモジュールと言う。とくに標準モジュールは、特定
のオブジェクトに関連づけられていないプロシージャを収めており、他のモジュールから呼び出して使
用できる Sub プロシージャや、Function プロシージャが含まれている。
プロジェクト:Excel のシート、VBA のコードを記述するモジュール全体をプロジェクトと言う。
1/6
2. VBA のプログラム
2.1 関数を作る:ユーザー定義の関数
MS-Excel には備え付けの関数(Function)があるが、ユーザーが関数を作成することができる。
このような関数をユーザー定義の関数と言う。ここでは、VBA プログラミングの書式を学びながら、
「セ
ルに入力した式を表示させる関数」を作成してみよう。
例1
(1)
ファイル【VBA_01.xls】にシート
図 1
VBA_01.xls の
[計算式表示] を作成する。
シート[計算式表示]
を作成する
(2)
VBA のプロジェクトウィンドウで【標準モジュール】を挿入する。
(3)
コードウィンドウに図 2 のとおり、プログラムを入力する。
コードウィンドウ:プログラムを記述する
プロジェクトエクスプローラ:ブックの構成
図 2
Module1(コード)ウィンドウへの入力
プログラムの説明
①
Option Explicit
②
「‘」は注釈行
③
@Summary は関数の機能の説明
④
@param は parameter、引数 c の説明
⑤
@z は関数が返す値(関数値ともいう)
「変数の宣言を強制する」
2/6
関数定義の一般形
Function
関数名(変数名
As
処理:実行の最後は
End
⑥
変数の型
・・・)
「関数名=値」
As
関数値の型
の形
Function
Function showFormula (c As Range)
As String
関数名:showFormula
引
数:
変数 c は
関数値:返す値は
(4)
String(文字列)
Excel の範囲 I2:I4 に計算式を入力、セル I2 を選んで、関数を挿入する。
図 3
(5)
Range(セル範囲)
関数挿入でユーザー定義の関数を選択する
引数の 【F2】を指定する。I2 には、F2 に入力されている関数が表示されることを確認する。I3、
I4 にそれぞれ B6、F6 を指定する。
図 4
引数 c の入力
3/6
2.2 変数・データ型・数式
データは、変数に格納されて処理される。整数、小数、文字列など、データには型がある。表 1 に
データ型を示す。
表 1
データ型一覧
データ型
説明
具体例
Integer 型
整数型
-32768
Single 型
単精度(10 進 7 桁)浮動小数型とも言う。小数
-3.402823E38~-1.401298E-45
部付きの数値
1.401298E-45~3.402823E38
Long 型
整数
-2147483648
Currency 型
通貨
Double 型
倍精度(10 進 15 桁)浮動小数型。小数部つき
例
Byte 型
小さな整数
-128 ~
Variant 型
あらゆるデータ型に対応可能
Date 型
西暦 100 年 1 月 1 日からの日付と 0:00:00~23:59:59
Boolean 型
値
String 型
文字列
True または
32767
~
~
2147483647
123.45
127
False
例
“123”、
“Ozao”
変数宣言の一般形
Dim
変数名
例:
Dim
As
name
データ型
As
‘用途の注釈
String
‘名前は文字列
値が変更できない変数を定数という。定数宣言では、定数名、データ型、値を指定する。定数名は英
大文字で構成することが多い。
定数宣言の一般形
Const
例:
As
定数名
Const
データ型
NAME As
=
定数式
String =
“Ozao”
例 2 範囲を選択、代入
4/6
セルの指定方法(絶対参照)
Range オブジェクト使用
省略形
実際に選択されたセル範囲
Range("C4").Select
[C4].Select
[C4]
Range("C4",”E4”).Select
[C4,E4].Select
[C4],[E4]
Range("C4:E4").Select
[C4:E4].Select
[C4]~[E4]
Range("C4","E4:I4").Select
[C4,"E4:I4"].Select
[C4]と [E4] ~[I4]
Cells プロパティ使用
実際に選択されたセル範囲
Cells(4,3)
[C4]
Cells("4","C")
[C4]
セルの指定方法(絶対参照)
Range("C4" ).Select
----[C4] を選択
ActiveCell.Offset(1,3)
----ActiveCell.Offset(行の変位、列の変位)
[C+3,4+1]
→
[F,5]
Copy メソッド、Cut メソッド
[B4:J4].Select
----[B4:J4] を選択
Selection.Copy
----コピーする(移動するときは
[B5].Select
----コピー先の先頭位置の選択
ActiveSheet.Paste
----貼り付ける
Selection.Cut)
[演習 1]
(1)ファイル[顧客台帳.xls]の 1 行目から 3 行目を、11 行目以降にコピーするプログラム「顧客台帳_1」
を作成しなさい。
(2)ファイル[顧客台帳.xls]の 14 行目に B4 から H4 までをコピーし、「買上」と「税込」を計算するプ
ログラム「顧客台帳_2」を作成しなさい。
5/6
3. アルゴリズムとデータ構造
3.1 アルゴリズムとデータ構造
問題を解決するための算法(処理手順)をアルゴリズムという。流れ図(フローチャート)は、プ
ログラム手続きを図式化したものである。プログラムで利用するデータには構造がある。利用度の高い
ものとして、配列、リスト構造、スタック、キューがある。
配列(array structure):同一の構造をもつ複数の要素を、連続的に記憶領域に配置したデータ構
造である。配列は配列名と添え字で指定する。
配列
a
a(0)
a(1)
a(2)
a(4)
a(5)
リスト構造(list structure):リストとは、ある規則によってデータを順位づけした集合である。
リスト中の要素を一列に並べたものを線形リストという。
ツリー(木)構造(tree structure):線形リストが一方向に伸びるのに対し、木構造では枝分かれ
するように、複数方向に伸びるリストである。
配列は、記憶域上の連続した領域上に作成されるのに対し、リストの各要素はそれぞれ独立した場
所にあり、要素間はポインタという仕組みで結合されている。
6/6