01-VBA

演算子|Excel VBA (Part.4)【比較演算子】条件の発展的な利用(後編)

目標

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の利用には設定が必要です。設定は以下の手順で行います。

  1. 「ツールタブ」の「参照設定」をクリック
  2. 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

実行結果

左側のラジオボタンを選択しているときの動きです。

右側のラジオボタンを選択しているときの動きです。

今回は以上です。

初心者も実践で通用!「VBA・VBS」おすすめ書籍5選 | 現役エンジニア&プログラミングスクール講師「VBA・VBS」初心者の方が実践業務の中でそれらを活用しt活躍できるために必要な知識を習得できる書籍を紹介しています。ページの下部には「おすすめのITスクール情報」「おすすめ求人サイト」について情報を掲載中。...

ブックマークのすすめ

「ほわほわぶろぐ」を常に検索するのが面倒だという方はブックマークをお勧めします。ブックマークの設定は別記事にて掲載しています。

「お気に入り」の登録・削除方法【Google Chrome / Microsoft Edge】「お気に入り」の登録・削除方法【Google Chrome / Microsoft Edge】について解説している記事です。削除方法も掲載しています。...
【パソコン選び】失敗しないための重要ポイント | 現役エンジニア&プログラミングスクール講師【パソコン選び】失敗しないための重要ポイントについての記事です。パソコンのタイプと購入時に検討すべき点・家電量販店で見かけるCPUの見方・購入者が必要とするメモリ容量・HDDとSSDについて・ディスプレイの種類・バッテリーの持ち時間や保証・Officeソフト・ウィルス対策ソフトについて書いています。...
RELATED POST
01-VBA

VBScriptを利用したVBAプロシージャの呼び出し(Part.1)| 現役エンジニア&プログラミングスクール講師

2023年2月14日
プログラミング学習 おすすめ書籍情報発信 パソコン初心者 エンジニア希望者 新人エンジニア IT業界への就職・転職希望者 サポートサイト Programming learning Recommended schools Recommended books Information dissemination Computer beginners Prospective engineers New engineers Prospective job seekers in the IT industry Support site
01-VBA

制御構文|Excel VBA (Part.4)【Select Case】| 現役エンジニア&プログラミングスクール講師

2022年11月19日
プログラミング学習 おすすめ書籍情報発信 パソコン初心者 エンジニア希望者 新人エンジニア IT業界への就職・転職希望者 サポートサイト Programming learning Recommended schools Recommended books Information dissemination Computer beginners Prospective engineers New engineers Prospective job seekers in the IT industry Support site
01-VBA

制御構文|Excel VBA (Part.8)【For Each In Next】| 現役エンジニア&プログラミングスクール講師

2022年11月29日
プログラミング学習 おすすめ書籍情報発信 パソコン初心者 エンジニア希望者 新人エンジニア IT業界への就職・転職希望者 サポートサイト Programming learning Recommended schools Recommended books Information dissemination Computer beginners Prospective engineers New engineers Prospective job seekers in the IT industry Support site
01-VBA

クラスの利用方法|Excel VBA (Part.2) | 現役エンジニア&プログラミングスクール講師

2023年2月18日
プログラミング学習 おすすめ書籍情報発信 パソコン初心者 エンジニア希望者 新人エンジニア IT業界への就職・転職希望者 サポートサイト Programming learning Recommended schools Recommended books Information dissemination Computer beginners Prospective engineers New engineers Prospective job seekers in the IT industry Support site
01-VBA

初めてのExcelVBA:「モジュールとプロシージャ」+マクロブックの保存方法

2022年8月6日
プログラミング学習 おすすめ書籍情報発信 パソコン初心者 エンジニア希望者 新人エンジニア IT業界への就職・転職希望者 サポートサイト Programming learning Recommended schools Recommended books Information dissemination Computer beginners Prospective engineers New engineers Prospective job seekers in the IT industry Support site