VBA入門② No.8 繰り返し処理(条件)「Do〜Loop」
- Do〜Loopを利用した繰り返し処理には2種類の方法があります
- 1つは「While」を使った条件がtrueの間繰り返す処理
- 2つめは「Until」を使った条件がtrueになるまで繰り返す処理
続きを読む文法(While)
Do While 条件式 処理内容 Loop文法(While)
Do Until 条件式 条件式を満たすまで繰り返す処理 Loop
VBA入門② No.7 繰り返し処理 「For〜Next」
- 同じ処理を繰り返す方法です
- カウンター用の変数を用意し、それが決められた最大値になった時点で、処理をストップします
続きを読む文法
'デフォルトでは1回ループする度にカウンタ用変数が+1されます For カウンタ用変数 = 初期値 To カウンタの最大値 処理内容 Next 'STEPを利用して、ループ度の加算数を指定することも可能です '下記の場合は、1回ループする度にカウンタ用変数が+2されます For カウンタ用変数 = 初期値 To カウンタの最大値 Step 2 処理内容 Next
VBA入門② No.4 サブプロシージャとファンクションプロシージャ
- プロシージャはプログラムをまとめて、整理・再利用するための処理単位なんだ
- サブプロシージャとファンクションプロシージャの2種類の方法があるから、違いを説明するよ
- サブプロシージャは引数を受け取ることはできるけど、戻り値がない(一方通行)
- ファンクションプロシージャは、引数を受け取ることもできるし、戻り値がある
- ようするに、サブプロシージャにはreturn(javascript)が無くて、ファンクションプロシージャーにはあるんだ!
サブプロシージャ
- サブプロシージャの場合は、値を渡すだけ
- 変数(myHello)に変化はありませんので、アラート(Hello)が表示されます
Option Explicit '呼び出し元のプロシージャ Sub myMain() Dim myHello As String myHello = "Hello" myAlert myHello 'サブプロシージャを呼び出す MsgBox myHello End Sub '呼び出される側のプロシージャ Sub myAlert(ByVal myHello As String) myHello = myHello & " World" End Sub
ファンクションプロシージャ
- ファンクションプロシージャは、値を渡して実行した内容を、戻り値として変数に返しています
- 下記の場合、ファンクションプロシージャの処理が変数(myHello)に戻り値として返るので、アラート(Hello World!!)が表示されます
Option Explicit '呼び出し元のプロシージャ Sub myMain() Dim myHello As String myHello = "Hello" myHello = myAlert(myHello) 'ファンクションプロシージャを呼び出す MsgBox myHello End Sub '呼び出される側のプロシージャ Function myAlert(ByVal myHello As String) myHello = myHello & " World!!" myAlert = myHello End Function
VBA入門② No.3 引数を渡してプロシージャを実行する「ByVal,ByRef」
- 他のサブプロシージャに引数を渡して呼び出す際、値渡し(ByVal)と参照渡し(ByRef)の二つの方法があるよ
- 値渡しと参照渡しの違いは、引数をプロシージャに渡した際、渡した引数にも影響が出るかでないかの違いなんだけど…
- 説明が難しいので、とりあえずサンプルを見てください><
続きを読む文法
Option Explicit '呼び出し元のプロシージャ Sub myMain() Call myAlert("HOGEHOGE") 'myAlertプロシージャに引数を渡して実行 End Sub '呼び出される側のプロシージャ Sub myAlert(ByVal myHello As String) MsgBox myHello End SubCallは省略してもOK
- Callを省略する場合は、引数を渡す際のカッコ()も省略する必要があります
Option Explicit '呼び出し元のプロシージャ Sub myMain() myAlert "HOGEHOGE" 'myAlertプロシージャに引数を渡して実行 End Sub '呼び出される側のプロシージャ Sub myAlert(ByVal myHello As String) MsgBox myHello End Sub
VBA入門② No.2 変数の宣言を強制する「Option Explicit」
これはエラー(変数を宣言しないで利用)
Option Explicit Sub myAlert() myHello = "Hello World!!" MsgBox myHello '宣言していない変数の中身をアラートで表示 End Sub
これはOK(変数を宣言してから利用)
Option Explicit Sub myAlert() Dim myHello As String '変数を文字列型で宣言 myHello = "Hello World!!" MsgBox myHello '変数の中身をアラートで表示 End Sub