ねこになりたい

おふとんと朝の別れをするのが辛い人向けです。正論で殴らず見守ってあげてください。

Dim

概要

変数の定義

 
Dim 変数名 As 
Dimディムとは、Dimension「大きさ」の略で、変数もしくは配列を定義する。

変数とは一時的に保管するデータのことで、好きな値を入れることができる。

マジックペンでしか名前を書けない引っ越しの段ボールボックスみたいなもので、中身は入れ替え可能だが、一度つけた変数名は途中で変更できない

変更するときは、変数名で検索して一括置換するのがベター。

また、段ボールを増やしすぎると、どこに何が入っているのか分からなくなるのと同じで、できるだけ必要な変数だけに絞って用いるのが好ましい。

サ〇イ引越センターのパンダが何体もいると怖いでしょ~?地獄の使者みたいで。

 

 
変数名 = 
変数に値を入れるときは、=で結ぶ。

変数の適用範囲

どこに記述するかで、使用できる範囲が変わる。

プロシージャとは、「手続き」という意味があり、Sub内で実行される纏まった処理の単位のこと。

f:id:Arpino:20200328071337p:plain

 

※モジュール内

f:id:Arpino:20200328072113p:plain

 

変数にはプロシージャレベル変数モジュールレベル変数がある。

プロシージャレベル変数は引っ越しが終わると破棄される段ボールのことで、モジュールレベル変数は引っ越しが終わっても色々な理由で残る段ボールみたいな感じ。

あんまり使わない家電とか、整理が面倒すぎて1か月後も普通に段ボールに封印されてたりするし・・・。

プロシージャレベル変数 プロシージャ内の処理が終わると破棄される
モジュールレベル変数 プロシージャ内の処理が終わっても破棄されない

f:id:Arpino:20200328072404p:plain

 
 
Dim 変数名 As , 変数名 As
1行で複数の変数を定義する。ちょっぴり横着だけどかわいい人向け。
見づらいからか、あんまり使ってる人を見たことない。

配列の定義

 
Dim 配列(上限値) As 

配列とは複数の区切られた変数をひとまとまりにしたもの。
いわば積み上げてからガムテープで固定された段ボール。
ガムテープなので後からでも外せるけど、ややこしいので今は外しません。

廃棄するときはこう、拳でグシャッと・・・。

あ、上限値は積み上げた段ボールの個数のことね!

 

下限値(一番下の段ボールの位置)を設定することもできる。

 
Dim 配列(上限値 To 下限値) As

ただし、これは段ボールをガムテープで固定しただけに過ぎない。値を入れるときはインデックス番号という「下限値から数えて何番目の数か?」を指定する必要がある。

 
配列(インデックス番号) =

メチャ大事なことですが、インデックス番号は0から始まります

もう一度言います。インデックス番号は0から始まります

型について

型ごとに代入できる値が異なってくる。

 String

 0~2GBに収まる文字

 int型と区別するため、変数名は頭にstrをつけるのが暗黙の約束。

 strNum ="1"
 Single  -3402823E38 ~ -1.401298E-45の小数点以下の数。  num = 1.333
 Date  西暦 100年 1 月 1 日 ~ 西暦 9999年 12 月 31 日の日付  birthday = "1994/03/13"
 Boolean

 FalseもしくはTrueの条件判定値。

 初期値はFalse。

 flgA= true
 Object  オブジェクトの参照がある場合。  
 Variant

 規定値。省略時はこれになるが、原則として何らかのデータ型を定義する。値に整数と文字列が入る配列などに用いる。

 sampArray(10)

Open Explicit

 Explicitとは「明示的な」という意味で、これを先頭行に挿入することで必ず変数宣言を行うようにすることができる。Open ExplicitはVBAの画面からも変更できる。
変数宣言を省略されると後々の運用に支障が出るので、モジュールを作る際には必ずつけるようにしたい。

f:id:Arpino:20200328081719p:plain

f:id:Arpino:20200328081732p:plain

サンプル

 String型に数値型を入れてInteger型と演算させた場合、暗示的な型変換が行われる。

Dim strNum As String
Dim num As Integer
strNum = "3"
num = 2

' 演算結果をログ表示
Debug.Print strNum + num

' インデックス番号0から6まで値を入れる
Dim week(6) As String
week(0) = "日曜日"
week(1) = "月曜日"
week(2) = "火曜日"
week(3) = "水曜日"
week(4) = "木曜日"
week(5) = "金曜日"
week(6) = "土曜日"

'vbCrは改行、&は文字列連結演算子
Debug.Print "今日は" & week(5) & vbCr & "毎日が" & week(0) & vbCr & "どっちがいい?"

実行結果

 

f:id:Arpino:20200328082049p:plain