Public Function hoge(Optional ByVal Name As String = "none") As ClassName ○○○ End Function
ThisWorkBookは、現在実行中のマクロコードが記述されているブック (Workbook オブジェクト) を返します。
ActiveWorkBookは、現在アクティブなブック (Workbook オブジェクト) を返します。
単一のファイルで処理している場合にはどちらを使用しても変わらないですが、複数のファイルでVBAを実行するときは注意が必要です。
コンパイルするかどうかを#If文で指定できます。
通常、スクリプトの変更等でコードを削除する場合、コードは消したくないがコンパイル時には除外したい時に「#if 0 Then」などと記述します。
#If *** then *** #Else *** #End If
各コードを行単位で区切る代わりに「:(コロン)」で区切ることができます。
Sub sample(): MsgBox "hoge": End Sub
ただし、If...Then...Else ステートメントは必ず行頭に記述しなければいけません。
そのため、処理を分岐したい場合は、Select...Case ステートメントを代わりに用いる必要があります。
なお、下記の2つのSubプロシージャは同一の処理です。
Sub sample1() Dim str As String: str = "hoge" If str = "hoge" Then MsgBox "True" Else MsgBox "False" End If End Sub
Sub sample2() Dim str As String: str = "hoge" Select Case (str = "hoge") Case True Msgbox "True" Case Else Msgbox "False" End Select End Sub
また、「sample2 Sub プロシージャ」を1行にすると下記のとおりです。
Sub sample2_2(): Dim str As String: str = "hoge": Select Case (str = "hoge"): Case True: MsgBox "True": Case Else: MsgBox "False": End Select: End Sub
If InStr("あいうえお", "う") Then Msgbox "True" Else If Msgbox "False" End If
Select Case (InStr("あいうえお", "う") <> 0): Case True MsgBox "True" Case Else MsgBox "False" End Select