01-VBA

演算子|Excel VBA (Part.3)【比較演算子】応用編(前編)| 現役エンジニア&プログラミングスクール講師

目標

VBAの比較演算子について基本を復習し発展的な利用ができる

この記事では前回の演算子Part.2に続いて制御構文で利用する比較演算子について書いています。Part.2ではシンプルな条件を例にしていましたが、ここでは、少し変わった条件の書き方について触れてみたいと思います。

比較演算子の復習

条件に利用される演算子の復習

制御構文の条件には『比較演算子』や『単項演算子(論理演算子のNOT)』が頻繁に利用されます。(※条件には演算子が利用されない場合もあります)

条件に用いられる「比較演算」の復習

比較演算子は左辺と右辺を比べる演算子です。具体的には以下の表の太文字の部分が比較演算子となります。

比較演算子比較演算子の意味
左辺 = 右辺左辺と右辺の値が等しい
左辺 > 右辺左辺の値が右辺の値より大きい
左辺 < 右辺左辺の値が右辺の値より小さい
左辺 >= 右辺左辺の値が右辺の値以上
左辺 <= 右辺左辺の値が右辺の値以下
左辺 <> 右辺左辺と右辺の値が等しくない

比較演算子の発展的な利用方法を確認する(前編)

少し変わった「条件」を考えてみる(前編)

ここでは前回とは違って少し変わった条件の書き方をいくつか考えてみたいと思います。このうち今回の記事では前半4つをプロシージャを作成して確認していきます。残りの4つは次回の記事で作成していきます。

IsEmpty関数を利用して指定セルの中が「空」の場合をTrueとする。

→セルB5が空の場合を条件としています。
入力された値が数値として変換できない場合(数値でない場合)をTrueとする。
「Not 」 と「IsNumeric関数」を利用して確認。

→numBox変数の値が数値として変換できない場合。
入力された値が日付の場合をTrueとする。
「IsDatec関数」を利用して確認。

→dateBox変数に入力された値が日付かを確認する。
for文(繰り返し)の条件としてセルの一定の選択範囲のすべてに対して処理を行う。

→変数MyRangeをRange型として宣言して、条件文で表のH列の最後までを条件とする。
選択したセルが「空」の場合をTrueとする。

→Target変数を利用した条件を記述。
MsgBoxのボタンの定数を利用する条件。

→vbYesとvbNoが押された場合で条件を分ける。
FileSystemObjectを利用してフォルダが存在しているかどうかを条件とする。
FileSystemObjectはOSのフィル管理のプログラムを利用するためのプログラム。

→FileSystemObjectのFolderExistsメソッドを利用して条件を記述。
ユーザーフォームの該当するオプションボタンが選択された場合。

→OptionButton1.ValueがTrueの場合。

条件の書き方としては、次のようになります。一例ではありますが、よく利用する書き方でもあるので、知っておくと便利です。

IsEmpty関数を利用して指定セルの中が「空」の場合をTrueとする。

→セルB5が空の場合を条件としています。
'→下のプロシージャではCellsを利用して5行目2列目のB5を指定しています。

Sub UseIsEmpty()
    Dim num1 As Integer, num2 As Integer
    num1 = 2
    num2 = 5
    
    If IsEmpty(Cells(num1, num2)) Then
        MsgBox "条件に合っています。"
    End If

End Sub

実行結果

セルB5に値が入っているかいないかで変わります。

入力された値が数値として変換できない場合(数値でない場合)をTrueとする。
「Not 」 と「IsNumeric関数」を利用して確認。

→numBox変数の値が数値として変換できない場合。
Sub UseIsNumeric()
    Dim numBox
    numBox = InputBox("値を入力して下さい")
    
    If Not IsNumeric(numBox) Then
        MsgBox "条件に合いました。"
    Else
        MsgBox "数字が入力されました。"
    End If
    
End Sub

実行をすると入力ボックスが表示されます。

数値を入力した場合

実行結果

入力された値が日付の場合をTrueとする。
「IsDatec関数」を利用して確認。

→dateBox変数に入力された値が日付かを確認する。
Sub UseIsDate()
    Dim dateBox
    dateBox = Range("A1")
    
    If IsDate(dateBox) Then
        MsgBox "日付が入力されています。"
    Else
        MsgBox "日付ではありません。"
    End If
    
End Sub

実行結果

セルA1に日付が入力されている場合

for文(繰り返し)の条件としてセルの一定の選択範囲のすべてに対して処理を行う

→変数MyRangeをRange型として宣言して、条件文で表のH列の最後までを条件とする
Sub UseForEach()

    Dim MyRange As Range
    
    For Each MyRange In Range(Range("H4"), Range("H4").End(xlDown))
        If MyRange.Value >= 100 Then
            MyRange.Interior.Color = RGB(255, 0, 0)
        End If
    Next MyRange

End Sub

実行結果

シートは気象庁のデータを利用したものです。地点ごとの雨量について昨日までの観測史上1位の値で100mmを超える降水量についてセルが赤に塗りつぶすようにプログラムを組んでいます。条件は「H列の全てのセル」についてです。

今回は以上です。

残り4つのプロシージャについては次回記事の内容になります。

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

ブックマークのすすめ

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

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

制御構文|Excel VBA (Part.7)【For Next】ネスト編(後編)重複のないランダムな数の生成 | 現役エンジニア&プログラミングスクール講師

2022年11月26日
プログラミング学習 おすすめ書籍情報発信 パソコン初心者 エンジニア希望者 新人エンジニア 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.1~Part.17)システム作成 | 現役エンジニア&プログラミングスクール講師

2024年1月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.1)「自動構文チェック機能」「VBAProjectのコンパイル」「プロシージャ実行時エラー」| 現役エンジニア&プログラミングスクール講師

2022年12月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(番外編)| 現役エンジニア&プログラミングスクール講師

2023年2月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

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 | 現役エンジニア&プログラミングスクール講師

2023年2月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