【HOME】 【INDEX】 【第1回】 【第2回】
《はじめに》
さてさて、VBAのおおまかな概要については、前回で終わりじゃな、
VBAのプログラムについては第1回でも、述べたように
プロシージャにプログラムを書いていくことになるんだけど・・・ (*^_^*)
VBAプログラムを書くには、やはり作成上の規則というものがあって、
それらの規則については、VBAのヘルプを見てもわかると思うけど
凄い量だよね、実に圧倒されてしまう。
でも、それらを全部知る必要はないと思うし、そんなことは、
小生のような凡人には、とうていできっこない相談だ!!
で、小生は、VBAのプログラムを初めて作成する人にとって、
これだけは知っておいてほしい、役にたつだろう、
そういった基本的なことをこれから、書いていこうと思っているわけじゃ。
小生のひとりよがりに、お付き合い願えたら、うれしいものじゃわい!!
それでは、はじまり、はじまり・・・!
プログラミングの基礎編 第1回
1 Public と Private
基本型
Public Sub(又は Function) プロシージャ名 ()
Private Sub(又は Function) プロシージャ名 ()
今まで、説明はしていないのだけれど Subプロシージャや
Functionプロシージャ の前には 有効範囲(スコープ)と言って、
Public と Private がついている。
そして、この二つの意味は、他のモジュールから呼び出しができるかどうか
ということであります。
Publicは呼び出し可能なプロシージャという意味なんだけど、
通常、Sub だけの場合、Publicが省略されています。
逆に、Private がついていれば、他のモジュール内のプロシージャからの
呼び出しができないようにします。
(同一モジュール内では、呼び出し可能です)
この有効範囲については、次の機会に、もう少し詳しく述べてみたいと思いますが
この有効範囲については、変数や定数にも適用されます。
2 プログラムの構造
★プログラムの構造の基本型プロシージャ内の基本的なプログラミング構造は、次のようになると思います。例
------------Subプロシージャ内-------------------------
(Public) Subプロシージャ名 (変数1 as データ型,・・・・)
●定数、変数の宣言
プログラム中に、計算などをさせた場合、その値を入れておきたい
ものが必要になります。
値が変化するものを、入れておく入れ物が、変数
値が変化しないものを入れておく入れ物が、定数と
考えればいいんじゃないかな。
・宣言
ものを入れるのでも、その入れ物が、どんな形のもか
あるいは、どんな大きさのものか、何をいれるのかといったことを
決めておけば、収納もしやすいし、仕事も図るだろう!!
変数や定数にしても同じことがいえるよ。
そういった、型や、形をあらかじめ決めておくことを、
ここでは「宣言」っていう。
だから、変数や定数の宣言をしておくことによって
効率のいい仕事ができるというもんだね。
宣言は、絶対しておかないといけないというものでもないのだけれど、
でも、宣言はできるだけしておいた方が、小生は、いいと思う。
・宣言の置き場所
それと、宣言は、それらを使用する前に宣言しておけば、
どこに置いても構わないことになっているんです。
でも、あっちこっちに宣言文を置いておくと、重複したりするとエラーになるので
なるべく、冒頭(はじめの方って意味)に書いて、整理しておいたほうがわかり易いです。
・基本型
一応、基本型だけ、ここでは書いておきます。
★変数の基本型
有効範囲 変数名 データ型
変数名はユーザが決めます。詳しいことは後ほど書いていきたいと思います
★定数の基本型
有効範囲 Const 定数名 【データ型:省略可】 = 数値 又は "文字"
(文字は ""でくくる)
●プログラム記述
・繰り返し処理
Loop文
For 文
・条件による分岐
If 文
Select 文
・実行制御
Goto 文
Stop 文
Exit 文
End 文
・演算子の利用
算術
文字列
比較
Is
論理
・関数の利用
sum Min Max Avarage Etc.
・ワークブックやワークシートの利用
Woorkbook(s)、Worksheet(s)、Cell(s)、Range()
・他のプロシージャの呼び出しとデータの受け渡し
・エクセルの機能の利用 などなど・・・
End Sub (最後に必ず End Subで終わる)
-----------------------------------------------------
というわけで、プログラムを作成していく構造、基本型は上記のような形で
進められていくと思ってください。
3 名前付けの規則
プロシージャや変数、定数の名前付は、私たちユーザーが自由に付けることが
できるんだけど、それは、なんでもかんでもいいというわけじゃないんだ。
戸籍でつける名前にも、つけてはならない言葉があるようにね。
で、VBAの名前付けにも規則があるので、ここで少し説明しておくことにします。
●使える文字
使える文字は、英数字、漢字、ひらがな、かたかな、アンダースコア(_) です。
(これ以外の文字は使用不可です)
注意: それと先頭に アンダースコア( _ ) は付ける事ができません。
例
_ABC という使い方はできない
+-13 といった記号を含む文字も使用不可
●英字は、大文字小文字の区別は、なし
大文字、小文字、またはそれとの組合せをしても、区別されません。
ABC も abc も Abc も aBc 等 これらの組合せは、同じ扱いになるんです。
●文字数
文字数は、半角で255、全角で127文字まで使えます。
でも、あんまり長い名前はあえてつけないよねぇ〜
小生は、日本語入力が手間なので、できるだけ、英字で書いています。
これも、好き好きなので、自分の使いやすいようにすれば、いいと思います。
●VBAで組み込まれている名前は使えない
VBAで組み込まれている、プロパティ名や、メソッド名、関数名、組み込み定数
などは、使用することができないとなっています。
でも、その名前を使用してもエラーがでるので、結果的に使えないということになります。
●適用範囲内での、同一名の使用
宣言される文字や、プロシージャ名は、適用範囲内での同一名は使えません。
これも、結果的に、実行すればエラーが出るので、わかります。
4 ステートメント
VBAのプログラムでは、処理を実行する、つまり命令文を記述していきますが
その命令文のことを、ステートメントといいます。
通常は、1行ごとに書いていきますが、ステートメントは複数に書くこともできます。
そのことを、マルチステートメントと呼ばれています。
そのときには コロン「 : 」 で区切る約束になっています。
例
・通常のステートメントの場合
A = B
C = D
・マルチステートメントの場合( 「 : 」が区切り文字になります)
A=B : C=D
また、長いステートメントなどの場合は スペース+アンダースコア ( _ )
を行末に記入して、ステートメントを分割して、記述することができます。
例
・長いステートメントの場合(長くてわかりにくい)の場合
例
Q = MsgBox("答えがあっていますか。" & Chr(13 ) & "あっていれば 「はい」"& Chr(13 ) & "間違っていれば 「いいえ」のボタンを押してください", vbYesNo + vbQestion, "問題")
例 文末を「 _ 」 で分割して、わかり易くしてみました。
Q = MsgBox("答えがあっていますか。" & Chr(13 ) & _
"あっていれば 「はい」"& Chr(13 ) & _
"間違っていれば 「いいえ」のボタンを押してください", _
vbYesNo + vbQestion, "問題")
(このステートメントの内容については、また別のときに説明したいと思います。)
また、この例のように、命令文の前の空白挿入は、自由に入れることもできます。
そして、ステートメントとステートメントの間の行は、空行になっていてもかまいません。
例
A = B
C = D
B = C
C=D と B=C の行が空いていますが、プログラム的には何も支障はありません。
できるだけ、自分が見ても、他人が見てもわかり易い、見やすいように
記述していきたいものです。
●オブジェクトの記述省略 「With ステートメント」
With ステートメントと呼ばれる、このステートメントを使用すれば
オブジェクトの繰り返し記述を省略することができます。
基本的には次のようになります。
With オブジェクト
.プロパティ
.メソッド
処理
End with
最後は必ず End With で終わります。
・Withを使わない例です
Worksheet("Sheet1").Range("A1") .Clear
Worksheet("Sheet1").Range("A1").Value = 100
Worksheet("Sheet1").Range("A1") .Font.ColorIndex = 10
・Withを使った場合の例です
With Worksheet("Sheet1").Range("A1")
.Clear
.Value = 100
.Font.ColorIndex = 10
End With
注意:
Withステートメントを使用すれば、プログラムが随分見やすくなりますネ
しかし、このWithの対象となるオブジェクトは、
ひとつしか処理できないことになっています。
Withのあとには、複数のオブジェクトは、記述できないのです。
でも、Withの範囲の中に、違うオブジェクトでなら、Withステートメントは
使用することができます。このようなことを ネストといいますが、
例を書いてみましたので、小生のいいたいことがわかると思いますが、
例 Withステートメントのネスト(基本型)
With オブジェクト1
処理
.処理
・・・・
'次からネストになります。
With オブジェクト2(オブジェクト1とは異なるオブジェクト)
処理
.処理
・・・・
End With
’ネストが終わり
.処理
処理
・・・・
End With
5 コメント文
コメント文は実行されないコードをいいます。
文字の前に シングルクォーテーション 「 ' 」を記述すると、コメント文になり、
この文字については、プログラムにはなりません。
例
'A、Bは宣言されていませんが、Variantです。
A = B 'BはAに代入されます。(コメント文)
コメントは、プログラムが自分で理解しやすいように
あるいは、他の人に、見てもらう場合にも、重宝なアシスタントに
なると思いますので、うまく活用してくださいネ。
では、今日はここまで、 See You !! (^_^)/~~~
To be Continued …
03/10/22 作成