初心者がまなぶexcel vba

26
初心者がまなぶExcel VBA 安藤良人 凹レンズーまとまりのないブログー管理人

Upload: -

Post on 12-Apr-2017

39 views

Category:

Business


0 download

TRANSCRIPT

Page 1: 初心者がまなぶExcel vba

初心者がまなぶExcel VBA安藤良人

凹レンズーまとまりのないブログー管理人

Page 2: 初心者がまなぶExcel vba

本プレゼンテーション

•専門的なVBA講座「ではない」

• VBAを自己学習している私

•頭を整理する過程をスライドにして公開する

• いろいろ教えてください m(_ _ )m

Page 3: 初心者がまなぶExcel vba

VBAとは

• Visual Basic for Applications(ビジュアルベーシック・フォー・アプリケーションズ)

• Microsoft Officeシリーズに搭載されているプログラミング言語

• Visual Basic for Applications – Wikipedia

Page 4: 初心者がまなぶExcel vba

マクロとは

• Macro: 「大きい」「巨大な」を意味する英語

• コンピュータ関係では、アプリケーションソフトウェアなどの操作などといった、プログラミング言語と比較して粒度が大きい操作をまとめて自動化したりする機能を指して良く使われる

• マクロ (コンピュータ用語) – Wikipedia

Page 5: 初心者がまなぶExcel vba

プロシージャ

• VBAの命令文のかたまり

•種類は右の3つ

プロシージャ

Sub プロシージャ

Function プロシージャ

Property プロシージャ

Page 6: 初心者がまなぶExcel vba

Subプロシージャ

• Sub: Subroutine の略 •書式

Sub プロシージャ名()

処理の内容

End Sub

Page 7: 初心者がまなぶExcel vba

オブジェクト

• Object:対象

• オブジェクトは階層構造になっている

•親オブジェクト(=コンテナ)を省略可/不可のケースに分かれる

オブジェクト

セル

ワークシート

グラフ

オートシェイプなど

Page 8: 初心者がまなぶExcel vba

プロパティ

• Property: 属性

•取得 or 設定

プロパティ

文字色

フォント

セル幅 など

Page 9: 初心者がまなぶExcel vba

メソッド

• Method (方法)

• オブジェクトの動作

•引数(ひきすう):メソッドを実行する際の条件の指定

•戻り値:

•書式メソッド名 引数名:=設定値

メソッド

コピー

貼りつけ

削除

etc

Page 10: 初心者がまなぶExcel vba

Withステートメント

•同じオブジェクトに対して複数の処理を行なうコードの中で、そのオブジェクト名を記述する箇所を1つにまとめることができる

• With オブジェクト名.プロパティ名.メソッド名など

End With

• コードの見やすさを飛躍的に向上させる

Page 11: 初心者がまなぶExcel vba

演算子

•演算するための仕組み

• 5つ

•演算:

演算子

代入演算子

算術演算子

文字連結演算子

比較演算子

論理演算子

Page 12: 初心者がまなぶExcel vba

条件分岐

•条件に応じて実行する処理を変える仕組み

• If ステートメントの書式If 条件式 Then

処理End If

• Select Caseステートメント書式Select Case判断条件の対象

Case条件1処理1…

• End Select

条件分岐

Ifステートメント

Select Caseステートメント

Page 13: 初心者がまなぶExcel vba

IFステートメントとSelect Caseステートメントの使い分け• Ifステートメントを用いた方が良いケース

•判断条件の対象が複数に及ぶ場合

• Select Caseステートメントを用いた方がよいケース

•判断条件の対象が1つの場合

• とびとびの値や範囲を条件に指定したい場合

Page 14: 初心者がまなぶExcel vba

変数

•変数は好きな名前を付けられる

• いくつかの制限

• オブジェクト、プロパティ、メソッド、ステートメント、キーワードと同じ名前は付けられない

•数字、記号が先頭、ピリオドを含むものは不可

• 1つのプロシージャ内で同じ名前の変数は使えない

Page 15: 初心者がまなぶExcel vba

変数の宣言

• Dim 変数名

•標準モジュールの先頭に、Option Explicit⇒ 宣言なしに変数を使えなくする

• Dim変数名1 As データ型1,変数2 As データ型2

• ミスの生じにくい、より安全なプログラムにする

変数

プロシージャ―レベル変数

モジュールレベル変数

Page 16: 初心者がまなぶExcel vba

変数の型と取り得る値

名称 データ型 取り得る値

プール型 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

倍精度浮動小数点数型

Double 負の値:-1.79769313486231E308から-4.94065645841247E-324

正の値:4.94065645841247E-324から1.79769313486232E308

文字列型 String 文字列

日付型 Date 西暦100年1月1日から西暦9999年12月31日 (日付と時刻)

オブジェクト型 Object オブジェクト参照するデータ型

バリアント型 Variant あらゆる種類の値

Page 17: 初心者がまなぶExcel vba

For…Nextステートメント

•処理したい回数があらかじめわかっている際に便利なループ

• For 変数名 = 初期値 to 最終値処理

Next変数名

•変数は「カウンタ変数」と呼ばれる

•ループが回る回数は「最終値-初期値+1」

Page 18: 初心者がまなぶExcel vba

ループのコードを書く時の注意

• いきなりループを用いると混乱

• まず単一行を対象にした機能を作って正しく動作するかを確かめる

• その後ループ化する

Page 19: 初心者がまなぶExcel vba

定数

• ある決められた値を持つ文字列

• Const定数名 As データ型 = 値

•定数を使うメリット

•数値を直接入力した場合と比べ変更がしやすい

•意図が異なる同じ数字を間違えてしまうトラブルを減らす

•数値はなるべく整数化しておくと、後々楽になる

Page 20: 初心者がまなぶExcel vba

VBA関数

• ワークシート関数とは異なる

• VBA関数名(引数)

Page 21: 初心者がまなぶExcel vba

代表的なVBA関数

カテゴリ 関数例 機能

文字列操作 Len 文字列の文字数を返す

Ucase アルファベットの小文字を大文字に変換する

日付け/時刻操作 Date 現在の日付を返す

Time 現在の時刻を返す

数値/配列操作 Rnd 0~1のランダムな値を返す

Int 数値の整数部分を返す

その他 MsgBox メッセージボックスに文字列を表示

InmutBox 文字列を入力するダイアログボックスを表示し、入力された値を返す

Page 22: 初心者がまなぶExcel vba

コレクション

•同じ種類の複数のオブジェクトをまとめて扱う仕組み

•書式: コレクション名(数値または名前)

• ワークシートをワークシート群の末尾にコピーする

• Worksheets(“hoge”).Copy After:=Worksheets(Worksheets.Count)

•個人的に質問票で使いたい

Page 23: 初心者がまなぶExcel vba

初心者がプログラミングを行う時の手順

• STEP1

•単一の範囲でシンプルな形で機能を作って動作を確認する

• STEP2

• コードや機能の追加・変更と動作確認をくり返す。

•条件分岐やループ

• STEP3

•作成したコードを整理・改良し、見やすく分かりやすく、かつ使用の追加・変更に対応しやすいコードにする

•定数化、コメントの整理

Page 24: 初心者がまなぶExcel vba

コメント

• ステートメントとは無関係なコード内の文字列

• プロシージャの動作には一切影響を及ぼさない

•書く内容:どのような機能のプロシージャなのか、どのような条件分岐を行っているか、用途、補足情報

• コード変更の場合、元コードをコピペして、コメント化(コメントブロック)して、残しておく

• コメントをコードと同じ行に記述するか、前の行に記述するかは、コードやコメントの長さを考慮しつつ見やすい方法を選ぶ

• コードを変更する際にはコメントも更新する

•最悪の事態はコメントとコードが一致しないこと

Page 25: 初心者がまなぶExcel vba

エラー

• コンパイルエラーcompile errorソースコードをコンパイラが機械語コードに変換する際に生じるエラー

Page 26: 初心者がまなぶExcel vba

ステップ実行で原因のコードを突き止める

• マクロ内をクリック⇒ F8⇒さらにF8を押す⇒ 1行ずつ実行

• エラーを突き止めるだけでなくコピペしたコードがどんな意味なのかを調べることにも役立つ