01-VBA

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

お知らせ

こちらの記事は、電子書籍「難しく考えないExcel VBA基礎学習編」として出版されました。記事は途中までが試し読みの対象となります。

howahowablogのVBA記事が電子書籍にて販売となりました。

目標

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

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

比較演算子の復習

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

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

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

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

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

条件の発展的な利用方法

条件の発展的な利用方法(比較演算子を利用しない場合あり)

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

「IsEmpty関数」の利用
IsEmpty関数は指定セルの中が「空」の場合にTrueを返します
記述例:IsEmpty(Range(“B5”)) のように利用します。

→サンプルプロシージャではセルB5が空の場合を条件としています。
「Not」と「IsNumeric関数」の利用
IsNumeric関数は引数に指定された値が数値として変換できない場合(数値でない場合)にTrueを返します。
Notは真偽値を反転させる演算子(論理演算子)です。

→サンプルプロシージャではnumBox変数の値が数値として変換できない場合。
「IsDatec関数」の利用
IsDatec関数は引数に指定された値が日付の場合にTrueを返します。

→サンプルプロシージャではdateBox変数に入力された値が日付かを確認する。
複数選択した連続するセルを条件に利用
複数選択した連続するセルに対して、繰り返しの処理を行う

→変数MyRangeをRange型として宣言し、表として認識できるH列で、条件(値が100以上)に合うセルを赤くする。
選択したセルを条件に利用
セルが選択された時、値が「空」の場合にTrueを返すWorksheet_SelectionChangeを利用。

※セル選択時にプロシージャを起動するイベントWorksheet_SelectionChangeを利用します。Worksheet_SelectionChangeの引数にはTarget変数を利用します。これはワークシートが持つイベントプロシージャです。記述は個別のワークシートのプロシージャとして記述します。ここでは「Sheet1」にプロシージャを記述します。
MsgBoxが持つボタンの定数を条件に利用

→vbYesとvbNoが押された場合で条件を分ける。
FileSystemObjectを利用してフォルダの有無を条件として利用。
FileSystemObjectはOSのファイル管理のプログラムを利用するためのプログラム。

→FileSystemObjectのFolderExistsメソッドを利用して条件を記述。
ユーザーフォームのオプションボタンを条件として利用

→OptionButton1.ValueがTrueの場合。

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

「IsEmpty関数」の利用
IsEmpty関数は指定セルの中が「空」の場合にTrueを返します
記述例:IsEmpty(Range(“B5”)) のように利用します。

→サンプルプロシージャではセル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となりIf文のブロックが処理されます。ここでは「条件に合っています。」と表示されます。

この記事の試し読みはここまでとなります。

今回は以上です。

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

howahowablogのVBA記事が電子書籍にて販売となりました。

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

ブックマークのすすめ

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

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