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

• Sample5a.xlsm

7

Sample4.xlsm

• 入力ミスに気づかず,計算を誤る可能性もある

9

• 一旦,Excelを閉じ,新たに新規でExcelを起動してください

11

12

• Sample4_変数宣言.xlsm を開いてください

13

• マクロ内で使う変数名を,事前に「宣言」する

• 「Dim 変数名」と書き加えるだけ

再び, N_02 を

N_O2 にする

0(ゼロ)を O (オー)に

15

• 間違った変数名を入力したときに,「宣言されてい ない変数が使われている」と指摘してくれる仕掛け

16

5.「条件分岐」と「繰り返し」

マクロ全体の制御

1

命令文の構文

セルやシートの操作 - オブジェクト式の構文で可能

「マクロの記録」で作成することが可能

しかし

同じ処理を繰り返す(繰り返し)

もし,A1セルが△△ならば,□□を実行し,△△でな ければ○○を実行(条件分岐)

ボタンを設置して,セルの値をクリアする(フォームの 利用)

上記は,マクロ全体を取り扱う操作

マクロ全体を制御するとき-ステートメントの構文

3

「条件分岐」

4

繰り返し

5

• 実習 5‐1

• Sample5._ 元データ x l sX を起動してください

(参考:完成品は Sample5.x l sm )

条件により処理をかえる

• ExcelにはIF関数がある

IF関数とおなじ働き

VBA: 「IF」ステートメント

7

基本の2パターン

書式(1)

条件が正しかったときだけ処理を実行し、条件が正しくなかったときは何も実 行しない

書式(2)

条件が正しくなかったときにも別の処理を行う

8

• 50点以上 「合格」

• それ以外 「不合格」

9

• 「得点が50点以上なら『合格』、そうでなければ『不 合格』と入力」

• 条件,処理1,処理2を考える

• B2セルの値が50以上なら、C2セルの値に『合格』

を代入し、そうでなかったらC2セルの値に『不合 格』と代入する」

• 条件 : B2セルの値が50以上

• 処理1 : C2セルの値に『合格』を代入

• 条件の書き方

11

• 条件 : B2セルの値が50以上

12

• ここまで,作成してみましょう

13

15

16

記述するときのコツ

• 「マクロは、分かっているところから書く」

×「上から下に向かつて書き進める」

• 例えば、Ifステートメントの書式

• 1行目に条件を書いたら、いずれは3行自の

「Else」と、5行目の「EndIf」を書くことになる。

• そこで、実行したい処理を書く前でに、先に

「Else」と「EndIf」を書いてしまうとよい。

17

分かっているところから書くことの利点

• 「書き忘れを防げる」

実行したい処理を考えているうちに、Ifステートメントの内部で あることを忘れて「EndIf」を書き忘れるケースは多い。すると、

マクロ全体の流れがおかしくなり、トラブルのもと。

• 「全体の構造が分かりやすくなる」

条件分岐の範囲などが明確になるので、マクロの全体像を把 握しやすくなる。

• マクロを作るときは、「どこで何をするのか」という全体像 を意識して、最初はラフに作り、徐々に細部を作り込ん でいくようにした方がよい。

• 処理1 : C2セルの値に『合格』を代入

• 処理2 : C2セルの値に『不合格』と代入

Cells(2, 3).Value = " 合格 Cells(2, 3).Value = " 不合格 "

19

• 実際に作成してみてください

20

21

繰り返し構文で連続処理

• 繰り返し処理を実現するステートメント

• 「For‐Next」

代表格で、マクロの重要な構文

• セルを、上から順番に、あるいは左から順番に操作する ことで、多数のデ-タを連続して処理したいケース

マクロでは「Cells(行,列)」を使うことで、行と列の番号(数字)でセルを指定できる。

そこで、この行または列に「1ずつ増える数字」を順番に指定できれば、操作可能。

23

• 「For –Next」の構文

• 「For」の行と「Next」の行の聞を、指定した回数だ け繰り返し実行

• 指定した変数の値を、「初期値」から「終了値」にな るまで「1」ずつ増加

24

• 変数(「i」)の中身を「1」ずつ増やしながら、初期値から 終了値まで繰り返す。

「For i= 1 To 3」の場合

• 「i」を1から3まで増やしながら3回処理を繰り返す

25

• 実際に作成してみましょう(Sample1の下に追加してくださ い)

27

28

• Sample2を最下部にコピーし,Sub Sample3に変更し,

「Cells(i, 5).Value = “VBA”」の部分を削除し,Samaple1の必 要部分をコピーする

• 繰り返し処理できるように変数iに置き換え,5回繰り返す

29

• 見やすく作 ることもポ イント

31

「ステップ実行」

• 「For –Next」を使ったマクロでは、指定した回数の処 理が一気に実行される。

• この間で何か問題が発生したり、思うような処理が行 えなかったりしたときには、「ステップ実行」で動作を 確認することができる。

• マクロを1行ずつ実行して、処理の経過を確認す

• るための機能。

32

• 「ステップ実行」を行うには、マクロの中にカーソルを置 いて[F8]キーを押す。

• マクロの先頭行が黄色く反転する。

• 黄色く反転した行は、次に[F8]キーを押したときに実行 される行。

• [F8]キーを押すたびにl行ずつ実行できる。

• どのコードでどんな処理が実行されるかを1つずつ確認 できる。

変数を宣言した「Dim」の行など、止まらない行もある。

33

「デバッグモード」

• マクロを1行ずつ実行できる状態を「デバッグモー ド」または「中断モード」と呼ぶ。

• デバッグモードでは、現在の変数にどんな値が格 納されているかなどを調べることが可能。

調べたい変数の上に、マウスポインターを合わせる

35

• 人数が増えると,繰り返し回数の終了値の「5」を 書き換える必要がある。

• 「最終行まで自動的に処理する」というマクロを考 えてみる。

36

「Endモード」機能

• 表の最終セルを調べる機能は、マクロを使わなくても、

通常の操作で利用できる。

• 例えば、表が作られたシートでA1セルを選択し、[Ctrl]キ

-を押しながら[↓]キーを押してみる。

• アクティブセル(選択セル)がA列の最終セルにジャンプ する。

• ここで言う最終セルは、これ以降は空欄セルが続くとい う、デ-タが入力された最後のセル。

• 同様に、[Ctrl]キーを押しながら[↑]キーや[←]キー、[→]

キーを押せば、表の上、左、右にある最終セルにジャン プすることができる。

37

• Endモードを利用する際の書き方を、「マクロの記

• 録」を使って調べてみる

39

Visual Basic Editor」を聞くと、新しいモジュール(Module21dなど)ができているの で、これをダブルクリック。すると右側に、記録されたマクロのコードが表示される。

40

41

Selection.End(xlDown).Select

• Endはプロパティですが,( )の中の変数に示される移 動方向の終端のセル(オブジェクト)を返します。

• 講座ではプロパティは、オブジェクトの属性のような説 明をしてきました。

• そのプロパティがオブジェクトを返すというのは理解し にくいですが、これを詳しく説明するのは難しいので、

今は、プロパティには、値の設定・取得をするものと、

オブジェクトを返すプロパティがあると言う事だけ知っ ておいてください

• セルの様子や状態の一つで、ある「行番号」を調 べるには、「Row」という単語を使えばよい

43

Selection.End(xlDown).Row

Cells(1, 1).End(xlDown).Row

• A1セルから,下に向かって向かってジャンプして行 き当たるセルの行番号

44

45

• 完成ファイルは

• Sample5_最終行.xlsm

47

関数を使って複雑なデータ処理(データ:Sample6.xlsm)

関連したドキュメント