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

Microsoft PowerPoint - 公開講座 2015_08_15-1 Excel ガイダンス.pptx

N/A
N/A
Protected

Academic year: 2021

シェア "Microsoft PowerPoint - 公開講座 2015_08_15-1 Excel ガイダンス.pptx"

Copied!
121
0
0

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

全文

(1)

2015 年度

(2)
(3)

2015年度

琉球大学公開講座

2015年度

琉球大学公開講座

はじめてのExcelのVBAプログラミング 2015年8月15日(土) 10:00~16:00 農学部 地域農業工学科 鹿内 健志 1

注意事項

• この部屋は飲食禁止です

– ペットボトル等は可 – 飲食は隣の221室(会議室)にて

• 琉球大学は建物内禁煙です

– 喫煙はパソコン室前,中庭にて御願いします

• クーラーの温度調整は随時おっしゃってく

ださい。

• パソコンやインターネットの不正利用は禁

止です

(4)

内容

• Excelを用いて,表の作成やグラフの作成などが 容易にできるようになっています。この講座では, このような基本的なExcelを既に活用している人 たちが,さらに複雑な処理を行うことができる ExcelVBAの基本的技術を身に付けることを目 的にします。 • いままでExcelVBAを使ったことはないが, ExcelVBAやプログラミングに挑戦してみたいと いう人に,マクロとは何か,プログラムとは何かと いう基本的な知識を実習を通して学習していきま す。 3

自己紹介

• 鹿内 健志(しかない たけし) • • 大阪府茨木市に生まれる。 • 九州大学農学部 農業工学科農業機械学コース 卒業 • 1990年 ヤンマーの技術研究所に入社 – ディーゼルエンジンの研究・開発 • 1994年 琉球大学農学部 (現在まで) – 情報システムを利用した農業生産支援システムの開発 – サトウキビ機械収穫作業のスケジューリング – 台風で壊れない環境制御型グリーンハウスの開発 4

(5)

アシスタント

• 大城 梨実 さん

– 大学院 地域農業工学コース 修士1年

• 新垣 龍一 さん

– 農学部 地域農業工学科 4年生

• 操作等でわからないことがあれば,

その

場で手を挙げて

,聞いて下さい。

5

予定

• 10:00-10:15 ガイダンス • 10:15-10:45 Excel VBA/マクロとは • 10:45-12:00 VBAの基礎文法 • 12:00-13:00 昼休み • (学内食堂が休業です。各自で取って下さい。) • 13:00-13:30 Excelのマクロの自動記録 • 13:30-14:00 変数の使い方 • 14:00-14:15 休憩 • 14:15-15:45 「条件分岐」と「繰り返し」 関数を使って複雑なデータ処理 • 15:45-16:00 質問,まとめ,修了証,アンケート

(6)

ドライブ

• K:共有ドライブ

– (全員がアクセス可能)

• N:固有のドライブ

– (自分だけがアクセス可能)

• KドライブのデータをNドライブにコピーし,

作業中は

Nドライブに書き込んで下さい。

持ちかえるときは

Nドライブをコピーして持

ち帰って下さい。

7

質問があれば

• 公開講座修了後,質問等があれば

• 農学部 地域農業工学科

鹿内 健志

[email protected]

まで,メール下さい。

8

(7)

1.Excel VBA/マクロとは

1

Excel の「VBA」と「マクロ」

• 「マクロ」 • あらかじめ作成した“命令書"に従って、ソフトを自動実 行させる機能 • 「VBA」 • 命令書を作るためのプログラミング言語が、Excelでは 「VBA(Visual Basic for Applications)」 と呼ばれる。

(8)

• Excel 「マクロの記録」という機能 • これを使うと、ユーザーが実際に操作した内容を記録して自 動化できる。このことから、マクロ=操作の記録と思っている 人がいるが、正しくない。 マクロ=操作を記録する VBA=プログラムを記述する • 「マクロ」 • あらかじめ作成した“命令書"に従って、ソフトを自動 実行させる機能 • 「VBA」 • 命令書を作るためのプログラミング言語

×

3

Excelの起動

4

(9)

VBAの利用の準備

• 「ファイル」ー「オプション」ー「リボンのユーザー設定」

(10)

Excel2007の場合

• 開発タブの表示

7

8

(11)

• リボンに「開発」タブが追加される • 「開発」タブを選択すると「マクロ」などのメニューが並 んでいる 9

マクロを書いてみよう

• 「開発」タブで「VisualBasic」ボタンを押す クリック

(12)

「挿入」メニューの「標準モジュール」を選ぶ。 すると、画面左側の「プロジエクト」欄に「Module1」とい いツリーが追加され、右側には真っ白な編集画面が聞く ・モジュールとは,マクロを書く用紙のようなもの。 ・通常のマクロは,標準モジュールに記述する。 ・「Module1」は1つめのモジュール(複数のモジュールを 挿入して,マクロを管理することもできる) 11 マクロを管理するモジュール ここにマクロの命令文を書く

マクロの作成や編集などに使う

ツール

「Visual Basic Editor 」(VBEと呼ぶ)

12

(13)

命令文(コード)を記述する

13

•実習

1‐1

(14)

①1行目には「Sub」と入力し、空白に続けてSample1(マクロの名前)を入力する。 マクロの名前は何でもよいが、同じモジュール内で、同じ名前のマクロは作れない。 ②マクロの名前まで入力したら、「Enter」キーを押す。 すると、入力したマクロ名の後ろに空のかっこが挿入され、さらに「EndSub」という一文 が自動的に追加される。(マクロの終わりを表す一文) 15 • マクロの命令文(コード)は、この「Subマクロ名()」から 「EndSub」の間に記述するのが基本となる。 • マクロ名の後ろに挿入された空のかっこは、マクロにとって 特別な記号で、高度なマクロを作成するとき、このかっこの 中に必要な情報を記述する。(今回は、取りあえず必要な 記号と理解する) 16

(15)

• VBEでは、1行記述して「Enter」キーを押すたびに、文法 やスペルなどのチェックが行われ、必要に応じて決まっ た記号や文字を追加してくれる。 • VBAで使用する主な単語は、「Sub」「End」のように先頭の 1文字を大文字で入力するが、これも自動的に変換して くれるので、全て小文字で入力しても構わない。 17 • 「Subマクロ名()」と「End Sub」の間にコード(命令) を記述する。 • その際、[Tab]キーを押してインデント(字下げ)する 習慣を身に付けること。 • VBAでは、コードの構造を把握しやすくするために、要 所でインデントを行うのが作法

(16)

• コードの内容 • 「『Sheet2』」を選択する。 • C2(2行3列目の)セルに『Ecel VBA』と入力する。 • 「Cells (2,3) 」の「,」の後ろや「=」の両側には半角ス ペースがある。 • VBAでは、記号の前後にスペースが必要になること があるが、実際はあまり意識しなくてよい。 • ほとんどの場合、「Enter」 キーを押して改行すると、 VBEが自動的に補ってくれる。 19

マクロを実行する(1)

• 実行したいマクロの内部にカーソルを置いて、ツールバー の[Sub/ユーザーフォームの実行]ボタンを押す。 (今回のマクロは「Sheet2」というシートを選択する命令が含まれる ので、「Sheet2」が存在しないとエラーが発生する。シートがない場 合は実行前に挿入しておく。) 20

(17)

• 今回のマクロは「Sheet2」というシートを選択する命令が含 まれるので、「Sheet2」が存在しないとエラーが発生する。 シートがない場合は実行前に挿入しておく。 21

マクロを実行する(2)

• 「開発」タブにある「マクロ」ボタンからも実行できる • 「マクロ」画面で、マクロ名を選択し、「実行」ボタンを押す。

(18)

ファイルの保存

• 作成したマクロを保存するには、ブック(ファイル)に名前を付 けて保存する。 • マクロのコードは、セル内に入力した数値や計算式などと同 じように、ブックのデータとして保存される。 • このとき注意したいのが、ファイル形式。マクロ入りのブック を保存するときは、「ファイルの種類」を「マクロ有効ブック」 と指定する必要がある 23 • Nドライブに,「Sample1.xlsm」で保存 24

(19)

• Excel 2003以前は、標準のファイル形式にマクロを 保存できたが、Excel 2007以降はセキュリティ上、 標準のファイル形式とマクロを含むファイルの形式 が分けられている。 • マクロは便利な半面、データを破壊するような悪意 のあるプログラム(マクロウイルス)も作成が可能。 • そのため、マクロ入りブックを区別して、意図せず にマクロを実行できないようにしてある。 25

(20)

• Excel2007の場合

27

•実習

1‐2

• 完成品

Sample1‐2.xlsm

(21)

Sheet1のB4セルに,「ABC」を入力

マクロを作成してください

(22)

マクロの名前の規則

31

マクロを実行する

カーソルの位置

(23)

マクロを実行する

• 一旦,2つのシートのセルから「Excel VBA」と「ABC」 を削除し,カーソルを移動し,マクロの実行 カーソルの位置 33

マクロを実行する

カーソルを2つのマクロの外へ移動し,マクロの実行 カーソルの位置

(24)

• 実行するマクロを選択する 35

モジュール

• 「モジュール」とは、プログラムを記述するための シートです。ひとつのモジュールには複数のプログ ラムを記述できます。 • マクロを記録すると、操作内容が「Module(モ ジュール)」に記述されます。 36

(25)

プロシージャ

• VBAでは、モジュールに記述されたプログラムのことを 「プロシージャ」といいます。 • プロシージャは「Sub」から「EndSub」までがひとつの実行 単位になります。 • プロシージャは「VBAの命令文のかたまり」 37

(26)

2.VBAの基礎文法

1

Excel の「VBA」と「マクロ」

• 「マクロ」 • あらかじめ作成した“命令書"に従って、ソフトを自動実 行させる機能 • 「VBA」 • 命令書を作るためのプログラミング言語が、Excelでは 「VBA(Visual Basic for Applications)」 と呼ばれる。

VBAは言語 → 文法

2

(27)

命令文の構文

3

命令文の構文

今回の講座では,まず,オブジェクト式の特徴を理解してお きたい。 一般に「マクロが書けない」,「他人のコードが読めない」と いったVBAに対する悩みの多くは、オブジェクト式の理解不足 によることが多いと言われる。

(28)

オブジェクト式の基本2文型

5 • 何らかの動作を伴う命令で、「○○を□□する」と 翻訳できる。 • 例えば、 • セルを削除する。 • ブック(ファイル)を聞いたりする。 6

(29)

• 対象の様子や状態を調べたり設定したりするとき の書き方。 • 「○○の□□を△△する」と翻訳できる。 • 例えば、 • セルに値を入力する。 • シートの名前を調べる。 7 • 文型(2)で使う「=」記号は、数学で学習する「等しい」とい う意味ではない。 • 「右側の値を、左側に代入する」という働きを担う記号。 1行2列目のセル(B2)の値に”日経”と言う文字を代入する • VBAなどのプログラミングでの「値」とは「数字や文字の

(30)

• 「=」記号は、「右側の値を、左側に代入する」

1

1

1

1

x

x

x

x

x x

 

  に を代入する

  に

を代入する

の式は数学としては成立しないがプログ ラムとして,翻訳して考える。

1

x

 

x

9

作成したコードの文型は?

10

(31)

2行目の命令 • 文型(1)に相当 • 「○○を口口する」の形 • 「Sheet2」を選択する 11 3行目の命令 • 文型(2)に相当 • 「○○の□□を△△する」 • 2行3列目のセル(C2)の 値に”「Excel VBA」を代入 する

(32)

13 • 「対象」→「オブジェク卜」 • 「命令」→「メソッド」 • 「様子」→「プロパティ」 オブジェクト,メソッド,プロパティが, それぞれどのようなものか,どのよう に記述されるのかを次に学習します。 ↑ これらが理解できないため,自習の際,躓く 14

(33)

オブジェクトとは

• 「オブジェクト」-処理の対象となるもの • オブジェクトには、ブック(ファイル),シート,セルなどが あります。 「オブジェクト」とは直訳する と「もの」という意味 15

オブジェク卜の階層構造

• 各オブジェクトが親子関係を持つ。 • オブジェクトの関係を階層構造で表現できる。

(34)

• オブジェクト(対象)は、上位の階層から順にピリオドで 区切って表現する オブジェクトの階層構造 17 • 同じオブジェクトの集まりをオブジェクトの「コレクションJ といいます。 • コレクションはオブジェクトの複数形で表現します。 • たとえば、 • 開いているすべてのブックを「Workbooksコレクション」 • 指定されたブックまたは作業中のブックにあるすべてのシート を「Worksheetsコレクション」

コレクション(集合体)

18

(35)

• 複数のオブジェクト(コレクション)の中からひとつ のオブジェクトを指定するには、特定のオブジェク トを指定する。 • いきなりブック名で指定しない。 • 表現方法 コレクション(“名前”) 19 • 「田中」(特定のオブジェクト)をVBAで指定する場合 “田中”

×

生徒たち“田中”

コレクション 特定のオブジェクト

(36)

• いきなり “Book1.xlsx” と指定はできない • いきなり “Sheet1” と指定はできない 21 Workbooksコレクション(現在開いているブック)の中 の”Book1.xlsx”と言う名前のブックの中の, Worksheetsコレクション(すべてのシート)の中 の”Sheet2”と言う名前のシートの中の, 2行3列目(C2)のセル

Sheet2のC2のセル

を指定するとき

オブジェクトの階層構造 疑問?:セルはCellsだけか?22

(37)

セルの表現

• セルを指し示す書き方は、コレクションを指定しない。 • 「Range」または「Cells」という単語を使う(2方法) • セルの番地を文字で指定 • A1セル: 「Range(“A1”)」 • A1~B3セル: 「Range(“A1 :B3 ”) 」 • セルの行番号と列番号を数字で指定 • C2セル: 「Cells (2,3 ) 」 • Rangeの用に範囲で指定することはできない 23

Range(“C2”)

Cells(2,3)

文字(“ ”の中は文字) 数字

(38)

Range(“C2”)

Cells(2,3)

文字(“ ”の中は文字) 数字

Range:オブジェクト

Cells:プロパティ

プロパティは本来,「オブジェクト名.プロパティ名(対象.様子)」といった書式にて,オブ ジェクトとセットで記述するもの。 しかし,Cellsプロパティの書式は,プロパティのみで記述される。これは基点となるオブジェ クトの記述を省略した形。 「Cellsプロパティは基点となるオブジェクトの記述を省略すると,自動的に(A1のセルが基点 となり)○行,○列のセルを指定する」と覚える。(厳密な説明は面倒になるので) 25 基点オブジェクトからCellsプロパティで指定 (このスライドは理解しなくても良い) 指定したオブジェクトを基点と し,そこから相対的に行と列 を指定してセルを指定する 26

(39)

Range(“C2”)

Cells(2,3)

文字(“ ”の中は文字) 数字 セルを指定する方法に,RangeとCellsがあり,文字列でセルを指定 するか,行番号と列番号で指定するかの違いがあると理解すれば 良い。 27 親オブジェクトの記述の省略 • 省略した場合、アクテイブなオブジェクトが親オブ ジェク卜として認識される。 • アクティブ : 表示している 例「Book1」に含まれる「Sheet2」にあるC2セルを表現 する時 ←「Sheet2」が表示されていれば,OK ←「Sheet2」が表示されていない場合。 例えば「Sheet1」が表示されているとき。 ↑複数のブック(ファイル)Book.1.xlsx,Book2.xlsがあり,「Book2」 が表示されているとき。

(40)

•実習

2‐1

• 完成品

Sample2‐1.xlsm

を起動してください

29

(41)

オブジェクトの階層構造 省略した場合、アクテイブなオブジェクトが親オブジェク卜 アクティブ : 今,表示している 31

「プロパティ」とは

• 「プロパティ」とは直訳すると「属性」という意味 • プロパティ:オブジェクトの状態を表すもの 「対象」→「オブジェク卜」 「命令」→「メソッド」 「様子」→「プロパティ」

(42)

「オブジェクトの状態」とは

• たとえば「A1セル」というオブジェクト • 文字列や数値が入力。 • 文字色、フォント、サイズなどの書式を設定。 • 数式も入力。 • 罫線をつけたり、縦横の大きさを変更可能 33 普段Excelを使っている中で、何度も目にしたり触ったりして いる書式などの設定項目のこと 34

(43)

• A1セルには,さまざまなプロパテイがあります。 • A1セル以外のセルも、同様のプロパテイがあります。 • セルはどれも同じ種類のプロパティを持ちますが、それぞれ のプロパティの中身はセルごとに異なります。 • ワークシートなどセル以外のオブジェクトも、そのオブジェク ごとに特有のプロパティを持ちます。 35

プロパティの使い方

• それぞれのプロパティに“名前”が割り振られている。 • オブジェクト名とプロパティ名を半角の「.」 (ピリオド) で結んで記述する。 • プロシージャの中に、上記の書式で記述すれば、そ のオブジェクトのプロパティが扱えるようになる。

(44)

プロパティを取得する

• 「プロパティを取得する」とは、目的のオブデジェク トの現在のプロパテイの中身を取得すること。 • 取得した中身は、計算などに利用する。 • VBAの書式 37

•実習

2‐2

• 完成品

Sample2‐2.xlsm

を起動して,実行してください

38

(45)

MsgBox関数 ( )内の値を表示する関数 39

コメント

• アポストロフィ(‘)で始まる文-コメント行 • マクロの動作とは無関係で,本文と区別するために緑色 • ①マクロの動作を誰がみてもわかるように説明文を添える時 • ②わざと,動作させないようにするとき • ③修正作業などの時,万が一の際,いつでも元のコードに復元できるように ① (説明行) ② (動作確認など) ③ ①(ステートメントの横に 記載)

(46)

• コメントブロック機能 41 MsgBox (Range("A4") .Value) • A4セルのオブジェクトとして「Range(“A4”)」と記述し、値というプロパティ を取得するために、「.」(ピリオド)に続けて「Value」と記述。 値のプロパティ名「Value」 MsgBox関数 ( )内の値を表示する関数42

(47)

• 「Range(“A4”).Value」という記述によってA4セルに 現在入力されている値を取得し、MsgBox関数で、 表示するという処理を行うコード 43

プロパティを取得する

• 「プロパティを取得する」とは、目的のオブデジェク トの現在のプロパテイの中身を取得すること。 • 取得した中身は、計算などに利用する。 • VBAの書式

(48)

プロパティを設定する

• 「プロパティを設定する」とは、目的のオブジェクトのプ ロパテイの中身を変更すること。 • そのオブジェクトの状態を変更するという意味 • たとえば、 • A1セルの文字色が現在赤色なのを青色に変更する • 現在空白のA1セルに値を入力する • 該当するプロパティに変更したい内容を設定する • VBAの書式 45

•実習

2‐2

• 完成品

Sample2‐2.xlsm

46

(49)

Range("E4").Value = 98 • E4セルのValueプロパティに「98」という数値を代入する処理を 行うコード 47 Range("E4").Font.Color = vbRed • 「Range(“E4”)」というE4セルのオブジェクトに続け,「Font」で フォントのオブジェクトを示す。(「Range(“E4”).Font」で「E4セ ルのフォント」を意味) • 「Color」は色のプロパティ名 (「Font.Color」で「フォントの色」 を意味) • 「Range(“E4”).Font.Color 」で「E4セルのフォントの色」というプ ロパティに赤色を意味する定数「vbRed」を代入する処理 「vbRed」 は赤色を表す定数 (定数:ある決まった値を持つ文字列) 青を表す「vbBlue」 黒を表す「vbBlack」など

(50)

Range("E4").Font.Color= vbRed • 「Range(“E4”)」というE4セルのオブジェクトに続け,「Font」でフォ ントのオブジェクトを示す。(「Range(“E4”).Font」で「E4セルの フォント」を意味) • 「Color」は色のプロパティ名 (「Font.Color」で「フォントの色」を 意味) 49 • 厳密には、Fontオブジェクトは、「RangeオブジェクトのFontプ ロパティで取得する」という定義になっている • しかし、ここで説明したような解読の仕方で実用上大きな問 題はない。 • とにかく階層構造になっていることだけを理解しておけばOK • オブジェクトの階層構造は、「

」を日本語の「の」と見なして、 コードを左から順番に読んでいくと、比較的容易に把握でき る。 • オブジェクトの階層構造の話は初心者には相当ややこしい ので、今すぐに理解できなくとも心配せず、何度か読み直し たり、先に進んだ後で、再び、理解すれば良い。 • とりあえずは「Range(“E4”).Font.Color.」は「E4セルのフォント の色」というプロパティを表す」とだけ把握できればよい。50

(51)

Range("E4").Font.Color = vbRed • 「Range(“E4”).Font.Color 」で「E4セルのフォントの色」というプ ロパティに赤色を意味する定数「vbRed」を代入する処理 「vbRed」 は赤色を表す定数 (定数:ある決まった値を持つ文字列) 青を表す「vbBlue」 黒を表す「vbBlack」など 51

オブジ工クトおよびプロパティを扱う

コツ&注意点

• ExcelVBAには膨大な数のオブジェクトやプロパテイがあ る。 • その中から、自分が再現したい操作をプログラミングす るために、適切なオブジェクトやプロパティを選ぶ必要が ある。 • いかにして自分が必要とするオブジェクトやプロパティを 見つけるか? • すべてのオブジェクトやプロパティをおぼえるのは無理 • どのオブジェクトが親オブジェクトになっているのか、どのプロパティが 設定できるのかすべておぼえるのも無理 • 結局,ヘルプを活用したり、VBA関連の書籍を参考にしたりして、 オブジェクトやプロパテイを探して何度も繰り返していくうちに、 使えるようになっていく。

(52)

• 「対象」→「オブジェク卜」 • 「命令」→「メソッド」 • 「様子」→「プロパティ」 53

メソッドとは

• メソッド : 「オブジェクトの動作」 • 「A1セル」というオブジェクトを考える A1セルに入力されている文字列や数値 • 右クリック→[削除]などで削除できる • 値や書式をコピー&貼り付けできる A1セルに対する操作は、オブジェクトの“動作”であり、 「A1セル」オブジェクトのメソッドになるのです。 メソッドとは簡単にいえば、普段Excelを使っている中で、 何度も利用している各種操作のこと 54

(53)

メソッドの使い方の基本

• それぞれのメソッドに“名前”が割り振られる • メソッド名をVBE上にて、定められた書式に則って 記述する • オブジェクト名とメソッド名を半角の「.」(ピリオド)で 結んで記述 55

•実習

2‐2

• 完成品

Sample2‐2.xlsm

(54)

57

(55)

練習問題

• Sample2‐2を使ってセル A7に Hello と表示

59

練習問題

• Sample4を使ってセル A7に Hello と表示

(56)

メソッドの動作を細かく指示する

• ワークシートを追加する場合 • 普通に追加すると,ワークシートはアクティブシートの 左側に挿入 • VBA構文では「2番目のシートの右に」など,細かな指 示をAddメソッドに与えて挿入する 61

•実習

2‐3

• 完成品

Sample2‐3.xlsm

62

(57)

63 オブジェクト 「引数」とは • メソッドが実行する際の“条件”を指定するためのVBA の仕組み • メソッドメによっては,どのように動作するのか、細かく 指定しなければならないケースがある。 • その際に利用するのが引数 メソッド 引数

(58)

オブジェクト 「2番目のシートの右(after)に」 メソッド 引数 「2番目のシートの左(before)に」 65 • メソッドによっては、引数が複数あるものがある。 • 引数が1つであろうと複数あろうと、引数にはそれぞれ名前 がつけられており、どのような引数なのかがわかる。 • 引数を利用できるメソッドがある一方で、引数がないメソッド も多数ある。 • 引数を省略できるメソッドもある。 • 引数があるのかないのか、省略可能なのか、省略するとど うなるのかなどはメソッドによってまちまち。適宜調べて使う。 66

(59)

• 引数の使い方 • メソッド名の後ろに半角スペースに続けて引数を記述 • 「:=」 (コロンとイコール)を記述 • 引数に指定する設定値を記述 • 引数が複数ある場合は、「引数名:=設定値」の形式を 「,」(カンマ)で、区切って並べる 67 • 引数の使い方 • メソッド名の後ろに半角スペースに続けて引数を記述 • 「:=」 (コロンとイコール)を記述 • 引数に指定する設定値を記述

(60)

• VBEの「コードアシスト」機能

69

• 「コンパイルエラー」が出てしまったら

(61)

71

(62)

73

(63)
(64)

3.Excelのマクロの自動記録

マクロによる作業を簡易化した伝票の作成 1

マクロの自動記録

• 1行1行の命令文 「ステートメント」を理解しないと いけないのか? • 複雑なものを記録する場合 • 簡単なものならば,一連の操作を自動的に,その まま,翻訳し,マクロを記録することができる。 2

(65)

使用ファイル

フォルダー Sample3 • 作業用 • マクロ(例:伝票)(練習).xlsx

• 完成ファイル

• マクロ(例:伝票)(完成).xlsm 3

発注伝票の作成

• 発注伝票を何枚も作成するとき。 • 新しいものを作るたびに,B列とE列の数値を消去する必 要がある。 • 多数処理する場合は不便

(66)

発注伝票の作成

• 手順 • マクロに記録する操作を確認する • マクロの自動記録 • マクロを実行し,確認 • マクロを編集 • (テキストでは,わざと修正箇所が必要な手順でマクロを記録しま す) • ボタンを作成し,マクロと関連付ける • 完成ファイルの保存 • テキストに沿って作業を進めます 5 フォルダー Sample3 • マクロ(例:伝票)(練習).xlsx • を開いてください 6

(67)
(68)
(69)
(70)
(71)
(72)
(73)
(74)
(75)
(76)
(77)
(78)
(79)
(80)
(81)

• 完成したマクロ

(82)

9

• Rangeオブジェクトに対してSelectメソッド

(83)

• Selectionオブジェクトに対しClearContentsメソッド • ClearContentsメソッド セルの値や数式をクリア • SelectionはVBAではプロパティ 11 • Selectionは,オブジェクト?セルではないよね。 • Selectionは,選択されているセルを特定するときに使う • Selectionは,セルを特定するためのキーワード • VBAでは,「オブジェクトが特定できるキーワード」をプロパ ティに分類する • 「Selectionプロパティ」と呼んで,「セルというオブジェクトを 特定するキーワード」として用いる

(84)

• Selectionオブジェクトに対しClearContentsメソッド • ClearContentsメソッド セルの値や数式をクリア • SelectionはVBAではプロパティ • 「なぜ?」と考えずに意識せず使うほうが良い。 • 実践を積んでいくうちに気にならなくなる。 13

(85)

4.変数の使い方

1 • 変数とは 値を入れる“箱"のようなもの。 中に数字や文字を入れておき、その中身に従っ て命令を実行できる

(86)

• 変数に値(数字や文字)を入れるときは、文型(2)で 登場したのと同じ「=」を使う。「変数名=値」のように 書くと、右側に指定した値を変数に入れられる。 3

• Sample4.xlsm 4

(87)

• 「N_01」,「N_02」というのが変数名 • 変数にセルの値を入れる • 「N_01」にセルA1の値 • 「N_02」にセルA2の値 • 「N_01」+「N_02」の計算結果を,セルA4の値に入れる 5 • Sample4( )の下にSample4a( )として追加して下さい • 変数名 a1,a2 • 変数にセルの値を入れる • 「a1」にセルC1の値 • 「a2」にセルC2の値 • 「a1」×「a2」の計算結果を,セルC4の値に入れる • 「a1」÷「a2」の計算結果を,セルC5の値に入れる

練習問題

(88)

• Sample5a.xlsm 7 • Sample4.xlsm

N_02 を

N_O2 にする

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

8

(89)

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

(90)

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

11

(91)

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

13

• マクロ内で使う変数名を,事前に「宣言」する • 「Dim 変数名」と書き加えるだけ

(92)

再び,N_02 を

N_O2 にする

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

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

(93)

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

マクロ全体の制御

1

(94)

• セルやシートの操作 - オブジェクト式の構文で可能 • 「マクロの記録」で作成することが可能 しかし • 同じ処理を繰り返す(繰り返し) • もし,A1セルが△△ならば,□□を実行し,△△でな ければ○○を実行(条件分岐) • ボタンを設置して,セルの値をクリアする(フォームの 利用) • 上記は,マクロ全体を取り扱う操作 • マクロ全体を制御するとき-ステートメントの構文 3

「条件分岐」

4

(95)

繰り返し

5

•実習

5‐1

Sample5._元データxlsX

を起動してください

(参考:完成品はSample5.xlsm)

(96)

条件により処理をかえる

• ExcelにはIF関数がある IF関数とおなじ働き VBA: 「IF」ステートメント 7 • 基本の2パターン • 書式(1) • 条件が正しかったときだけ処理を実行し、条件が正しくなかったときは何も実 行しない • 書式(2) • 条件が正しくなかったときにも別の処理を行う 8

(97)

• 50点以上 「合格」 • それ以外 「不合格」 9 • 「得点が50点以上なら『合格』、そうでなければ『不 合格』と入力」 • 条件,処理1,処理2を考える • B2セルの値が50以上なら、C2セルの値に『合格』 を代入し、そうでなかったらC2セルの値に『不合 格』と代入する」 • 条件 : B2セルの値が50以上 • 処理1 : C2セルの値に『合格』を代入

(98)

• 条件の書き方

11

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

(99)

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

(100)

15

(101)

記述するときのコツ

• 「マクロは、分かっているところから書く」 • ×「上から下に向かつて書き進める」 • 例えば、Ifステートメントの書式 • 1行目に条件を書いたら、いずれは3行自の 「Else」と、5行目の「EndIf」を書くことになる。 • そこで、実行したい処理を書く前でに、先に 「Else」と「EndIf」を書いてしまうとよい。 17 分かっているところから書くことの利点 • 「書き忘れを防げる」 • 実行したい処理を考えているうちに、Ifステートメントの内部で あることを忘れて「EndIf」を書き忘れるケースは多い。すると、 マクロ全体の流れがおかしくなり、トラブルのもと。 • 「全体の構造が分かりやすくなる」 • 条件分岐の範囲などが明確になるので、マクロの全体像を把 握しやすくなる。 • マクロを作るときは、「どこで何をするのか」という全体像 を意識して、最初はラフに作り、徐々に細部を作り込ん でいくようにした方がよい。

(102)

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

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

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

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

(103)

21

繰り返し構文で連続処理

• 繰り返し処理を実現するステートメント • 「For‐Next」

(104)

• セルを、上から順番に、あるいは左から順番に操作する ことで、多数のデ-タを連続して処理したいケース マクロでは「Cells(行,列)」を使うことで、行と列の番号(数字)でセルを指定できる。 そこで、この行または列に「1ずつ増える数字」を順番に指定できれば、操作可能。 23 • 「For –Next」の構文 • 「For」の行と「Next」の行の聞を、指定した回数だ け繰り返し実行 • 指定した変数の値を、「初期値」から「終了値」にな るまで「1」ずつ増加 24

(105)

• 変数(「i」)の中身を「1」ずつ増やしながら、初期値から 終了値まで繰り返す。 「For i= 1 To 3」の場合 • 「i」を1から3まで増やしながら3回処理を繰り返す 25 • 実際に作成してみましょう(Sample1の下に追加してくださ い)

(106)

27

(107)

• Sample2を最下部にコピーし,Sub Sample3に変更し, 「Cells(i, 5).Value = “VBA”」の部分を削除し,Samaple1の必 要部分をコピーする

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

(108)

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

「ステップ実行」

• 「For –Next」を使ったマクロでは、指定した回数の処 理が一気に実行される。 • この間で何か問題が発生したり、思うような処理が行 えなかったりしたときには、「ステップ実行」で動作を 確認することができる。 • マクロを1行ずつ実行して、処理の経過を確認す • るための機能。 32

(109)

• 「ステップ実行」を行うには、マクロの中にカーソルを置 いて[F8]キーを押す。 • マクロの先頭行が黄色く反転する。 • 黄色く反転した行は、次に[F8]キーを押したときに実行 される行。 • [F8]キーを押すたびにl行ずつ実行できる。 • どのコードでどんな処理が実行されるかを1つずつ確認 できる。 • 変数を宣言した「Dim」の行など、止まらない行もある。 33

(110)

「デバッグモード」

• マクロを1行ずつ実行できる状態を「デバッグモー ド」または「中断モード」と呼ぶ。 • デバッグモードでは、現在の変数にどんな値が格 納されているかなどを調べることが可能。 • 調べたい変数の上に、マウスポインターを合わせる 35 • 人数が増えると,繰り返し回数の終了値の「5」を 書き換える必要がある。 • 「最終行まで自動的に処理する」というマクロを考 えてみる。 36

(111)

「Endモード」機能 • 表の最終セルを調べる機能は、マクロを使わなくても、 通常の操作で利用できる。 • 例えば、表が作られたシートでA1セルを選択し、[Ctrl]キ -を押しながら[↓]キーを押してみる。 • アクティブセル(選択セル)がA列の最終セルにジャンプ する。 • ここで言う最終セルは、これ以降は空欄セルが続くとい う、デ-タが入力された最後のセル。 • 同様に、[Ctrl]キーを押しながら[↑]キーや[←]キー、[→] キーを押せば、表の上、左、右にある最終セルにジャン プすることができる。 37 • Endモードを利用する際の書き方を、「マクロの記 • 録」を使って調べてみる

(112)

39

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

(113)

41

Selection.End(xlDown).Select

• Endはプロパティですが,( )の中の変数に示される移 動方向の終端のセル(オブジェクト)を返します。 • 講座ではプロパティは、オブジェクトの属性のような説 明をしてきました。 • そのプロパティがオブジェクトを返すというのは理解し にくいですが、これを詳しく説明するのは難しいので、 今は、プロパティには、値の設定・取得をするものと、 オブジェクトを返すプロパティがあると言う事だけ知っ ておいてください

(114)

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

Selection

.End(xlDown).Row

Cells(1, 1)

.End(xlDown).Row

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

(115)

45

• 完成ファイルは

(116)
(117)
(118)
(119)
(120)
(121)

参考文献 今後,自学自習でVBA を学びたい人に 立山 秀利 単行本: 303 ページ 価格: ¥ 2,376 出版社: 秀和システム ISBN-10: 4798017973 ISBN-13: 978-4798017976 発売日: 2007/10/23 目次 第1 章 マクロと VBA 第2 章 VBA 記述の基本 第3 章 VBA のキモであるオブジェクトをマスターしよう 第4 章 演算子と条件分岐 第5 章 ループと変数 第6 章 VBA 関数―VBA 専用の関数を使おう 第7 章 VBA の実践アプリケーション「販売管理」の作成

参照

関連したドキュメント

[r]

[r]

奥付の記載が西暦の場合にも、一貫性を考えて、 []付きで元号を付した。また、奥付等の数

奥付の記載が西暦の場合にも、一貫性を考えて、 []付きで元号を付した。また、奥付等の数

古物営業法第5条第1項第6号に規定する文字・番号・記号 その他の符号(ホームページのURL)

名      称 図 記 号 文字記号

“〇~□までの数字を表示する”というプログラムを組み、micro:bit

関西学院大学には、スポーツ系、文化系のさまざまな課