VBAの比較 Operators: 等しくない、 Less よりまたは等しい
⚡ スマートサマリー
VBAの比較 Opera演算子は、ある値を別の値と比較し、True または False を返します。このページでは、6 つの演算子を定義し、If 文内でそれらがどのように使用されるかを示し、テキストと日付がどのように比較されるかを説明し、誤った結果を生み出す間違いを一覧表示します。

VBAの比較 Operaトー
これらは値を比較するために使用される演算子です。比較演算子には、等しい、より小さい、より大きい、等しくないなどがあります。
比較演算子は、検証目的で値を比較するために使用されます。たとえば、ping シンプルなPOSアプリケーションです。このアプリケーションでは、入力された値を登録前に検証する必要があります。このような場合、比較演算子を使用できます。この演算子は、負の数と照合したり、支払額が請求額を超えていないことを確認したりします。比較演算子は、このような状況で非常に役立ちます。
すべての比較は、真(True)または偽(False)のいずれかの値を返します。数値を返すことはありません。if文は、この結果に基づいて動作します。
次の表は、で定義されている比較演算子の一覧です。 VBA.
| Operator | 詳細説明 |
|---|---|
| = | 等しい: 2つの値が等しいかどうかをチェックします。代入演算子としても使用されます。 |
| < | Less than: 左側の値が右側の値より小さいかどうかをチェックします |
| > | より大きい: 左側の値が右側の値より大きいかどうかをチェックします |
| <> | 等しくない: 2つの値が互いに異なるかどうかをチェックします |
| <= | Less 以下: 左側の値が右側の値より小さいか同じかどうかをチェックします |
| >= | 以上: 左側の値が右側の値より大きいか同じかをチェックします |
各演算子が2つの変数に適用される様子を見ることで、返される結果を予測しやすくなる。
VBAの比較 Opera例付きの説明
次の表はExcel VBAの比較を示しています。 Opera例と出力を示します。
| S / N | Operator | 例: | 出力 |
|---|---|---|---|
| 1 | = | x = z の場合、次の場合 | 等しい場合は true を返し、そうでない場合は false を返します |
| 2 | < | x < z の場合 | x が z より小さい場合は true を返し、それ以外の場合は false を返します。 |
| 3 | > | x > z の場合 | x が z より大きい場合は true を返し、それ以外の場合は false を返します。 |
| 4 | <> | x <> z の場合 | 等しくない場合は true を返し、等しくない場合は false を返します |
| 5 | <= | x <= z の場合 | x が z 以下の場合は true を返し、それ以外の場合は false を返します。 |
| 6 | >= | x >= z の場合 | x が z 以上の場合は true を返し、それ以外の場合は false を返します。 |
ソースコードの例
同等の比較 Operaタ
If 2 = 1 Then MsgBox "True", vbOKOnly, "Equal Operator" Else MsgBox "False", vbOKOnly, "Equal Operator" End If
ここに、
- 「If 2 = 1 then… Else… End If」 if ステートメントを使用して条件「2 = 1」を評価します。
- 「メッセージBox... " メッセージ ボックスを表示する組み込み関数です。
- 最初のパラメータ「True」または「False」は、メッセージ ボックスに表示されるものです。この例では、2 は 1 と等しくないため、メッセージ ボックスには「false」と表示されます。
- 2番目のパラメータ「vbOKOnly」はメッセージボックスに表示されるボタンです。
- 3番目のパラメータ「等しい」 Opera「tor」はメッセージ ボックスのタイトルです。
上記のコードを実行すると、次の結果が得られます。
その単一のテストは最も単純な形式です。実際のマクロは、複数の比較を組み合わせ、複数の結果の間で分岐します。
比較の使い方 OperaIf ステートメント内の tors
比較演算子は単独ではほとんど役に立ちません。その真偽値は判定構造に渡され、最もよく使われるのはif文です。以下の例では、セルA1に格納されているスコアを採点し、その結果をセルの横に表示します。
Sub GradeScore() Dim Score As Long Score = Sheet1.Range("A1").Value If Score >= 90 Then Sheet1.Range("B1").Value = "Distinction" ElseIf Score >= 50 Then Sheet1.Range("B1").Value = "Pass" ElseIf Score < 0 Then MsgBox "A score cannot be negative", vbCritical, "Invalid Entry" Else Sheet1.Range("B1").Value = "Fail" End If End Sub
このマクロはスコアを一度読み込み、その後、3つの条件に対して順番にテストを行います。その動作の理由を4つのポイントで説明します。
- 順序は重要です: VBA は True を返す最初の分岐で停止します。 スコア >= 50 スコア >= 90 すべての高得点を合格とみなすだろう。
- それ以外の場合は、すべてを包括する用語です。 それまでのすべてのテストに失敗した値はすべてElseに渡されるため、未処理の入力は残らない。
- 連鎖なし: VBA は読み取れません 0 <= スコア <= 100。 書く スコアが0以上かつスコアが100以下の場合 論理演算子 を代わりにお使いください。
- 同じテストだが、構造が異なる。 同じ条件が Do While と Select Case を駆動するため、これらの演算子は記述するすべてのループに引き継がれます。
💡ヒント: 数値型で変数を宣言します。以下に示すように スコアが暗いほど値がテキストを保持するバリアントのままの場合、 「9」>「10」 文字単位で比較が行われるため、Trueを返します。
VBAでテキストと日付を比較する
Numbers 比較は算術が示すとおりに正確に行われるが、テキストと日付は独自のルールに従い、どちらも初心者を驚かせる。
文字列はソート位置を使用して一度に 1 文字ずつ比較されるため、「Apple」<「Banana」は True を返します。デフォルトでは比較は大文字と小文字を区別するため、「guru99」=「Guru99” は False を返します。 オプション比較テキスト モジュールの先頭に を追加すると、そのモジュール内のすべての文字列比較で大文字小文字が区別されなくなります。モジュールを変更せずに単一のテストを行う場合は、vbTextCompare 引数を指定して StrComp を使用してください。
日付は1899年12月30日から数えたシリアル番号として保存されるため、同じ6つの演算子と直接比較できます。 DueDate < Date の場合 Date関数は、現在のシステム日付を同じ種類のシリアル番号として返すため、期限切れアイテムを正しく検出します。ただし、テキストとして保持される日付には注意が必要です。インポートされたファイルから読み込まれた「01/02/2026」は文字列であり、日付ではないため、アルファベット順に比較されます。テストする前にCDate関数で変換してください。
各タイプのルールを理解していれば、ほとんどの予期せぬ事態は回避できますが、それでも経験豊富な開発者でもいくつかのミスに引っかかってしまうことがあります。
VBAで値を比較する際によくある間違い
以下の5つの問題は、予期せぬ結果をもたらす比較の大部分を占めています。
- 課題との比較を混同する: 条件外では、 X = 5 x には 5 が格納されます。If 文の中では、同じ記号が等価性をテストします。VBA には独立した == 演算子がないため、文脈をよく読んでください。
- テスト Double 完全等号の値: 保存された精度は、0.1 + 0.2 = 0.3 が False を返すことを意味します。代わりに、丸められた差を比較してください。たとえば Abs(a – b) < 0.000001 の場合.
- あらゆるものをNullと比較する: Null は何とも等しくなく、別の Null とも等しくありません。IsNull を使用してテストしてください。 = ヌル.
- テキストと数値を比較する: テキストとして「100」が表示されているセルは、数値の100とは等しくありません。テストを行う前に、CLngまたはCDblを使用して変換してください。
- .Valueではなく.Textを読み込む: .Text プロパティは、表示されている内容を返しますが、列幅と書式設定によって切り詰められています。必ず .Value と比較してください。
上記のExcelファイルをダウンロードしてください。 Code

