最初の質問は、大文字と小文字を区別するかどうかを区別したい場合です。つまり、他の単語は"ABC" = "abc"
です。
=
オペレータの動作は、Option Compare
で定義されています。デフォルトはbinary
です。
Option Compare text
sub foo1
Debug.print "ABC" = "abc" ' Prints "True"
end sub
Option Compare binary ' <-- This is the default!
sub foo2
Debug.print "ABC" = "abc" ' Prints "False"
end sub
StrComp
-functionは、同じ結果を取得しますが、MODULの上部に比較オプションを設定する必要はありません。代わりに、あなたは、パラメータとして比較するための所望の方法与えることができます: - それは私が知っている任意のプログラミング言語でケースだあなたは、文字列に空白を先頭または末尾いる場合
sub foo3
Debug.Print StrComp("ABC", "abc", vbBinaryCompare) = 0 ' <-- Prints "False"
Debug.Print StrComp("ABC", "abc", vbTextCompare) = 0 ' <-- Prints "True"
end sub
を、あなたは常にtrim
を使用する必要があります。
Instr
を使用すると、2つの文字列が同一であるかどうかを確認することはかなり悪い考えです。部分文字列検索を使用することができます。 (?)どのようにあなたは、このような「バイナリ」の事を感じることができ、例を追加してください - 「私は一貫性のない結果を得るように私は感じる」
Option Compare text
sub foo4
Debug.print Instr("ABCDE", "cd") ' Prints "3"
end sub
Option Compare binary
sub foo5
Debug.print Instr("ABCDE", "cd") ' Prints "0"
end sub
:
InStr
(ともその対応InstrRev
が)option compare
設定を使用していることに注意してくださいメソッドが期待した結果を返さないことを確認します。 – jonathanaA = Bは、AとBが同じ場合で、同じ(存在する場合)同じ空白がある場合は100%の信頼性があります。これらの2つの事実が常に正しいことを忘れないでください。 –
例:2つのリストがあるとします.1つのリストにはラップトップモデルが含まれ、もう1つには部品番号が含まれています。目標は、すべての部品番号をモデルに関連付けることです。私の結果は、部分的な関連付けのみを生成します。つまり、モデルに関連付ける必要がある10の部品番号がある場合、実際には5または6だけが存在します。私は適切な比較をしていない文字列を別のコードで再度比較し、正しい結果を得ます。このような行動は、私がVBAを使用している間はやや矛盾がなく、「感情」の原因となっています。 – Charles