1. VBA とマクロ 1.1 VBA とは VBA(Visual Basic for Applications) は 1997 年に Microsoft 社がマクロを作成するために開発された言語である Windows 対応のアプリケーションを開発するためのプログラミング言語 Visual Basic をもとにしているため 次のような特徴がある 1 VBA は Excel Word, Access, PowerPoint など Microsoft Office のソフトで共通利用できる 2 マクロを作成する環境が全ソフトで統一されている 3 Visual Basic の文法や考え方が応用できる 1.2 マクロとは 一連の処理 ( 手順 ) を登録しておき 同じ処理を行うときにその処理が呼び出せれば 作業効率が上がる この登録された一連の処理がマクロである マクロ機能には次のような特徴がある 1 操作が簡単になる 頻繁に利用する定型業務をマクロとして登録しておけば Excel の操作を良く知らない人でも処理が可能になる 2 正確な処理が行える 3 高度な処理が行える 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( コード ) ウィンドウへの入力プログラムの説明 1 Option Explicit 変数の宣言を強制する 2 は注釈行 3 @Summary は関数の機能の説明 4 @param はparameter 引数 c の説明 5 @z は関数が返す値 ( 関数値ともいう ) 2 / 6
関数定義の一般形 Function 関数名 ( 変数名 As 変数の型 ) As 関数値の型処理 : 実行の最後は 関数名 = 値 の形 End Function 6 Function showformula (c As Range) As String 関数名 :showformula 引数 : 変数 c は Range( セル範囲 ) 関数値 : 返す値は String( 文字列 ) (4) Excel の範囲 I2:I4 に計算式を入力 セル I2 を選んで 関数を挿入する 図 3 関数挿入でユーザー定義の関数を選択する (5) 引数の F2 を指定する I2 には F2 に入力されている関数が表示されることを確認する I3 I4 にそれぞれ B6 F6 を指定する 図 4 引数 c の入力 3 / 6
2.2 変数 データ型 数式 データは 変数に格納されて処理される 整数 小数 文字列など データには型がある 表 1 に データ型を示す 表 1 データ型一覧 データ型 説明 具体例 Integer 型 整数型 -32768 ~ 32767 Single 型 単精度 (10 進 7 桁 ) 浮動小数型とも言う 小数部付きの数値 -3.402823E38~-1.401298E-45 1.401298E-45~3.402823E38 Long 型 整数 -2147483648 ~ 2147483647 Currency 型 通貨 Double 型 倍精度 (10 進 15 桁 ) 浮動小数型 小数部つき 例 123.45 Byte 型 小さな整数 -128 ~ 127 Variant 型 あらゆるデータ型に対応可能 Date 型 西暦 100 年 1 月 1 日からの日付と 0:00:00~23:59:59 Boolean 型 値 True または False String 型 文字列 例 123 Ozao 変数宣言の一般形 Dim 変数名 As データ型 用途の注釈例 : Dim 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 ----コピーする( 移動するときは Selection.Cut) [B5].Select ----コピー先の先頭位置の選択 ActiveSheet.Paste ---- 貼り付ける [ 演習 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