Comments
Description
Transcript
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