2013-06-11 4 views
18

私は、ユーザーがアドレスを入力し、アドレスの要素をデータベースと照合して場所を見つけることを可能にするVBAプログラムに取り組んでいます。VBAでは単語を比較する際に大文字と小文字の区別をなくしますか?

残念ながら、私は大文字と小文字の区別に繰り返し問題があります。

例えば、私はこのコードを使用していたとき:

For i = 11 To lRowB 
Range("B" & i).Activate 
myResult = IsNumeric(Application.Match(ActiveCell.Value, manilaListRange, 0)) 

それはつもり私のデータベースから単語のリストにアクティブセルの値を比較しています。

If Range("J6").Value = "tawi" Then 
Range("J6").Value = "Tawi-Tawi" 
End If 

:私のアクティブセル内の単語は「マイアミ」または「MIAMI」であり、唯一の「マイアミ」は、それが動作しませんデータベースにある場合、問題が

他の例...、です同じ問題ですが、同じケースで書かれた単語だけがうまくいくでしょう。

どうすればこの問題を解決できますか?それは特に迷惑で、可能なすべてのケースでデータベースを書き直すことはできません!

ありがとうございます!

+1

アプリケーションの置き換え " .matchは大文字と小文字が区別されないので、別の問題があると思います。 – JosieP

答えて

38

あなたはモジュールレベルで発行でき文があります:ここでは

は一例です。

Option Compare Text 

Sub testCase() 
    If "UPPERcase" = "upperCASE" Then 
    MsgBox "this is true: option Compare Text has been set!" 
    End If 
End Sub 

http://www.ozgrid.com/VBA/vba-case-sensitive.htmを参照してください:これは、次のコードは、メッセージ「これは本当です」と表示されますを意味します。私はすべてのインスタンス(例えばApplication.Match関数など)の問題を完全に解決するかどうかはわかりませんが、すべてのif a=bステートメントを処理します。 Application.Matchについては、LCase関数を使用して引数を大文字または小文字に変換したい場合があります。

+0

警告として、2つの文字列が同じかどうかを確認しようとすると、これはうまくいきませんでした。この記事の意味は、テキストの比較と比較して小さくても大きくてもうまくいくことを意味します。http://msdn.microsoft.com/en-us/library/8t3khw5f.aspx大文字と小文字が区別されるSalesforce IDを使って作業していますが、Option Compare Textを設定しても、VBAはi3vzをi3vZと同じように見つけました。 – rryanp

+2

@rryanp 'Option Compare Text'は大文字と小文字を区別するために_supposed_ **なので、あなたが見たものはあなたが期待するものです。'' i3vz "<>" i3vZ "'のように '' Option Compare Binary''を代わりに使うことができるように** sensitive **にしたい場合 – Floris

+1

ああ、私は試しに行くよOption Compare Binary - おかげでたくさんの情報に! – rryanp

12

両方の値を小文字に変換して比較することができます。

Option Compare Text 

これは、すべての「テキストの比較」を作る大文字と小文字を区別:

If LCase(Range("J6").Value) = LCase("Tawi") Then 
    Range("J6").Value = "Tawi-Tawi" 
End If 
3

比較対象のリストが大きい場合(つまり、上記の例のmanilaListRangeの範囲)、マッチ機能を使用することは賢明です。これは、プロシージャを遅くする可能性のあるループの使用を回避します。 manilaListRangeがすべて大文字か小文字かを確認することができれば、これは私にとって最良の選択肢のようです。 「UCase」または「LCase」をマッチさせるとすぐに適用できます。

あなたは、あなたが比較「検索」する多くの方法があり、その場合には、この範囲をループに頼る必要がある場合がありますManilaListRangeを制御していなかった場合、「INSTRは」など

関連する問題