VBAの比較 Operators: 等しくない、 Less よりまたは等しい

⚡ スマートサマリー

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

  • <XNUMXxEXNUMX><XNUMXxEXNUMX><XNUMXxXNUMXA><XNUMXxXNUMX><XNUMXxXNUMXA>️️ 目的: 比較演算子は、真または偽と評価される条件をテストすることによってデータを検証します。
  • 🔢 6 Operators: 等しい、より小さい、より大きい、等しくない、以下、以上。
  • 🔁 二重の役割: 等号は条件式の中では比較を行い、条件式の外では値を代入します。
  • 🧪 if文: どのコードを実行するかを制御するために、すべての比較はIf、ElseIf、またはDo Whileブロック内に配置されます。
  • 🔤 テキストと日付: 文字列は文字単位で比較され、日付は連番として比較されます。
  • ⚠️ 精密トラップ: ツー Double 見た目が同じ値でも等価性テストに合格しない場合があるため、差を四捨五入して比較してください。

VBAの比較 Operaトー

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」はメッセージ ボックスのタイトルです。

上記のコードを実行すると、次の結果が得られます。

等しい Operaタ

その単一のテストは最も単純な形式です。実際のマクロは、複数の比較を組み合わせ、複数の結果の間で分岐します。

比較の使い方 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

よくあるご質問

いいえ。VBAは最初の比較をTrueまたはFalseに評価し、その結果を10と比較するため、誤解を招く結果になります。2つのテストを別々に記述し、Andで結合してください。

Like は文字列を正確な値ではなくパターンと比較します。ワイルドカードには、任意の文字を表すアスタリスクと 1 文字を表す疑問符が含まれます。Guru99” いいね “Guru*”はTrueを返します。

`If​​ ws Is Nothing Then` のように、`Is` 演算子を使用します。等号は値を比較しますが、`Is` は 2 つのオブジェクト変数が同じオブジェクトを指しているかどうかをチェックします。これは、オブジェクトに対して有効な唯一のテストです。

はい。ルールを分かりやすい言葉で説明してください。例えば、「本日以前に発注された500を超える注文にフラグを立てる」などと入力すると、AIアシスタントが該当する条件を返します。信頼する前に、境界値を確認してください。

はい。Ifブロックを貼り付けてAIアシスタント tracどの分岐が各値をキャッチするかを確認し、到達不能な ElseIf またはテキストと数値の比較を指摘します。修正をステップごとに確認します。ping コードを通して。