目標
VBAの比較演算子について発展的な利用ができる
この記事では前回の演算子Part.3の続きで、少し変わった条件の書き方について後半の4つのプロシージャを作成してみたいと思います。
比較演算子の発展的な利用方法を確認する(後編)
少し変わった「条件」を考えてみる(後編)
前回からの続きで少し変わった条件の書き方のうち、残りの4つについてプロシージャを作成してみたいと思います。
選択したセルを条件に利用 セルが選択された時、値が「空」の場合にTrueを返すWorksheet_SelectionChangeを利用。 ※セル選択時にプロシージャを起動するイベントWorksheet_SelectionChangeを利用します。Worksheet_SelectionChangeの引数にはTarget変数を利用します。これはワークシートが持つイベントプロシージャです。記述は個別のワークシートのプロシージャとして記述します。ここでは「Sheet1」にプロシージャを記述します。 |
MsgBoxのボタンの定数を利用する条件。 →vbYesとvbNoが押された場合で条件を分ける。 |
FileSystemObjectを利用してフォルダが存在しているかどうかを条件とする。 FileSystemObjectはOSのフィル管理のプログラムを利用するためのプログラム。 →FileSystemObjectのFolderExistsメソッドを利用して条件を記述。 |
ユーザーフォームのオプションボタンを条件として利用 →OptionButton1.ValueがTrueの場合。 |
条件の書き方としては、次のようになります。一例ではありますが、よく利用する書き方でもあるので、知っておくと便利です。
選択したセルが「空」の場合をTrueとする。 →Target変数を利用した条件を記述。 ※イベントにWorksheet_SelectionChangeを利用(セル選択時にプロシージャを起動) ※sheet1にプロシージャを用意します。 ※Worksheet_SelectionChangeなどの設定はまた別の機会に記事に書きたいと思います。 |
プロジェクトエクスプローラー内のSheet1(下キャプチャの赤枠)をダブルクリックするとシート専用のエディタが開きます。開いたエディタ内に以下のプロシージャを作成します。
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Value = "" Then
MsgBox "選択したセルは空です。"
Else
MsgBox "何か入力されています。"
End If
End Sub
実行結果
セルを選択するたびにプロシージャが動くようになっています。条件としては選択したセル(ターゲットのセル)に値があるか、ないかです。
MsgBoxのボタンの定数を利用する条件。 →vbYesとvbNoが押された場合で条件を分ける。 |
Sub UseMsgBox()
If MsgBox("「はい」ですか?「いいえ」ですか?", vbYesNo) = vbYes Then
MsgBox "「はい」が選択されました。"
Else
MsgBox "「いいえ」が選択されました。"
End If
End Sub
実行結果
FileSystemObjectを利用してフォルダが存在しているかどうかを条件とする。 FileSystemObjectはOSのフィル管理のプログラムを利用するためのプログラム。 →FileSystemObjectのFolderExistsメソッドを利用して条件を記述。 |
FileSystemObjectの利用には設定が必要です。設定は以下の手順で行います。
- 「ツールタブ」の「参照設定」をクリック
- MIcrosoft Scripting Runtimeにチェックを入れて「OK」を押下
Sub UseFSO()
Dim FSO As New FileSystemObject
Dim folderPath As String
folderPath = ThisWorkbook.Path & "\sampleFolder"
If FSO.FolderExists(folderPath) Then
MsgBox "条件に合っています。" & Chr(10) & "フォルダが存在します。"
Else
MsgBox "条件に合いません。" & Chr(10) & "フォルダは存在しません。"
End If
End Sub
ThisWorkbook.Pathで動かしているVBAのプロシージャ(今回はUseFSOプロシージャ)が存在しているファイルへのパス(ファイルの位置のこと)を取得します。
実行結果
マクロを動かすBook1.xlsmファイルと同じ階層に「sampleFolder」が存在しているときの動き
マクロを動かすBook1.xlsmファイルと同じ階層に「sampleFolder」が存在していないときの動き
ユーザーフォームの該当するオプションボタンが選択された場合。 →OptionButton1.ValueがTrueの場合。 ※ユーザーフォームの利用方法については、また別の機会に記事に書きたいと思います。 |
ユーザーフォームを利用する場合は「挿入タブ」から「ユーザーフォーム」を選択します。
ユーザーフォームを作成するとプロジェクトエクスプローラー内に「フォーム」フォルダが作られて、その中に「UserForm1」としてユーザーフォームのオブシェクトが作成されます。その後はツールボックスを使ってボタンなどを配置します。
ユーザーフォームの細かい利用方法は別の記事で書きたいと思います。今回はユーザーフォームで準備したボタンに対して、どのボタンを選択しているのかで条件が分岐できることを見ていただくためにサンプルとして準備しました。
Private Sub CommandButton1_Click()
If OptionButton1.Value = True Then
MsgBox "左側が選択されています。"
ElseIf OptionButton2.Value = True Then
MsgBox "右側が選択されています。"
Else
MsgBox "選択されていません。"
End If
End Sub
実行結果
左側のラジオボタンを選択しているときの動きです。
右側のラジオボタンを選択しているときの動きです。
今回は以上です。
ブックマークのすすめ
「ほわほわぶろぐ」を常に検索するのが面倒だという方はブックマークをお勧めします。ブックマークの設定は別記事にて掲載しています。