• 検索結果がありません。

ver VBA 超簡単テキスト このテキストは Visual Basic の学習を目的に作られたExcelVBA 学習テキストである そのため Excel が持つ表計算ソフトとしての機能よりも GUI を活用したアプリケーション開発に重点をおいている このテキストを通して GUI アプ

N/A
N/A
Protected

Academic year: 2021

シェア "ver VBA 超簡単テキスト このテキストは Visual Basic の学習を目的に作られたExcelVBA 学習テキストである そのため Excel が持つ表計算ソフトとしての機能よりも GUI を活用したアプリケーション開発に重点をおいている このテキストを通して GUI アプ"

Copied!
80
0
0

読み込み中.... (全文を見る)

全文

(1)

生産情報処理実習テキスト

Excel VBA

高 齢 ・ 障 害 ・ 求 職 者 雇 用 支 援 機 構

(2)

ver.201602

VBA超簡単テキスト

こ の テ キ ス ト は 、Visual Basic の 学 習 を 目 的 に 作 ら れ た ExcelVBA 学 習 テ キ ス ト で あ る 。 そ の た め 、 Excel が 持 つ 表 計 算 ソ フ ト と し て の 機 能 よ り も 、 GUI を 活 用 し た ア プ リ ケ ー シ ョ ン 開 発 に 重 点 を お い て い る 。こ の テ キ ス ト を 通 し て GUI ア プ リ ケ ー シ ョ ン 開 発 の 基 本 を 理 解 し て も ら い た い 。 目 次 1 . 概 要 1 . 1 Windows プ ロ グ ラ ム 1 . 2 Windows プ ロ グ ラ ム の 内 容 1 . 3 VBA プ ロ グ ラ ム 2 . ま ず 、 や っ て み る 2 . 1 VBA の 立 ち 上 げ 2 . 2 プ ロ グ ラ ム の 作 成 2 . 3 デ バ ッ ク 3 . コ ン ト ロ ー ル 4 . プ ロ パ テ ィ 5 . イ ベ ン ト 6 . フ ォ ー ム の 表 示 7 . 変 数 と 変 数 宣 言 7 . 1 変 数 の 宣 言 7 . 2 配 列 7 . 3 文 字 列 7 . 4 演 算 8 . 演 算 9 . 関 数 9 . 1 数 学 関 数 9 . 2 日 に ち ・ 時 間 の 関 数 9 . 3 文 字 関 数 1 0 . 制 御 構 造 1 0 . 1 IF ス テ ー ト メ ン ト 1 0 . 2 Select ス テ ー ト メ ン ト 1 0 . 3 Do ル ー プ 1 0 . 4 For ル ー プ

(3)

1 0 . 5 Exit ス テ ー ト メ ン ト 1 0 . 6 Do Events ス テ ー ト メ ン ト 1 1 . プ ロ シ ー ジ ャ 1 1 . 1 プ ロ シ ー ジ ャ の 宣 言 1 1 . 2 プ ロ シ ー ジ ャ の 呼 び 出 し 1 2 . ブ ッ ク ・ ワ ー ク シ ー ト ・ セ ル の 操 作 1 2 . 1 マ ク ロ 1 2 . 2 セ ル の 操 作 1 2 . 3 ワ ー ク シ ー ト の 操 作 1 2 . 4 ブ ッ ク の 操 作 1 2 . 5 マ ク ロ の 作 成 1 3 . ワ ー ク シ ー ト を 使 っ た 自 動 処 理 1 4 . ウ イ ン ド ウ の 選 定 と コ ー ド の 記 述 場 所 1 5 . フ ァ イ ル 操 作 1 5 . 1 コ モ ン ダ イ ア ロ グ コ ン ト ロ ー ル に よ る フ ァ イ ル 操 作 1 6 . Windows プ ロ シ ー ジ ャ の 組 み 込 み

(4)

A.はじめに

1 . 概 要 1 . 1 Windows の プ ロ グ ラ ム ま ず 、初 め に Windows の プ ロ グ ラ ム と は ど の よ う な も の か を 見 て み ま し ょ う 。例 え ば 、 「 マ イ コ ン ピ ュ ー タ 」の 中 に あ る 「コ ン ト ロ ー ル パ ネ ル 」の 「サ ウ ン ド 」を 開 い て み て 下 さ い 。 「サ ウ ン ド の プ ロ パ テ ィ 」の ウ イ ン ド ウ で は 、Windows で 使 わ れ る 「音 」を い ろ い ろ と 決 め る こ と が で き ま す 。 こ の ウ イ ン ド ウ に は「 サ ウ ン ド 設 定 は・・・」 や 「 サ ウ ン ド 設 定 (H):」 な ど の 文 字 を 表 示 す る 部 分 、音 を 選 択 す る「 プ ロ グ ラ ム イ ベ ン ト 」、 そ の 音 を 再 生 す る「 テ ス ト (T)」ボ タ ン な ど が 配 置 さ れ て い ま す 。 マ ウ ス で 「Windows の 終 了 」を ク リ ッ ク し 、 「 テ ス ト (T) 」 ボ タ ン を ク リ ッ ク す る と 、 Windows を 終 了 し た と き の 音 楽 が 再 生 さ れ ま す 。こ れ は 、「 ”Windows の 終 了“ が 選 択 さ れ 、 テ ス ト ボ タ ン が ク リ ッ ク さ れ た ら 、 終 了 時 の 音 楽 を 再 生 し な さ い 」 と い う 命 令 が 組 み 込 ま れ て い る か ら で す 。 ま た 、 ウ イ ン ド ウ 右 上 に あ る [×]印 の 「 閉 じ る ボ タ ン 」 を ク リ ッ ク す る と 、開 い て い た ウ イ ン ド ウ が 閉 じ ま す 。 こ れ も 「 ” 閉 じ る ボ タ ン “ が ク リ ッ ク さ れ た ら 、 そ の ウ イ ン ド ウ を 閉 じ な さ い 」 と い う 命 令 が 入 っ い る か ら で す 。 こ の よ う に Windows の プ ロ グ ラ ム に は 、 操 作 す る た め の ウ イ ン ド ウ が あ り 、 そ こ に 文 字 を 表 示 す る 部 分 、 選 択 肢 を 選 択 す る 部 分 、 動 作 を 実 行 す る ボ タ ン な ど を 配 置 し ま す 。 さ ら に 、「 こ の 部 分 が ク リ ッ ク さ れ た ら こ の 動 作 を す る 」と い っ た 命 令 が ウ イ ン ド ウ に 組 み 込 ま れ て い ま す 。 従 っ て 、 Windows の プ ロ グ ラ ム を 作 る た め に は 、 1)ウ イ ン ド ウ を デ ザ イ ン す る 部 分 2)実 際 の 動 作 を 決 め る 部 分 の 二 つ を 作 ら な け れ ば な り ま せ ん 。 こ の よ う に 作 ら れ た ウ イ ン ド ウ が い く つ か 集 ま っ て ( も ち ろ ん ウ イ ン ド ウ が 一 つ し か な い も の も あ り ま す )、 一 つ の ア プ リ ケ ー シ ョ ン ソ フ ト に な り ま す 。 2 . ク リ ッ ク 1 . ク リ ッ ク 3 . ク リ ッ ク

(5)

1 . 2 VBA に よ る Windows プ ロ グ ラ ム

Windows の プ ロ グ ラ ム を 作 成 す る に は VisualBasic や VisualC++な ど の 専 用 の ソ フ ト ウ エ ア が 必 要 に な り ま す 。 し か し 、 簡 易 的 な も の で あ れ ば 一 般 的 に 使 用 さ れ て い る ワ ー プ ロ ソ フ ト や 表 計 算 ソ フ ト な ど に 付 属 さ れ て い る ア プ リ ケ ー シ ョ ン 用 プ ロ グ ラ ム 言 語 を 使 っ て も Windows プ ロ グ ラ ム を 組 む こ と が 出 来 ま す 。実 行 フ ァ イ ル( exe フ ァ イ ル )を 作 る こ と は 出 来 ま せ ん が 、 同 じ ワ ー プ ロ ソ フ ト や 表 計 算 ソ フ ト が あ れ ば 、 容 易 に そ の プ ロ グ ラ ム を 実 行 す る こ と は 可 能 で す 。 現 在 、広 く 使 わ れ て い る ワ ー プ ロ ソ フ ト 、表 計 算 ソ フ ト に マ イ ク ロ ソ フ ト 社 の「 Word」、 「 Excel」 が あ り ま す 。 こ れ ら の ソ フ ト ウ エ ア に は VBA( Visual Basic for Application) と 呼 ば れ る 専 用 の プ ロ グ ラ ム 言 語 が 付 属 さ れ て い ま す 。VBA は Basic 言 語 で あ る た め 、初 心 者 で も 容 易 に 覚 え る こ と が で き 、 ま た 、 プ ロ グ ラ ム 専 用 言 語 の VisualBasic に も 類 似 し て い る た め 、 VBA の 技 術 を VisualBasic に 発 展 さ せ る こ と も 可 能 で す 。 表 計 算 ソ フ ト Excel に は プ ロ グ ラ ミ ン グ 言 語 と し て「 ExcelVBA」が 用 意 さ れ て い ま す 。 Excel そ の も の が 表 計 算 ソ フ ト で あ る た め 、 ExcelVBA に は デ ー タ 管 理 機 能 や 専 用 の 計 算 機 能 も 持 っ て い ま す 。 デ ー タ ベ ー ス ソ フ ト の 「 Access」の よ う な デ ー タ ベ ー ス 専 用 の 機 能 は あ り ま せ ん が 、こ の ExcelVBA を 上 手 に 活 用 す れ ば 、か な り 広 い 範 囲 の デ ー タ 処 理 や 事 務 処 理 が 可 能 に な り ま す 。 ExcelVBA で は デ ー タ 処 理 以 外 に も 、 計 測 器 の デ ー タ 自 動 読 み 取 り や 機 械 の 制 御 な ど 様 々 な こ と を す る こ と が で き ま す 。こ の テ キ ス ト で は 、VBA の 基 本 を 習 得 し 、デ ー タ 管 理 、 自 動 計 測 、 機 械 制 御 な ど の 各 種 ア プ リ ケ ー シ ョ ン の 開 発 に つ い て 説 明 し ま す 。 1 . 3 Windows プ ロ グ ラ ム の 内 容

ExcelVBA( 以 下 、 VBA と 呼 ぶ ) で Windows の プ ロ グ ラ ム を 作 る 場 合 で も 、 ウ イ ン ド ウ を デ ザ イ ン す る 部 分 と 実 際 の 動 作 を 決 め る 部 分 の 二 つ が 必 要 と な り ま す 。 VBA で は 、ウ イ ン ド ウ の こ と を「 ユ ー ザ ー フ ォ ー ム 」 と 呼 び ま す 。 ユ ー ザ ー フ ォ ー ム の 中 に は 数 字 を 入 力 す る 部 分 、 文 字 を 表 示 す る 部 分 、 何 ら か の 動 作 を 実 行 す る ボ タ ン な ど 、 た く さ ん の 部 品 が 使 わ れ て い ま す 。 ユ ー ザ ー フ ォ ー ム の 内 部 に 配 置 さ れ て い る こ れ ら の 部 品 を 「 コ ン ト ロ ー ル 」 と い い ま す 。 ま た 、 ユ ー ザ ー フ ォ ー ム と コ ン ト ロ ー ル を 合 わ せ て 「 オ ブ ジ ェ ク ト 」 と い い ま す 。 一 つ の プ ロ グ ラ ム に は 一 つ 以 上 の ユ ー ザ ー フ ォ ー ム が あ り 、 そ の ユ ー ザ ー フ ォ ー ム に コ ン ト ロ ー ル を 配 置 し て ウ イ ン ド ウ の 外 観 を 作 っ て い き ま す 。 そ れ ぞ れ の オ ブ ジ ェ ク ト に は 大 き さ 、 表 示 す る 文 字 列 、 色 な ど 、 い ろ い ろ な 性 質 を 持 っ て い ま す 。 こ れ ら の 性 質 を 「 プ ロ パ テ ィ 」 と い い ま す 。 こ の プ ロ パ テ ィ は あ ら か じ め 設 定 し た り 、 ま た 、 プ ロ グ ラ ム 実 行 中 に コ ン ト ロ ー ル ユ ー ザ ー フ ォ ー ム

(6)

変 更 し た り し ま す 。 VBA を 使 っ て Windows の プ ロ グ ラ ム を 作 成 す る と き 、第 1 の 「ウ イ ン ド ウ を デ ザ イ ン す る 部 分 」で は 1)ユ ー ザ ー フ ォ ー ム を 用 意 す る 2)コ ン ト ロ ー ル を 配 置 す る 3)プ ロ パ テ ィ を 設 定 す る こ と に よ っ て 、 ウ イ ン ド ウ の 外 観 を デ ザ イ ン し ま す 。 Windows の プ ロ グ ラ ム で は 、プ ロ グ ラ ム を 実 行 し て も ウ イ ン ド ウ が 開 か れ る だ け で 、普 通 は 何 の 動 作 も し ま せ ん 。 操 作 し て い る 人 が 「 マ ウ ス を ク リ ッ ク す る 」 な ど の 何 ら か の 働 き か け を す る こ と に よ っ て 、 初 め て プ ロ グ ラ ム が 動 作 し ま す 。 VBA で 作 ら れ た ユ ー ザ ー フ ォ ー ム で も 、オ ペ レ ー タ ー が 「 実 行 」 ボ タ ン な ど の オ ブ ジ ェ ク ト に 対 し て ク リ ッ ク な ど の 働 き か け を 行 っ た り 、 も し く は Windows 自 身 が 何 ら か の 働 き か け を す る こ と に よ っ て 、 決 め ら れ た 動 作 を し て い き ま す 。 こ の よ う な 外 部 か ら の 働 き か け の こ と を 「 イ ベ ン ト 」 と い い ま す 。 こ の よ う な イ ベ ン ト に よ っ て 何 か を 実 行 す る 、 と い う よ う な プ ロ グ ラ ム を 「 イ ベ ン ト ド リ ブ ン 型 」 と い い ま す 。 プ ロ グ ラ ム を 組 む と き に は 、 ま ず 「 ど の オ ブ ジ ェ ク ト に 対 し 、 ど の よ う な イ ベ ン ト が 発 生 し た ら 」 を 決 め て い き ま す 。 プ ロ グ ラ ム の 動 作 は た く さ ん の 命 令 語 ( コ マ ン ド ) に よ っ て 指 示 さ れ ま す 。 こ れ ら の 命 令 語 に は 「 オ ブ ジ ェ ク ト 」、「 プ ロ パ テ ィ 」、「 メ ソ ッ ド 」、「 ス テ ー ト メ ン ト 」、「 イ ベ ン ト 」、 「 関 数 」、「 演 算 子 」 な ど が あ り ま す 。 こ れ ら の 命 令 語 を 組 み 合 わ せ た も の を 「 コ ー ド 」 と い い 、 コ ー ド に よ っ て プ ロ グ ラ ム の 動 作 が 決 ま り ま す 。 メ ソ ッ ド は オ ブ ジ ェ ク ト の 動 作 を 指 示 す る 命 令 語 、 ま た ス テ ー ト メ ン ト は プ ロ グ ラ ム の 流 れ を 制 御 し た り 、 変 数 の 宣 言 な ど を 行 う 命 令 語 で す 。 イ ベ ン ト は オ ブ ジ ェ ク ト に 対 す る 働 き か け の こ と で す 。 オ ブ ジ ェ ク ト は ウ イ ン ド ウ の 外 観 を 構 成 す る 要 素 、 プ ロ パ テ ィ は そ れ ぞ れ の オ ブ ジ ェ ク ト の 特 性 を 決 め る 要 素 で す 。こ れ ら の 命 令 語 の 詳 細 は 、VBA の ヘ ル プ フ ァ イ ル の 「 ラ ン ゲ ー ジ リ フ ァ レ ン ス 」 に 書 か れ て い ま す 。 命 令 語 を 組 み 合 わ せ て コ ー ド を 作 る と き 、 そ れ ぞ れ の 動 作 に 対 応 し た コ ー ド を ひ と か た ま り に す る こ と に よ っ て 、 簡 単 に コ ー ド を 組 む こ と が で き ま す 。 こ の コ ー ド の ブ ロ ッ ク を 「 プ ロ シ ー ジ ャ 」 と 言 い ま す 。 プ ロ シ ー ジ ャ を 使 っ て コ ー ド を 組 む こ と に よ り 、 コ ー ド が わ か り や す く な り ま す 。 ま た 、 同 じ 動 作 を 何 回 も さ せ る と き 、 一 つ の プ ロ シ ー ジ ャ を 共 用 す る こ と に よ り 、 コ ー ド を 短 く す る こ と が で き ま す 。 1.こ の オ ブ ジ ェ ク ト に 対 し て 2.こ の イ ベ ン ト が 発 生 し た ら 3.こ の 動 作 を 実 行

(7)

プ ロ シ ー ジ ャ に は 、「 Sub プ ロ シ ー ジ ャ 」、「 Function プ ロ シ ー ジ ャ 」、 「 Property プ ロ シ ー ジ ャ 」が あ り ま す 。 Sub プ ロ シ ー ジ ャ は あ る 処 理 を す る プ ロ シ ー ジ ャ 、Function プ ロ シ ー ジ ャ は あ る 処 理 を し た あ と そ の 結 果 を 返 す プ ロ シ ー ジ ャ で す 。 こ の 二 つ は よ く 使 わ れ ま す 。 VBA で は 「 こ の オ ブ ジ ェ ク ト に 対 し 、 こ の よ う な イ ベ ン ト が 発 生 し た ら 、 こ の よ う に 動 作 し な さ い 」 と い う 一 連 の 動 作 を 一 つ の Sub プ ロ シ ー ジ ャ と し て 指 示 し ま す 。こ の よ う な Sub プ ロ シ ー ジ ャ を 特 に 「 イ ベ ン ト プ ロ シ ー ジ ャ 」 と い い ま す 。 い く つ か の イ ベ ン ト プ ロ シ ー ジ ャ を 組 み 合 わ せ て 、一 つ の コ ー ド を 作 り ま す 。 説 明 が 長 く な り ま し た が 、 VBA で Windows の プ ロ グ ラ ム を 作 成 す る と き の 、 第 2 の 「実 際 の 動 作 を 決 め る 部 分 」で は 1)動 作 を 引 き 起 こ す イ ベ ン ト を 指 定 す る 2)動 作 内 容 を コ ー ド で 記 述 す る こ と に よ っ て 、 プ ロ グ ラ ム の 動 作 を 決 め て い き ま す 。 イベントプロシージャ 1 イベントプロシージャ 2 イベントプロシージャ 3

(8)

2 . ま ず 、 や っ て み る 2 . 1 VBA の 立 ち 上 げ そ れ で は 早 速 、 VBA を 立 ち 上 げ て み ま す 。 VBA は 直 接 立 ち 上 げ る の で は な く 、 ま ず 始 め に Excel を 立 ち 上 げ ま す 。 以 下 、 Excel2010 で の 立 ち 上 げ 方 で す 。 Excel2010 が 立 ち 上 が っ た な ら ば 、リ ボ ン に「 開 発 」タ ブ が あ る か を 確 認 し ま す 。「 開 発 」 タ ブ が な い と き は 、 以 下 の 手 順 で 「 開 発 」 タ ブ を 有 効 に し ま す 。 1)「 フ ァ イ ル 」タ ブ の「 オ プ シ ョ ン 」を 選 択 し て「 Excel の オ プ シ ョ ン 」ダ イ ア ロ グ ボ ッ ク ス を 表 示 し ま す 。 2)ダ イ ア ロ グ ボ ッ ク ス の 左 側 に あ る 「 リ ボ ン の ユ ー ザ ー 設 定 」 を ク リ ッ ク し ま す 。 3)ダ イ ア ロ グ ボ ッ ク ス の 左 側 に あ る 「 コ マ ン ド の 選 択 」 で 、「 基 本 的 な コ マ ン ド 」 を 選 択 し ま す 。 4)ダ イ ア ロ グ ボ ッ ク ス の 右 側 に あ る「 リ ボ ン の ユ ー ザ ー 設 定 」で 、「 メ イ ン タ ブ 」を 選 択 し 、 次 に 「 開 発 」 チ ェ ッ ク ボ ッ ク ス を オ ン に し ま す 。 5)「 OK」 を ク リ ッ ク し ま す 。 「 オ プ シ ョ ン 」 「 開 発 」を チ ェ ッ ク

(9)

Excel の リ ボ ン に 「 開 発 」 が 表 示 さ れ る の で 、「 開 発 」 → 「 Visual Basic」 を ク リ ッ ク す る と 、VBA プ ロ グ ラ ム を 組 む た め の 編 集 ウ イ ン ド ウ が 開 か れ ま す 。こ の 編 集 ウ イ ン ド ウ を VBE( Visual Basic Editor) と い い ま す 。

Excel2007 の 場 合 は 、画 面 左 上 の「 office ボ タ ン 」を ク リ ッ ク し 、「 Excel の オ プ シ ョ ン 」

→ 「 基 本 設 定 」 → 「「 開 発 」 タ ブ を リ ボ ン に 表 示 す る 」 に チ ェ ッ ク を 入 れ て 「 OK」 を ク リ ッ ク し ま す 。 す る と 「 開 発 」 リ ボ ン が 表 示 さ れ ま す 。

Excel2007 以 前 の バ ー ジ ョ ン で は 、メ ニ ュ ー の「 ツ ー ル 」→「 マ ク ロ 」→「 Visual Basic Editor」 を ク リ ッ ク す る と 、 VBE が 表 示 さ れ ま す 。 VBE で は 、Excel の バ ー ジ ョ ン の 違 い に よ る 大 き な 変 化 は な い の で 、 こ こ か ら 先 は 古 い バ ー ジ ョ ン も 交 え て 説 明 し て い き ま す 。

(10)

VBE に は 、メ ニ ュ ー 、ツ ー ル バ ー 、そ の 他 い く つ か の 要 素 が 組 み 込 ま れ て い ま す 。こ れ ら の 要 素 に よ っ て VBA プ ロ グ ラ ム を 容 易 に 作 成 す る こ と が で き る よ う に な り ま す 。 こ れ ら の 要 素 が 必 ず し も 表 示 さ れ て い る と は 限 り ま せ ん 。も し 表 示 さ れ て い な い 要 素 が あ れ ば 、 メ ニ ュ ー の 「 表 示 」 か ら 必 要 な 要 素 を 選 択 し て 下 さ い 。 VBA プ ロ グ ラ ミ ン グ で 必 要 と な る 主 な 要 素 を 以 下 に 示 し ま す ( 下 図 を 参 照 )。 1)メ ニ ュ ー : 画 面 一 番 上 の 「フ ァ イ ル (F)」、 「編 集 (E)」・ ・ ・ ・ VBA の 様 々 な 機 能 を 選 択 し 、 実 行 し ま す 2)ツ ー ル バ ー : メ ニ ュ ー の 下 に あ る い く つ か の ア イ コ ン VBA で よ く 使 う 機 能 を た だ ち に 実 行 し ま す 3)ツ ー ル ボ ッ ク ス : 画 面 左 端 ユ ー ザ ー フ ォ ー ム に 配 置 す る コ ン ト ロ ー ル を 選 択 し ま す 4)プ ロ ジ ェ ク ト エ ク ス プ ロ ー ラ : 画 面 左 上 プ ロ ジ ェ ク ト に 含 ま れ る フ ォ ー ム や コ ー ド な ど の 表 示 や 管 理 を し ま す 5)プ ロ パ テ ィ ウ イ ン ド ウ : 画 面 左 下 フ ォ ー ム や コ ン ト ロ ー ル の プ ロ パ テ ィ を 設 定 し ま す 6)イ ミ デ ィ エ イ ト ウ イ ン ド ウ : 画 面 下 変 数 の 値 や オ ブ ジ ェ ク ト の プ ロ パ テ ィ を 確 認 し た り 、 変 更 し た り し ま す ツ ー ル ボ ッ ク ス メ ニ ュ ー ツ ー ル バ ー ユ ー ザ ー フ ォ ー ム ウ イ ン ド ウ コ ー ド ウ イ ン ド ウ イ ミ デ ィ エ イ ト ウ イ ン ド ウ プ ロ ジ ェ ク ト エ ク ス プ ロ ー ラ プ ロ パ テ ィ ウ イ ン ド ウ

(11)

2 . 2 プ ロ グ ラ ム の 作 成 そ れ で は 早 速 、 プ ロ グ ラ ム を 作 成 し て み ま す 。 ( 1 ) ユ ー ザ ー フ ォ ー ム ウ イ ン ド ウ の 用 意 1)Excel を 立 ち 上 げ 、 VBE を 開 き ま す 。 2)VBE が 開 い た ら 、メ ニ ュ ー の 「挿 入 」→ 「ユ ー ザ ー フ ォ ー ム 」を ク リ ッ ク し 、新 し い ユ ー ザ ー フ ォ ー ム を 表 示 さ せ ま す 。 ( 2 ) コ ン ト ロ ー ル の 配 置 画 面 に ユ ー ザ ー フ ォ ー ム ウ イ ン ド ウ( UserForm1 )が 表 示 さ れ た な ら ば 、こ の UserForm 1 に い ろ い ろ な コ ン ト ロ ー ル を 配 置 し て い き ま す 。 1)ツ ー ル ボ ッ ク ス で コ ン ト ロ ー ル を 選 択 し 、 ユ ー ザ ー フ ォ ー ム 上 で ド ラ ッ ク し て 配 置 し ま す 。 よ く 使 わ れ る コ ン ト ロ ー ル と し て 、 「 Label 」 、 「 TextBox 」 、 「 Frame 」 、 「CommandButton」、 「CheckBox」、 「OptionButton」な ど が あ り ま す 。

2)配 置 し た コ ン ト ロ ー ル を 一 度 ク リ ッ ク す る と 、 ハ ン ド ル (8 個 の 小 さ い 四 角 )が 表 示 さ れ ま す 。 こ の 状 態 を 「 コ ン ト ロ ー ル が 選 択 さ れ た 」 と い い ま す 。 3)選 択 さ れ た コ ン ト ロ ー ル の 上 で マ ウ ス を ド ラ ッ ク す る と 、コ ン ト ロ ー ル が 移 動 し ま す 。 4)ハ ン ド ル の 上 に マ ウ ス ポ イ ン タ を 移 動 し て 細 い 矢 印 に 変 わ っ た と き に ド ラ ッ ク す る と 、 コ ン ト ロ ー ル の 大 き さ が 変 わ り ま す 。 5)コ ン ト ロ ー ル を 選 択 し 、「 Delete」 キ ー を 押 す と 、 選 択 さ れ た コ ン ト ロ ー ル が 消 え ま す 。 6)そ れ で は 一 旦 、 す べ て の コ ン ト ロ ー ル を 消 去 し 、 「Label」、「TextBox」、「CommandButton」を 一 つ ず つ 配 置 し て 下 さ い 。 ( 3 ) ユ ー ザ ー フ ォ ー ム 、 コ マ ン ド ボ タ ン の プ ロ パ テ ィ の 設 定 次 に コ ン ト ロ ー ル の プ ロ パ テ ィ を 設 定 し て み ま す 。 1)ユ ー ザ ー フ ォ ー ム 上 の コ マ ン ド ボ タ ン を 選 択 し 、 プ ロ パ テ ィ ウ イ ン ド ウ が 「 CommandButton1」 に な っ た こ と を 確 認 し て 下 さ い 。 2)「 Caption」 プ ロ パ テ ィ を 選 択 し 、 キ ー ボ ー ド か ら 「 実 行 」と 入 力 し て 下 さ い( 「Caption」の 項 目 に 表 示 さ れ て い る 「 CommandButton1」 を ダ ブ ル ク リ ッ ク す る と カ ー ソ ル が 現 れ る )。 3)ユ ー ザ ー フ ォ ー ム 上 の テ キ ス ト ボ ッ ク ス を 選 択 し 、 プ ロ パ テ ィ ウ イ ン ド ウ が 「TextBox1」に な っ た こ と を 確 認 し て 下 さ い 。 4)「Text」プ ロ パ テ ィ を 選 択 し 、 キ ー ボ ー ド か ら 「テ キ ス ト 」と 入 力 し て 下 さ い 。 5)ユ ー ザ ー フ ォ ー ム を 選 択 し 、プ ロ パ テ ィ ウ イ ン ド ウ が 「UserForm1」に な っ た こ と を 確 認 し て 下 さ い 。

(12)

6)「 Caption」 プ ロ パ テ ィ を 選 択 し キ ー ボ ー ド か ら 「 文 字 の 入 出 力 」と 入 力 し て 下 さ い 。 7)ユ ー ザ ー フ ォ ー ム 上 の ラ ベ ル を 選 択 し 、 プ ロ パ テ ィ ウ イ ン ド ウ が 「Label1」に な っ た こ と を 確 認 し て 下 さ い 。 8)「Font」プ ロ パ テ ィ を 選 択 し 、右 側 に 現 れ た ボ タ ン を ク リ ッ ク し て 下 さ い 。 9)「フ ォ ン ト 」の ダ イ ア ロ グ ボ ッ ク ス が 表 示 さ れ た ら 、 適 当 に フ ォ ン ト を 設 定 し て 下 さ い 。 (例 え ば 、 フ ォ ン ト 名 : MSP 明 朝 、 ス タ イ ル : 斜 体 、 サ イ ズ : 16)。 ( 4 ) コ ー ド の 作 成 最 後 に 、 ユ ー ザ ー フ ォ ー ム の デ ザ イ ン が 終 わ っ た ら 、 コ ー ド を 使 っ て 実 際 の 動 作 を 決 め て い き ま す 。 以 下 の 手 順 に 従 っ て コ ー ド を 作 成 し て い き ま す 。 1)メ ニ ュ ー の 「表 示 」→ 「コ ー ド 」を ク リ ッ ク し て コ ー ド ウ イ ン ド ウ を 表 示 さ せ ま す 。 2)コ ー ド ウ イ ン ド ウ 左 上 で オ ブ ジ ェ ク ト を 指 定 し 、 右 上 で イ ベ ン ト を 指 定 し ま す 。 オ ブ

ジ ェ ク ト を「 CommandButton1」に 、イ ベ ン ト を「 Click」に し て 下 さ い 。(最 初 は 「Click」 が 選 択 さ れ て い ま す )。こ の と き 、不 要 な イ ベ ン ト プ ロ シ ー ジ ャ も 作 ら れ て し ま う の で 、 不 要 な も の は 削 除 し て く だ さ い 。

3)コ ー ド ウ イ ン ド ウ に

Private Sub CommandButton1_Click() Label1.Caption = TextBox1.Text End Sub と 、 入 力 し て く だ さ い 。 入 力 後 、 コ ー ド ウ イ ン ド ウ を 閉 じ て 下 さ い 。 ( 5 ) 動 作 確 認 、 プ ロ グ ラ ム 保 存 そ れ で は 、 出 来 上 が っ た プ ロ グ ラ ム の 動 作 確 認 を し て み ま す 。 1)ユ ー ザ ー フ ォ ー ム を 選 択 し て 、メ ニ ュ ー の「 実 行 」→「 Sub/ユ ー ザ ー フ ォ ー ム の 実 行 」、 も し く は ツ ー ル バ ー の 右 向 き 三 角 形 を ク リ ッ ク し て 下 さ い 。今 作 っ た プ ロ グ ラ ム が 実 行 し ま す 。 2)テ キ ス ト ボ ッ ク ス を ク リ ッ ク し 、 カ ー ソ ル が で た ら 適 当 な 文 字 を 入 力 し て コ マ ン ド ボ タ ン を ク リ ッ ク し て 下 さ い 。 3)テ キ ス ト ボ ッ ク ス で 入 力 し た 文 字 が ラ ベ ル に 表 示 さ れ た こ と を 確 認 し て 下 さ い 。 4)フ ォ ー ム 右 上 の [×]を 押 し 、 プ ロ グ ラ ム を 終 了 さ せ て く だ さ い 。 5)画 面 を Excel の 画 面 に 戻 し 、 Excel の 「フ ァ イ ル 」タ ブ → 「名 前 を 付 け て 保 存 」で 「 フ ァ イ ル の 種 類 」を「 Excel マ ク ロ 有 効 ブ ッ ク( *.xlsm)」に し て 、作 っ た プ ロ グ ラ ム を 保 存 し ま す 。フ ァ イ ル 名 は 01smpl.xlsm に し て 下 さ い 。な お 、こ の フ ァ イ ル を 開 く と セ キ ュ リ テ ィ ー の 関 係 で 警 告 メ ッ セ ー ジ が 表 示 さ れ ま す が 、「 コ ン テ ン ツ の 有 効 化 」を ク リ ッ ク す る と 、 以 後 、 VBA に よ る プ ロ グ ラ ム 動 作 が 有 効 に な り ま す 。 ク リ ッ ク

(13)

2 . 3 VBA フ ァ イ ル Excel で は 、い く つ か の デ ー タ が 集 ま っ て 一 つ の VBA プ ロ ジ ェ ク ト と し て 管 理 し て い ま す 。VBA プ ロ ジ ェ ク ト に は 、そ こ で 使 用 さ れ て い る デ ー タ シ ー ト の デ ー タ の ほ か に 、VBA で 作 成 し た ユ ー ザ ー フ ォ ー ム 、 標 準 モ ジ ュ ー ル 、 ク ラ ス モ ジ ュ ー ル が あ り ま す 。 こ れ ら の も の を 一 つ に ま と め て Excel フ ァ イ ル と し て 保 存 し ま す 。 ユ ー ザ ー フ ォ ー ム に は 、 そ の ユ ー ザ ー フ ォ ー ム の 外 観 を 決 め る オ ブ ジ ェ ク ト の デ ー タ や プ ロ グ ラ ム の 動 作 を 決 め る コ ー ド が 入 っ て い ま す 。 標 準 モ ジ ュ ー ル に は 、 複 数 の フ ォ ー ム で 共 通 し て 使 用 す る よ う な コ ー ド や 情 報 が 入 っ て い ま す 。 ク ラ ス モ ジ ュ ー ル に は 、 他 の ア プ リ ケ ー シ ョ ン で も 使 用 で き る よ う に す る 情 報 が 入 っ て い ま す 。

(14)

2 . 4 デ バ ッ ク コ ー ド 作 成 に は 間 違 い が 付 き も の で す 。 こ の 間 違 い が あ る 限 り 、 プ ロ グ ラ ム は 正 し く 動 作 し ま せ ん 。 こ の プ ロ グ ラ ム の 間 違 い を 「 バ グ 」 と い い 、 バ グ を 取 る 作 業 を 「 デ バ ッ グ 」 と 言 い ま す 。 本 格 的 に コ ー ド の 作 成 を 行 う 前 に 、 デ バ ッ グ に つ い て 説 明 し ま す 。 デ バ ッ グ を 行 う も っ と も 有 効 的 な 方 法 と し て ブ レ イ ク ポ イ ン ト を 使 う 方 法 が あ り ま す 。 ブ レ イ ク ポ イ ン ト を 使 う と 、 指 定 し た 場 所 で 実 行 中 の プ ロ グ ラ ム を 一 時 停 止 さ せ 、 変 数 の 値 を 調 べ る こ と が で き ま す 。 以 下 に そ の 手 順 を 示 し ま す 。 1)コ ー ド ウ イ ン ド ウ を 開 き 、 ブ レ イ ク ポ イ ン ト を 設 定 し ま す 。 設 定 は コ ー ド ウ イ ン ド ウ の 左 端 を ク リ ッ ク す る と 設 定 さ れ( 茶 色 の 丸 が 表 示 さ れ ま す )、 再 度 ク リ ッ ク す る と 解 除 さ れ ま す 。 2)プ ロ グ ラ ム を 実 行 す る と 、 ブ レ イ ク ポ イ ン ト の 直 前 ま で を 実 行 し て 一 時 停 止 し ま す 。 こ の と き 、 コ ー ド ウ イ ン ド ウ が 表 示 さ れ ま す 。 3)マ ウ ス ポ イ ン タ を 変 数 の 上 に 移 動 さ せ る と 、そ の 変 数 に 入 っ て い る 値 が 表 示 さ れ ま す 。 4)メ ニ ュ ー の 「 実 行 」 → 「 継 続 」 を ク リ ッ ク す る と 、 次 の 行 か ら 実 行 さ れ ま す 。 ま た 、「 F 8 」 を 押 す と ブ レ イ ク ポ イ ン ト の 行 か ら 1 行 ず つ 実 行 す る こ と が で き ま す 。

ま た 、 イ ミ デ ィ エ イ ト ウ イ ン ド ウ 内 で print 変 数 ( 例 え ば print a) を 実 行 し て も 、 そ の 変 数 に 入 っ て い る デ ー タ が 表 示 さ れ ま す 。 ま た 変 数 = ・・・( 例 え ば a = 8 ) を 実 行 す る と 、 こ こ で 入 力 し た デ ー タ を 新 た に 変 数 の 中 に 代 入 す る こ と が で き ま す 。

ブ レ イ ク ポ イ ン ト a = 8

(15)

テ キ ス ト ボ ッ ク ス オ プ シ ョ ン ボ タ ン コ マ ン ド ボ タ ン コ ン ボ ボ ッ ク ス ラ ベ ル フ レ ー ム チ ェ ッ ク ボ ッ ク ス リ ス ト ボ ッ ク ス

B.ユーザーフォームをデザインする

そ れ で は 、 こ れ か ら ユ ー ザ ー フ ォ ー ム の デ ザ イ ン に つ い て 詳 し く 説 明 し ま す 。 ユ ー ザ ー フ ォ ー ム の デ ザ イ ン は VBE に 表 示 さ れ て い る ユ ー ザ ー フ ォ ー ム ウ イ ン ド ウ で 行 い ま す 。新 た に ユ ー ザ ー フ ォ ー ム を 作 成 す る に は 、VBE の メ ニ ュ ー の 中 の「 挿 入 」→「 ユ ー ザ ー フ ォ ー ム 」 を ク リ ッ ク し て 下 さ い 。 そ う す る と 、 ユ ー ザ ー フ ォ ー ム ウ イ ン ド ウ が 表 示 さ れ 、プ ロ ジ ェ ク ト エ ク ス プ ロ ー ラ に「 UserForm1」が 追 加 さ れ ま す 。も し ユ ー ザ ー フ ォ ー ム が 存 在 す る の に 、 そ の ウ イ ン ド ウ が 閉 じ ら れ て い た な ら ば 、 プ ロ ジ ェ ク ト エ ク ス プ ロ ー ラ の 「UserForm1」を ダ ブ ル ク リ ッ ク し て 下 さ い 。 3 . コ ン ト ロ ー ル コ ン ト ロ ー ル と は VBA の ユ ー ザ ー フ ォ ー ム に 配 置 す る 部 品 の こ と で す 。 ユ ー ザ ー フ ォ ー ム ウ イ ン ド ウ が ア ク テ ィ ブ に な る と 、VBE に 右 図 の よ う な ツ ー ル ボ ッ ク ス が 開 か れ ま す 。 こ の 中 に 使 う こ と に 出 来 る コ ン ト ロ ー ル が 表 示 さ れ ま す 。 も し も 、 ツ ー ル ボ ッ ク ス が 開 か れ て い な い と き は 、 メ ニ ュ ー の 「 表 示 」 → 「 ツ ー ル ボ ッ ク ス 」 を 実 行 し て 下 さ い 。 VBA に は 全 部 で 数 10 個 の コ ン ト ロ ー ル が 用 意 さ れ て い ま す 。 そ の 中 で も 代 表 的 な も の が 一 覧 の 中 に 入 っ て い ま す 。 そ の 一 部 に つ い て 説 明 し ま す 。 ラ ベ ル 文 字 を 表 示 す る と き に 使 い ま す テ キ ス ト ボ ッ ク ス 文 字 や 数 字 を キ ー ボ ー ド か ら 入 力 す る と き に 使 い ま す コ マ ン ド ボ タ ン あ る 特 定 の 動 作 を 実 行 す る と き に 使 い ま す オ プ シ ョ ン ボ タ ン 複 数 の 選 択 肢 の な か か ら 一 つ を 選 ぶ と き に 使 い ま す チ ェ ッ ク ボ ッ ク ス 二 者 択 一 の 選 択 を す る と き に 使 い ま す フ レ ー ム 複 数 の コ ン ト ロ ー ル を グ ル ー プ 化 す る と き に 使 い ま す リ ス ト ボ ッ ク ス 複 数 の 項 目 を 表 示 し 、 ユ ー ザ ー に 選 択 さ せ る と き に 使 い ま す コ ン ボ ボ ッ ク ス リ ス ト ボ ッ ク ス と テ キ ス ト ボ ッ ク ス を 組 み 合 わ せ た 機 能 を 持 っ て い ま す

(16)

ユ ー ザ ー フ ォ ー ム ウ イ ン ド ウ に こ れ ら の コ ン ト ロ ー ル を 配 置 す る に は 、 ツ ー ル ボ ッ ク ス で 配 置 す る コ ン ト ロ ー ル を ク リ ッ ク し 、ユ ー ザ ー フ ォ ー ム ウ イ ン ド ウ 上 で ド ラ ッ ク し ま す 。 一 旦 配 置 し た 後 に 、 大 き さ や 位 置 を 修 正 す る こ と も で き ま す 。 コ ン ト ロ ー ル の 中 に は 、 大 き さ の 変 わ ら な い も の や 、 実 行 し た と き に 表 示 さ れ な い 特 別 な コ ン ト ロ ー ル も あ り ま す 。 リ ス ト ボ ッ ク ス や コ ン ボ ボ ッ ク ス に デ ー タ を 登 録 す る に は 以 下 の よ う に AddItem メ ソ ッ ド を 使 い ま す 。 ListBox1.AddItem "ABC" ComboBox1.AddItem "J204 ま だ 詳 し く 説 明 し て い ま せ ん が 、 ワ ー ク シ ー ト の セ ル に 入 力 さ れ て い る デ ー タ を 登 録 す る と き は 、 以 下 の よ う に 行 い ま す

ListBox1.AddItem Cells( 3 , 5 ).Value ComboBox1.AddItem Cells( i , 1 ).Value

セ ル の 指 定 に 変 数 を 使 い 、 繰 り 返 し の 命 令 を 使 う と 、 一 瞬 で セ ル の デ ー タ を 項 目 に 加 え る こ と が で き ま す 。

次 も ま だ 詳 し く 説 明 し て い ま せ ん が 、 VisualBasic で は コ ン ト ロ ー ル を 配 列 に す る こ と は で き ま す が 、 ExcelVBA で は コ ン ト ロ ー ル を 配 列 に す る こ と は で き ま せ ん 。

For i = 1 To 3

Me.Controls("Label" & i).Caption = i Next

For i = 1 To 3

Cells(i, 1).Value = Me.Controls("TextBox" & i).Text Next

For i = 1 To 3

Me.Controls("TextBox" & i).Text = i + 4 Next

(17)

4 . プ ロ パ テ ィ プ ロ パ テ ィ と は 、 各 オ ブ ジ ェ ク ト (ユ ー ザ ー フ ォ ー ム と コ ン ト ロ ー ル )の 特 性 の こ と を い い ま す 。 プ ロ パ テ ィ の 例 と し て 、 オ ブ ジ ェ ク ト の 位 置 や 大 き さ 、 文 字 列 、 色 な ど が あ り ま す 。使 い 方 と し て「 ラ ベ ル( オ ブ ジ ェ ク ト )の 色( プ ロ パ テ ィ )」、「 テ キ ス ト ボ ッ ク ス( オ ブ ジ ェ ク ト ) の 幅 ( プ ロ パ テ ィ )」 の よ う に 使 い ま す 。 (オブジェクト名 ) オ ブ ジ ェ ク ト の 名 前 を 設 定 し ま す( Name プ ロ パ テ ィ と い う ) Alignment コ ン ト ロ ー ル 内 の 文 字 の 配 置 を 設 定 し ま す Autosize 文 字 サ イ ズ を 自 動 的 に 調 節 す る か ど う か を 設 定 し ま す AutoRedraw 描 画 し た 図 を 再 度 表 示 す る か ど う か を 設 定 し ま す BackColor コ ン ト ロ ー ル の 背 景 の 色 を 設 定 し ま す Borderstyle ユ ー ザ ー フ ォ ー ム の 種 類 を 設 定 し ま す Caption 表 示 さ せ る 文 字 を 設 定 し ま す Enabled 利 用 で き る か ど う か を 設 定 し ま す Font 文 字 の フ ォ ン ト を 設 定 し ま す ForeColor 文 字 の 色 な ど を 設 定 し ま す Height オ ブ ジ ェ ク ト の 高 さ を 設 定 し ま す Left オ ブ ジ ェ ク ト の 横 方 向 の 位 置 を 設 定 し ま す MaxLenght 入 力 で き る 文 字 数 の 最 大 値 を 設 定 し ま す Moveable ユ ー ザ ー フ ォ ー ム が 移 動 可 能 か ど う か を 設 定 し ま す Multiline 複 数 行 の 編 集 が 可 能 か ど う か を 設 定 し ま す StartUpPosition ユ ー ザ ー フ ォ ー ム を 最 初 に 表 示 す る 位 置 を 設 定 し ま す Style コ ン ト ロ ー ル の 表 示 を ユ ー ザ 設 定 で 行 う と き に 設 定 し ま す TabIndex フ ォ ー カ ス の 移 動 す る 順 序 を 設 定 し ま す TabStop 「Tab」キ ー で フ ォ ー カ ス さ れ る か ど う か を 設 定 し ま す Text 編 集 領 域 に 表 示 さ せ る 文 字 を 設 定 し ま す TextAlign 文 字 の 配 置 を 設 定 し ま す ToolTipText ツ ー ル チ ッ プ と し て 表 示 さ せ る 文 字 を 設 定 し ま す Top オ ブ ジ ェ ク ト の 縦 方 向 の 位 置 を 設 定 し ま す Value 選 択 状 態 を 設 定 、 取 得 し ま す Visible コ ン ト ロ ー ル を 表 示 す る か ど う か を 設 定 し ま す Width オ ブ ジ ェ ク ト の 幅 を 設 定 し ま す WindowState 実 行 時 の ユ ー ザ ー フ ォ ー ム の 表 示 状 態 を 設 定 し ま す な お 、 そ れ ぞ れ の オ ブ ジ ェ ク ト に 含 ま れ て い る プ ロ パ テ ィ に は 若 干 の 違 い が あ り 、 こ こ で 示 し た プ ロ パ テ ィ が 全 て の オ ブ ジ ェ ク ト に 含 ま れ て い る も の で は あ り ま せ ん 。 ユ ー ザ ー フ ォ ー ム を デ ザ イ ン す る と き に プ ロ パ テ ィ の 初 期 設 定 を し ま す 。 初 期 設 定 は 、 VBE に 表 示 さ れ る プ ロ パ テ ィ ウ イ ン ド ウ を 使 っ て 行 い ま す 。 設 定 を 行 う オ ブ ジ ェ ク ト を ユ ー ザ ー フ ォ ー ム ウ イ ン ド ウ の 中 か ら 選 択 す る か 、 も し く は

(18)

プ ロ パ テ ィ ウ イ ン ド ウ の 一 番 上 に あ る オ ブ ジ ェ ク ト 一 覧 で オ ブ ジ ェ ク ト を 選 択 す る と 、 選 択 さ れ た オ ブ ジ ェ ク ト の プ ロ パ テ ィ が 表 示 さ れ ま す 。 左 側 の プ ロ パ テ ィ を ク リ ッ ク し て 選 択 し 、 右 側 の 項 目 を ク リ ッ ク し て 設 定 し ま す 。 設 定 の 方 法 は 、 項 目 を ク リ ッ ク し て キ ー ボ ー ド か ら 直 接 入 力 す る も の 、 項 目 の 右 側 に 出 て き た ボ タ ン を ク リ ッ ク し て 設 定 す る も の 、 な ど プ ロ パ テ ィ に よ っ て 異 な り ま す 。 ま た 、プ ロ パ テ ィ は プ ロ グ ラ ム 実 行 中 に 設 定( 変 更 ) す る こ と も で き ま す 。 実 行 中 に 設 定 す る に は 、 コ ー ド の 中 に プ ロ パ テ ィ を 設 定 す る 命 令 を 入 れ て お き ま す 。 [オ ブ ジ ェ ク ト ].[プ ロ パ テ ィ ] = [設 定 値 ] の よ う に す る と 、 そ の プ ロ パ テ ィ が 設 定 さ れ ま す 。 例 題 01smpl を 以 下 の よ う に 作 り 替 え て 、 動 作 確 認 を し て 下 さ い 。 [UserForm] 01smpl.xlsm に CommandButton2 を 追 加 CommandButton2.Caption 移 動 [コ ー ド ]

Private Sub CommandButton1_Click() 'CommandButton1 が ク リ ッ ク さ れ た ら

Label1.Top = 30 'Label1 の 位 置 を 上 か ら 30

Label1.Left = 150 'Label2 の 位 置 を 左 か ら 150

Label1.Caption = TextBox1.Text 'Label1 の キ ャ プ シ ョ ン に テ キ ス ト 1

End Sub の 文 字 を 入 れ る

Private Sub CommandButton2_Click() 'CommandButton2 が ク リ ッ ク さ れ た ら

Label1.Top = 50 'Label1 の 位 置 を 上 か ら 50 Label1.Left = 170 'Label1 の 位 置 を 左 か ら 170 End Sub あ ら か じ め Label1 の プ ロ パ テ ィ で Label1.Top や 、 Label1.Left の 初 期 値 を 調 べ て お き ま す 。 コ マ ン ド ボ タ ン 2 が ク リ ッ ク さ れ た ら Label1.Top、 Label.Left は 初 期 値 に 20 を 加 え た 値 に 再 設 定 ( 変 更 ) し ま す 。 コ マ ン ド ボ タ ン 1 が ク リ ッ ク さ れ た ら Label1.Top、Label.Left は 初 期 値 に 戻 し 、さ ら に テ キ ス ト ボ ッ ク ス に 入 力 し た 文 字 を ラ ベ ル に 表 示 し ま す 。 そ れ で は 実 行 し て 「 実 行 」、「 移 動 」 を 交 互 に ク リ ッ ク し て 見 て 下 さ い 。 ク リ ッ ク す る ご と に ラ ベ ル の 位 置 が 動 き ま す 。こ れ は 、Label1.Top = ・・・、Label1.Left = ・・・で そ れ ぞ れ 1 . オ ブ ジ ェ ク ト の 選 択 2 . プ ロ パ テ ィ の 選 択 3 . プ ロ パ テ ィ の 設 定

(19)

の プ ロ パ テ ィ の 設 定 値 を 変 更 し て い る た め で す 。

こ の ほ か に も 、 そ れ ぞ れ の オ ブ ジ ェ ク ト に た く さ ん の プ ロ パ テ ィ が 用 意 さ れ て い ま す 。 い ろ い ろ と 作 り 替 え て 確 認 し て 下 さ い 。

確 認 が 終 わ っ た ら フ ァ イ ル 名 を 02prop.xlsm に 変 更 し て 保 存 し ま す 。 VBE か ら Excel の 画 面 に 移 動 し 、 Excel の ウ イ ン ド ウ か ら 、 メ ニ ュ ー の 「 フ ァ イ ル 」 → 「 名 前 を 付 け て 保 存 」 で フ ァ イ ル 名 を 02prop.xlsm に 変 更 し て フ ァ イ ル の 保 存 を 行 っ て く だ さ い 。 * * * [ プ ロ グ ラ ミ ン グ の テ ク ニ ッ ク ] * * * プ ロ グ ラ ム を 作 る た め の テ ク ニ ッ ク を 紹 介 し ま す 。 ( 1 ) コ ン ト ロ ー ル を コ ピ ー す る 方 法 ( コ ピ ー ア ン ド ペ ー ス ト ) 1)元 と な る コ ン ト ロ ー ル を 選 択 2)メ ニ ュ ー の 「 編 集 」 → 「 コ ピ ー 」 3)ユ ー ザ ー フ ォ ー ム を 選 択 し 、 メ ニ ュ ー の 「 編 集 」 → 「 貼 り 付 け 」 ( 2 ) コ ー ド を コ ピ ー す る 方 法 1)元 と な る コ ー ド の 行 を 選 択 2)メ ニ ュ ー の 「 編 集 」 → 「 コ ピ ー 」 3)挿 入 す る 部 分 へ カ ー ソ ル を 移 動 4)メ ニ ュ ー の 「 編 集 」 → 「 貼 り 付 け 」 こ の と き の「 編 集 」→「 コ ピ ー 」、「 編 集 」 → 「 貼 り 付 け 」 は 、 ツ ー ル バ ー の コ ピ ー ボ タ ン や 貼 り 付 け ボ タ ン 、 シ ョ ー ト カ ッ ト の 「 Ctrl」 + 「 C」、「 Ctrl」 + 「 V」 を 使 っ て も か ま い ま せ ん 。 ( 3 ) 長 い コ ー ド を 複 数 行 に 分 割 す る 方 法 ス ペ ー ス と ア ン ダ ー ス コ ア ( _) を 使 っ て 分 割 し ま す 。 Data1.RecordSource = _

"SELECT * FROM Titles, Publishers " _

& "WHERE Publishers.PubId = Titles.PubID" _ & "AND Publishers.State = 'CA'"

( 4 ) 1 行 に 複 数 の 文 を 入 れ る 方 法

複 数 の 文 を コ ロ ン ( : ) で 区 切 り ま す

Label1.Top = 30 : Label1.Left = 150 : Label1.Caption = TextBox1.Text ( 5 ) コ ー ド に コ メ ン ト を 入 力 す る 方 法

コ メ ン ト の 前 に ア ポ ス ト ロ フ ィ ー (') を 入 れ ま す 。 例 : ' メ ッ セ ー ジ の 表 示 TextBox1.Text = "Hi!" ' テ キ ス ト ボ ッ ク ス に メ ッ セ ー ジ を 表 示 し ま す

(20)

C.実際の動作を決める

こ こ か ら は 、実 際 の 動 作 を 決 め る コ ー ド に つ い て 説 明 し ま す 。コ ー ド は「 イ ベ ン ト 」、「 オ

ブ ジ ェ ク ト 」、「 プ ロ パ テ ィ 」、「 メ ソ ッ ド 」、「 ス テ ー ト メ ン ト 」、「 関 数 」、「 演 算 子 」 な ど を 組 み 合 わ せ て 作 成 し ま す 。

5 . イ ベ ン ト

Windows の プ ロ グ ラ ム で は 、操 作 者 や Windows( OS)が オ ブ ジ ェ ク ト や ア プ リ ケ ー シ ョ ン ソ フ ト に 対 し て 何 ら か の 働 き か け を す る こ と に よ っ て 、 処 理 が 実 行 し ま す 。 こ の 働 き か け の こ と を イ ベ ン ト と い い ま す 。 以 下 に 、 よ く 使 わ れ る イ ベ ン ト を 示 し ま す 。 Activate ユ ー ザ ー フ ォ ー ム が ア ク テ ィ ブ に さ れ る Click オ ブ ジ ェ ク ト が ク リ ッ ク さ れ る Dblclick オ ブ ジ ェ ク ト が ダ ブ ル ク リ ッ ク さ れ る Initialize ユ ー ザ ー フ ォ ー ム が 開 く Terminate ユ ー ザ ー フ ォ ー ム が 閉 じ る MouseUp マ ウ ス の 左 右 の ボ タ ン が 離 さ れ る MouseDown マ ウ ス の 左 右 の ボ タ ン が 押 さ れ る MouseMove マ ウ ス が オ ブ ジ ェ ク ト 上 で 動 く コ ー ド 作 成 に お け る イ ベ ン ト の 指 定 は 、コ ー ド ウ イ ン ド ウ 左 上 で コ ン ト ロ ー ル を 選 択 し 、 右 上 で イ ベ ン ト を 選 択 す る と 、 イ ベ ン ト プ ロ シ ー ジ ャ が 作 ら れ ま す 。 こ の 時 、 そ れ ぞ れ を 選 択 す る 毎 に イ ベ ン ト プ ロ シ ー ジ ャ が つ く ら れ る の で 、 不 要 な も の は 削 除 し て お き ま す 。 例 題 02prop を 以 下 の よ う に 作 り 替 え て 、 動 作 確 認 を し て 下 さ い 。 [UserForm] 02prop.xlsm を そ の ま ま 使 用 [コ ー ド ]

Private Sub Label1_DblClick(ByVal ・・・) 'Label1 が ダ ブ ル ク リ ッ ク さ れ た ら

Label1.Top = 30

Label1.Left = 150

Label1.Caption = TextBox1.Text

End Sub

Private Sub UserForm_Layout() 'UserForm の 位 置 が 変 わ っ た ら

Label1.Top = 50 Label1.Left = 170 End Sub Label1 が ダ ブ ル ク リ ッ ク さ れ る と テ キ ス ト ボ ッ ク ス の 文 字 が 表 示 さ れ ま す 。ま た 、ユ ー ザ ー フ ォ ー ム の 位 置 が 変 わ る と 表 示 さ れ た 文 字 が 移 動 し ま す 。 確 認 し て 下 さ い 。 確 認 が 終 わ っ た ら フ ァ イ ル 名 を 03evnt.xlsm に 変 更 し て 保 存 し て 下 さ い 。

(21)

6 . メ ソ ッ ド と ス テ ー ト メ ン ト 6 . 1 メ ソ ッ ド Windows の プ ロ グ ラ ム で は 、 様 々 な オ ブ ジ ェ ク ト ( ユ ー ザ ー フ ォ ー ム 、 コ ン ト ロ ー ル 、 ワ ー ク ブ ッ ク 、 ワ ー ク シ ー ト な ど ) に 動 作 を さ せ る こ と が で き ま す 。 こ の よ う な 命 令 を メ ソ ッ ド と い い ま す 。 メ ソ ッ ド に よ る オ ブ ジ ェ ク ト の 動 作 は [オ ブ ジ ェ ク ト ].[メ ソ ッ ド ] の よ う に 記 述 し ま す 。 ワ ー ク シ ー ト や ワ ー ク ブ ッ ク な ど に 対 す る メ ソ ッ ド は 多 く 用 意 さ れ て い ま す が 、 ユ ー ザ ー フ ォ ー ム 、お よ び 配 置 す る オ ブ ジ ェ ク ト に 対 し て の メ ソ ッ ド は あ ま り 多 く は あ り ま せ ん 。 代 表 的 な も の を 以 下 に 示 し ま す 。 Copy 選 択 さ れ た も の を コ ピ ー す る Cut 選 択 さ れ た も の を 切 り 取 る Pest コ ピ ー さ れ た も の 、 ま た は 切 り 取 ら れ た も の を 貼 り 付 け る Move Setfocus Show 指 定 さ れ た ユ ー ザ ー フ ォ ー ム を 表 示 す る Hide 指 定 さ れ た ユ ー ザ ー フ ォ ー ム を 非 表 示 に す る 6 . 2 ス テ ー ト メ ン ト Windows の プ ロ グ ラ ム で オ ブ ジ ェ ク ト に 関 係 し な い そ の 他 の コ マ ン ド を ス テ ー ト メ ン ト と い い ま す 。 以 下 に 良 く 使 わ れ る も の を 示 し ま す 。 そ の 中 で も 特 に 重 要 な も の は 後 ほ ど 改 め て 説 明 し ま す 。 Option Explicit す べ て の 変 数 の 宣 言 を 強 制 す る Dim 変 数 を 宣 言 す る Private 変 数 を 宣 言 す る Const 定 数 を 宣 言 す る If...Then...Else 条 件 に 応 じ て を 処 理 を 分 岐 す る Select Case 条 件 に 応 じ て 複 数 の 選 択 肢 に 処 理 を 分 岐 す る For...Next 回 数 を 指 定 し 、 指 定 し た 回 数 だ け 処 理 を 繰 り 返 す Do...Loop 条 件 を 指 定 し 、 条 件 に 応 じ て 処 理 を 繰 り 返 す On Error エ ラ ー が 発 生 し た と き に 、 処 理 を 実 行 す る Exit プ ロ シ ー ジ ャ ま た は ブ ロ ッ ク を 抜 け 出 す End プ ロ シ ー ジ ャ ま た は ブ ロ ッ ク を 終 了 す る Sub Sub プ ロ シ ー ジ ャ を 作 成 す る Function Function プ ロ シ ー ジ ャ を 作 成 す る

Call Sub プ ロ シ ー ジ ャ や Function プ ロ シ ー ジ ャ な ど を 実 行 す る

Load、 UnLoad フ ォ ー ム を メ モ リ に 読 み 込 む

Date 現 在 の シ ス テ ム の 日 付 を 設 定 し ま す 。

Time シ ス テ ム の 時 刻 を 設 定 し ま す 。

(22)

フ ォ ー ム 2 が 開 か れ て い る の で 、 フ ォ ー ム 1 や ワ ー ク シ ー ト を ア ク テ ィ ブ に す る こ と は 出 来 な い 6 . 3 ユ ー ザ ー フ ォ ー ム の 表 示 Windows の プ ロ グ ラ ム で は い く つ か の ウ イ ン ド ウ が 集 ま っ て 一 つ の ア プ リ ケ ー シ ョ ン に な る こ と が ほ と ん ど で す 。VBA で 作 ら れ た ア プ リ ケ ー シ ョ ン で も 同 様 で 、一 つ の プ ロ ジ ェ ク ト で 複 数 の ユ ー ザ ー フ ォ ー ム を 持 つ こ と が で き ま す 。 あ る ユ ー ザ ー フ ォ ー ム か ら 別 の ユ ー ザ ー フ ォ ー ム を 開 い た り 閉 じ た り す る の に 、以 下 の メ ソ ッ ド や プ ロ パ テ ィ を 使 い ま す 。

Load UserFormN UserFormN の デ ー タ を 読 み 込 み ま す

Unload UserFormN UserFormN の デ ー タ を 消 去 し ま す

UserFormN.Show UserFormN を 表 示 し ま す UserFormN.Hide UserFormN を 非 表 示 に し ま す 新 し い ユ ー ザ ー フ ォ ー ム を 開 く 場 合 、 ま ず Load で ユ ー ザ ー フ ォ ー ム の デ ー タ を メ モ リ ー に 読 み 込 み 、 次 に Show メ ソ ッ ド で そ の ユ ー ザ ー フ ォ ー ム を 画 面 に 表 示 さ せ ま す 。 ユ ー ザ ー フ ォ ー ム を 画 面 か ら 消 す と き は 、 Hide メ ソ ッ ド を 使 っ て 非 表 示 に し ま す 。 も ち ろ ん 、 Unload で メ モ リ ー に 読 み 込 ん だ ユ ー ザ ー フ ォ ー ム デ ー タ を 消 去 し て も 、 ユ ー ザ ー フ ォ ー ム を 画 面 か ら 消 す こ と が 出 来 ま す 。 こ こ で 、 注 意 し な け れ ば な ら な い こ と は 、 プ ロ グ ラ ム を 終 わ ら せ る と き は 読 み 込 ん だ ユ ー ザ ー フ ォ ー ム の デ ー タ を メ モ リ ー か ら 消 去 し な け れ ば な ら な い こ と で す 。 Unload せ ず Hide で 画 面 を 非 表 示 に し た 状 態 で プ ロ グ ラ ム を 終 了 さ せ る と 、見 た 目 は 終 わ っ て い て も 実 際 に は 終 わ っ て い な い 状 態 に な り ま す 。 最 後 は 必 ず Unload し て 下 さ い 。 ExcelVBA の ユ ー ザ ー フ ォ ー ム は 、 そ の 初 期 設 定 と し て 、 ユ ー ザ ー フ ォ ー ム が 一 旦 開 か れ る と 、 そ の ユ ー ザ ー フ ォ ー ム が 閉 じ な い 限 り 、 別 の ユ ー ザ ー フ ォ ー ム や ワ ー ク シ ー ト に 移 る こ と が 出 来 な い よ う に な っ て い ま す 。 こ れ は 、 ユ ー ザ ー フ ォ ー ム を 実 行 中 に ワ ー ク シ ー ト の デ ー タ を 書 き 換 え る こ と 出 来 な い よ う に す る た め で す 。 こ の 設 定 を 解 除 す る に は 、 Userform の ShowModal プ ロ パ テ ィ を False に す る と 、 他 の ユ ー ザ ー フ ォ ー ム に 移 る こ と が 出 来 ま す 。 メ モ リ ー ハードディスク 画 面 Load Unload Hide Show

(23)

例 題 次 の プ ロ グ ラ ム を 作 り 、 そ の 動 作 確 認 を し て 下 さ い 。 ユ ー ザ ー フ ォ ー ム を 新 た に 追 加 す る と き は 、 メ ニ ュ ー の 「 挿 入 」 → 「 ユ ー ザ ー フ ォ ー ム 」 で 新 し い ユ ー ザ ー フ ォ ー ム ( UserForm2) が プ ロ ジ ェ ク ト に 追 加 さ れ ま す 。 [UserForm1] 02prop.xlsm を 修 正 CommandButton1.caption 実 行 CommandButton2.caption フ ォ ー ム 2 ShowModal false [UserForm2] Label1 CommandButton1.caption 実 行 CommandButton2.caption フ ォ ー ム 1 ShowModal false [コ ー ド :UserForm1]

Private Sub CommandButton1_Click() Label1.Caption = TextBox1.Text End Sub

Private Sub CommandButton2_Click() Load UserForm2

UserForm2.Show End Sub

[コ ー ド : UserForm2]

Private Sub CommandButton1_Click() Label1.Caption

=UserForm1.TextBox1.Text End Sub

Private Sub CommandButton2_Click() 注 : 表 示 の 都 合 上 2 行 に 分 け て い ま す UserForm2.Hide Unload UserForm2 End Sub UserForm1 の「 実 行 」を ク リ ッ ク す る と テ キ ス ト ボ ッ ク ス に 入 力 し た 文 字 が 表 示 さ れ ま す 。「 フ ォ ー ム 2 」 を ク リ ッ ク す る と 、 ま ず 、 Load で 新 し い UserForm2 を メ モ リ ー に 読 み 込 み 、 Show で そ の ユ ー ザ ー フ ォ ー ム を 表 示 し ま す 。 UserForm2 の「 実 行 」を ク リ ッ ク す る と UserForm1 の テ キ ス ト ボ ッ ク ス で 入 力 し た 文 字 が 表 示 さ れ ま す 。 別 の ユ ー ザ ー フ ォ ー ム で 設 定 し た オ ブ ジ ェ ク ト の プ ロ パ テ ィ を 使 う と き は 、先 に フ ォ ー ム を 指 定 し て か ら 、オ ブ ジ ェ ク ト の プ ロ パ テ ィ を 指 定 し ま す 。「 フ ォ ー ム

1 」 を ク リ ッ ク す る と Hide で UserForm2 を 画 面 か ら 消 し 、 Unload で メ モ リ ー か ら ユ ー ザ ー フ ォ ー ム 2 の デ ー タ を 消 去 し ま す 。

動 作 確 認 が 終 わ っ た ら 、プ ロ グ ラ ム を 保 存 し ま す 。フ ァ イ ル 名 を 04show.xlsm に し て 保 存 し て 下 さ い 。

(24)

7 . 変 数 と 変 数 宣 言 コ ン ピ ュ ー タ で 数 値 計 算 を さ せ る と き は 、 変 数 と 呼 ば れ る 記 号 を 使 い ま す 。 こ の 変 数 に 数 値 を 入 れ て 様 々 な 計 算 を さ せ ま す 。 も ち ろ ん 、 変 数 を 使 わ ず に 計 算 を す る こ と も で き ま す が 、 変 数 を 使 っ た 方 が 、 数 値 の 変 更 や 、 コ ー ド の 変 更 が 生 じ た と き な ど 容 易 に 対 応 す る こ と が で き ま す 。 7 . 1 変 数 VBA で 変 数 を 使 用 す る に は 、基 本 的 に は そ の 変 数 が ど の よ う な も の か を 指 定 し な く て は な り ま せ ん 。 こ の 指 定 の こ と を 「 変 数 の 宣 言 」 と 言 い ま す 。 変 数 の 宣 言 と は 、 そ の 変 数 の 型 と 変 数 の 使 用 範 囲 ( ス コ ー プ ) を 指 定 す る こ と で す 。 変 数 に は い く つ か の 型 (種 類 )が あ り ま す 。VBA を は じ め 、多 く の プ ロ グ ラ ム 言 語 で は 、こ れ ら の 変 数 を 使 用 す る 前 に 、「 そ の 変 数 が ど の 型 で あ る の か 」、 ま た 同 時 に 「 そ の 変 数 が プ ロ グ ラ ム の ど の 部 分 で 使 う の か 」 を 宣 言 し ま す 。 変 数 の 宣 言 は 以 下 に 示 す よ う に 行 い ま す 。 [使 用 範 囲 ] [変 数 名 ] As [型 ] 例 : Private abc As Byte

変 数 abc は バ イ ト 型 と し て フ ォ ー ム 全 体 で 使 用 し ま す 変 数 の 宣 言 は コ ー ド の 中 で 行 い ま す 。 宣 言 す る 場 所 は 宣 言 領 域 ( コ ー ド ウ イ ン ド ウ 先 頭 の ( General) の 部 分 ) と プ ロ シ ー ジ ャ の 先 頭 部 分 の 二 つ が あ り ま す 。 ど の 部 分 で 宣 言 す る か に よ っ て 、 使 用 す る コ マ ン ド や 、 使 用 範 囲 が 異 な り ま す 。 General イ ベ ン ト プ ロ シ ー ジ ャ 1 イ ベ ン ト プ ロ シ ー ジ ャ 2 イ ベ ン ト プ ロ シ ー ジ ャ 3

(25)

( 1 ) 変 数 の 使 用 範 囲 の 指 定 変 数 の 使 用 と し て 、 プ ロ ジ ェ ク ト 全 体 、 宣 言 し た ユ ー ザ ー フ ォ ー ム 全 体 、 宣 言 し た プ ロ シ ー ジ ャ 内 が あ り ま す 。 変 数 宣 言 の ス テ ー ト メ ン ト と し て 以 下 の も の を 使 い ま す 。 Public プ ロ ジ ェ ク ト 全 体 で 変 数 を 使 用 す る Private 宣 言 し た ユ ー ザ ー フ ォ ー ム 全 体 で 変 数 が 使 用 で き る Dim 宣 言 し た ユ ー ザ ー フ ォ ー ム 全 体 、 も し く は 宣 言 し た プ ロ シ ー ジ ャ 内 で 変 数 が 使 用 で き る 。 Static 宣 言 し た プ ロ シ ー ジ ャ 内 で 変 数 が 使 用 で き る 。 1)プ ロ ジ ェ ク ト 全 体 で 使 う こ と の で き る 変 数 宣 言 Public を 使 い 、標 準 モ ジ ュ ー ル 、ま た は ユ ー ザ ー フ ォ ー ム の 宣 言 領 域 で 宣 言 し ま す 。標 準 モ ジ ュ ー ル で 宣 言 し た 変 数 a は 、ど の ユ ー ザ ー フ ォ ー ム で も 変 数 名 が a の ま ま で 使 う こ と が で き る ま す 。 一 方 、 UserFormN の 宣 言 領 域 で 宣 言 し た 変 数 a は 、 ほ か の ユ ー ザ ー フ ォ ー ム で そ の 変 数 を 使 う と き は 、 変 数 名 を UserFormN.a に し て 使 い ま す 。 2)ユ ー ザ ー フ ォ ー ム 全 体 で 使 う こ と の で き る 変 数 宣 言 Dim ま た は Private を 使 い 、ユ ー ザ ー フ ォ ー ム の 宣 言 領 域 で 宣 言 し ま す 。宣 言 し た フ ォ ー ム 内 で 使 用 で き ま す 。 こ の と き 、 別 の ユ ー ザ ー フ ォ ー ム に 移 っ て も 変 数 は ク リ ア さ れ ま せ ん 。 3)イ ベ ン ト プ ロ シ ー ジ ャ で 使 う こ と の 出 来 る 変 数 宣 言 Dim ま た は Static を 使 い 、イ ベ ン ト プ ロ シ ー ジ ャ の 中 で 宣 言 し ま す 。宣 言 し た イ ベ ン ト プ ロ シ ー ジ ャ で の み 使 用 で き ま す 。Dim で 宣 言 し た 変 数 は イ ベ ン ト プ ロ シ ー ジ ャ か ら 抜 け る と 変 数 は ク リ ア さ れ ま す 。 Static で 宣 言 し た 変 数 は イ ベ ン ト プ ロ シ ー ジ ャ か ら 出 て も 、 変 数 は ク リ ア さ れ ま せ ん 。 ( 2 ) 変 数 の デ ー タ 型 の 指 定 変 数 の 型 と し て 様 々 な も の が あ り ま す が 、こ こ で は 良 く 使 わ れ る も の を 以 下 に 示 し ま す 。

Boolean(ブ ー リ ア ン 型 ) True、 False

Byte(バ イ ト 型 ) 0~ 255

Integer(整 数 型 ) -32,768~ 32,767

Long(長 整 数 型 ) -2,147,483,648~ 2,147,483,647

Single(単 精 度 浮 動 小 数 点 数 型 ) 負 の 値 -3.402823E38~ -1.401298E-45

正 の 値 1.401298E-45~ 3.402823E38 String(文 字 列 型 ) 最 大 約 2 0 億 文 字 (半 角 ) Date(日 付 型 ) 年 月 日 時 分 秒 ****/**/** **: **: ** Variant( バ リ ア ン ト 型 ) VBA が 自 動 的 に い ず れ か の 型 で 扱 う * バ リ ア ン ト 型 は 、 そ の 変 数 が ど の 型 で 宣 言 さ れ て い る の を ユ ー ザ ー は 判 断 す る こ と が で き な い 。 そ の た め 、 思 わ ぬ エ ラ ー が 出 た り 処 理 速 度 が 遅 く な っ た り す る の で 、 極 力 避 け る よ う に す る 。

(26)

( 3 ) 複 数 の 変 数 の 宣 言

複 数 の 変 数 の 宣 言 は 、 以 下 の よ う に コ ン マ で 区 切 る こ と に よ り 1 行 で 行 な え ま す 。 Dim a As Integer , b As Long , c As String

な お 、 以 下 の よ う に 宣 言 す る と 、 最 後 の 変 数 だ け が 指 定 し た 型 で 宣 言 さ れ た こ と に な り 、 そ れ 以 外 は 自 動 的 に バ リ ア ン ト 型 と し て 扱 わ れ ま す 。 Dim a , b , c As String 変 数 を 使 う こ と だ け を 考 え る の な ら ば 、「 Public」を 使 っ て プ ロ ジ ェ ク ト 全 体 で 使 え る よ う に 宣 言 す る と 簡 単 に は な り ま す 。 し か し 、 処 理 速 度 な ど を 考 え る と 必 要 最 小 限 度 の 範 囲 で 宣 言 を し た 方 が 望 ま し い で し ょ う 。 VBA の 設 定 に よ っ て は 宣 言 を し な く て も 変 数 を 使 う こ と は で き ま す が 、こ の 場 合 、自 動 的 に Variant 型 で 扱 わ れ る の で 、 宣 言 は し て お い た 方 が 望 ま し い で し ょ う 。 コ ー ド の 先 頭 に 「 Option Explict」 を 入 れ る と 、 宣 言 し て い な い 変 数 は 使 え な い よ う に な り ま す 。 も し く は 、 メ ニ ュ ー の 「 ツ ー ル 」 → 「 オ プ シ ョ ン 」 → 「 編 集 」 → 「 変 数 の 宣 言 を 強 制 す る 」 の チ ェ ッ ク を 入 れ る こ と に よ り 、 宣 言 し な け れ ば 変 数 が 使 え な い よ う に な り ま す ( 自 動 的 に Option Explict が 入 り ま す )。 こ の フ ォ ー ム 内 で 有 効 プ ロ ジ ェ ク ト 内 の 全 て で 有 効 こ の イ ベ ン ト プ ロ シ ー ジ ャ ー 内 で 有 効

(27)

例 題 01smpl.xlsm を 使 い 、 次 の プ ロ グ ラ ム を 作 り 、 変 数 の 型 の 動 作 確 認 を し て 下 さ い 。 [UserForm1] 01smpl.xlsm を そ の ま ま 使 用 [コ ー ド ] Dim a As ← 変 数 の 型 を 変 え て 、 デ ー タ と 表 示 の 関 係 を 確 認 す る a = TextBox1.Text Label1.Caption = a

変 数 a の 宣 言 を Integer、 Long、 Single、 Double、 Boolean、 Date、 String な ど で 行 い 、 入 力 し た デ ー タ と 表 示 さ れ る デ ー タ を 比 較 し て く だ さ い 。 a を Integer で 宣 言 し 、テ キ ス ト ボ ッ ク ス に 小 数( 例 え ば 123.456)を 入 力 し て も 、変 数 a に は そ の 整 数 部 分 が 入 力 さ れ ま す 。こ れ は 、ブ レ イ ク ポ イ ン ト を Label1.Caption = a の と こ ろ で 設 定 し 、 プ ロ グ ラ ム を 一 時 停 止 さ せ る と 、 変 数 に 格 納 さ れ た デ ー タ を 確 認 す る こ と が で き ま す 。 ま た 、 テ キ ス ト ボ ッ ク ス に 型 の 範 囲 を 超 え る 大 き な 数 値 を 入 力 す る と ( 例 え ば 12345678)、「 オ ー バ ー フ ロ ー 」の エ ラ ー が 出 ま す 。ま た テ キ ス ト ボ ッ ク ス に 型 が 一 致 し な い デ ー タ を 入 力 す る と ( 例 え ば A B C 、 1964/04/11 な ど )、「 型 が 一 致 し ま せ ん 」 の エ ラ ー が 出 ま す 。 変 数 宣 言 の 型 と 、 代 入 す る デ ー タ の 関 係 を 調 べ て み ま す 。 本 来 で あ れ ば 、 型 は 完 全 に 一 致 し な け れ ば エ ラ ー と な り ま す が 、VBA は エ ラ ー と な る 組 み 合 わ せ で も 、使 え る も の が あ り ま す 。 変 数 の 型 と し て 「 整 数 」、「 小 数 」、「 ブ ー ル 」、「 日 付 」、「 文 字 列 」 が あ り 、 代 入 す る デ ー タ と し て「 整 数 (123)」、「 小 数 (123.456)」、「 ブ ー ル (True、False)」、「 日 付 (2012/10/10)」、 「 文 字 列 (ABC)」が あ り ま す 。こ れ ら の 組 み 合 わ せ で 調 べ て み る と 、以 下 の 表 の よ う に な り ま し た 。 デ ー タ \ 宣 言 「 整 数 」 「 小 数 」 「 ブ ー ル 」 「 日 付 」 「 文 字 列 」 「 整 数 」 可 or Over 可 or Over 可 (*) 日 に ち 可 (***) 「 小 数 」 整 数 or Over 可 or Over 可 (*) 日 に ち 、 時 間 可 (***) 「 ブ ー ル 」 型 不 一 致 型 不 一 致 可 型 不 一 致 可 (***) 「 日 付 」 型 不 一 致 型 不 一 致 型 不 一 致 可 可 (***) 「 文 字 列 」 型 不 一 致 型 不 一 致 型 不 一 致 一 部 可 (**) 可 (***)

「 Over」 は オ ー バ ー フ ロ ー Long や Double で 対 応

* False の と き は 「 0」、 True の と き は 「 111・・・1」( Intger の と き は 、 補 数 で -1) ** 「 ○ ○ 年 ○ 月 ○ 日 」 は 可

(28)

例 題 次 の プ ロ グ ラ ム を 作 り 、 変 数 の 使 用 範 囲 の 動 作 確 認 を し て 下 さ い 。 [UserForm1] Label1 Label2 Label3 Label4 CommandButton1.Caption dim CommandButton2.Caption static CommandButton3.Caption private CommandButton4.Caption public CommandButton5.Caption form2 [UserForm2] Label1 Label2 Label3 Label4 CommandButton1.Caption dim CommandButton2.Caption static CommandButton3.Caption private CommandButton4.Caption public CommandButton5.Caption form1 [コ ー ド : UserForm1] Option Explicit '変 数 の 宣 言 を し な い と 変 数 が 使 え な い 設 定 Private b As Long 'c は 長 整 数 型 と し て UserForm1 内 で 有 効 Public c As Long 'd は 長 整 数 型 と し て プ ロ ジ ェ ク ト 全 体 で 有 効

Private Sub UserForm_Initialize() 'UserForm が 立 ち 上 が る と

b = 50 c = 100 End Sub

Private Sub UserForm_Terminate() 'UserForm が 終 了 す る と

Unload UserForm2 'UserForm2 も 終 了 さ せ る

End Sub

Private Sub UserForm_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)

'UserForm 上 で マ ウ ス が 動 く と Label4.Caption = c

End Sub

Private Sub CommandButton1_Click()

Dim a As Long 'a は 長 整 数 型 と し て こ の プロシージャ内 で 有 効

a = a + 1

Label1.Caption = a End Sub

Private Sub CommandButton2_Click()

Static a As Long 'b は 長 整 数 型 と し て こ の プロシージャ内 で 有 効

a = a + 5

Label2.Caption = a End Sub

(29)

Private Sub CommandButton3_Click() b = b + 10

Label3.Caption = b End Sub

Private Sub UserForm_DblClick(ByVal Cancel As MSForms.ReturnBoolean) b = b + 10

Label3.Caption = b End Sub

Private Sub CommandButton4_Click() c = c + 20

Label4.Caption = c End Sub

Private Sub CommandButton5_Click() Load UserForm2

UserForm2.Show End Sub

[コ ー ド : UserForm2] Option Explicit

Private b As Long 'c は 長 整 数 型 と し て UserForm2 内 で 有 効

Private Sub UserForm_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)

'UserForm 上 で マ ウ ス が 動 く と

Label4.Caption = UserForm1.d 'Label4 の Caption に UserForm1 の d を 代 入 End Sub

Private Sub CommandButton1_Click()

Dim a As Long 'a は 長 整 数 型 と し て こ の プロシージャ内 で 有 効

a = a + 1

Label1.Caption = a End Sub

Private Sub CommandButton2_Click()

Static a As Long 'b は 長 整 数 型 と し て こ の プロシージャ内 で 有 効

a = a + 5

Label2.Caption = a End Sub

Private Sub CommandButton3_Click() b = b + 10

Label3.Caption = b End Sub

Private Sub UserForm_DblClick(ByVal Cancel As MSForms.ReturnBoolean) b = b + 10

Label3.Caption = b End Sub

Private Sub CommandButton4_Click() UserForm1.c = UserForm1.c + 20 Label4.Caption = UserForm1.c End Sub

参照

関連したドキュメント

これは基礎論的研究に端を発しつつ、計算機科学寄りの論理学の中で発展してきたもので ある。広義の構成主義者は、哲学思想や基礎論的な立場に縛られず、それどころかいわゆ

つの表が報告されているが︑その表題を示すと次のとおりである︒ 森秀雄 ︵北海道大学 ・当時︶によって発表されている ︒そこでは ︑五

このような情念の側面を取り扱わないことには それなりの理由がある。しかし、リードもまた

えて リア 会を設 したのです そして、 リア で 会を開 して、そこに 者を 込 ような仕 けをしました そして 会を必 開 して、オブザーバーにも必 の けをし ます

子どもたちは、全5回のプログラムで学習したこと を思い出しながら、 「昔の人は霧ヶ峰に何をしにきてい

 学年進行による差異については「全てに出席」および「出席重視派」は数ポイント以内の変動で

二院の存在理由を問うときは,あらためてその理由について多様性があるこ

このエフピコでのフロアホッケー 活動は、エフピコグループの社員が 障がいの有無を超えて交流すること を目的として、 2010