• ベストアンサー

ひらがなとカタカナを区別して置換するには?VBA

カタカナの「ア」があるのなら置換したいので Sub test() Debug.Print Replace("ア111", "ア", "") End Sub としたのですが、これで問題なく置換されるのですが どうやらひらがなの「あ」も上記のコードで置換されるようです。 Debug.Print Replace("あ111", "ア", "") だと、返り値が「111」でした。 ひらがなとカタカナを区別するには小津すればいいでしょうか? Replace("あ111", "ア", "")の返り値は「あ111」がいいです。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

こんにちは。 Compare モードを確認してください。 対策として、いくつか例を挙げてみます。 ' ' // BinaryCompareによる文字列比較を明示的に指定するようにします。 Sub ReW9181464a()   Debug.Print Replace("あ111", "ア", "", , , vbBinaryCompare) ' ' または   Debug.Print Replace("あ111", "ア", "", , , 0) ' ' または、モジュール先頭宣言部にて ' ' Option Compare Binary を宣言した上で   Debug.Print Replace("あ111", "ア", "") End Sub ' ' // 文字列に含まれない文字を置換するのも非効率なので、 ' ' // 普通はInStr関数と組み合わせます。 Sub ReW9181464c() Dim s As String   s = "あ111"   If InStr(1, s, "ア", vbBinaryCompare) Then     Debug.Print Replace(s, "ア", "", , , vbBinaryCompare)   Else     Debug.Print s   End If End Sub ' ' /// 以下、VBAのヘルプより |Option Compare ステートメント (モジュール先頭宣言部に記述) | Option Compare Binary 全角/半角、大文字/小文字、ひらがな/カタカナを区別する | Option Compare Text 全角/半角、大文字/小文字、ひらがな/カタカナを区別しない | Option Compare Database Accessの設定(既定値はTextモード)に依存 ←▼期待外れの原因はココ!▼ Office Kitami >『Replace関数 - 文字列内の検索文字列を置換文字列に置き換える - 』 http://www.office-kitami.com/lesson/afunction/replace.html |Replace(文字列, 検索文字列, 置換文字列, 開始位置, 置換回数, 比較モード) |■引数 | 文字列 expression  置換対象の文字列を指定 | 検索文字列 find   検索する文字列を指定 | 置換文字列 replace  置換する文字列を指定 | 開始位置 start    検索の開始位置を指定。省略した場合は、1文字目から検索を開始する 【省略可】 | 置換回数 count    置換する回数を指定。検索されたすべての文字列を置換したい場合は、-1を指定するか、指定を省略する 【省略可】 | 比較モード compare  文字列の比較モードを 表A の値で指定。クエリやフォームでの使用で省略した場合は2、モジュール(VBA)での使用で省略した場合は-1が指定されたものと見なされる 【省略可】 |■表A 引数 比較モード の設定値 | -1 vbUseCompareOption   Option Compareステートメントの設定にしたがう |     (Option Compareステートメントの設定がない場合はバイナリモード) | 0 vbBinaryCompare     バイナリモードで比較する |     (全角/半角、大文字/小文字、ひらがな/カタカナを区別する)  ←★期待しているのはコレ | 1 vbTextCompare      テキストモードで比較する |     (全角/半角、大文字/小文字、ひらがな/カタカナを区別しない) ←▼期待外れの原因はココ!▼ | 2 vbDatabaseCompare    Accessの設定にしたがう |     (Accessの設定の既定値はテキストモード) ←▼期待外れの原因はココ!▼ たぶん、、、Access VBAのお話なのでしょうけれど、 ご質問の際には、ご利用のアプリケーションの名前、バージョン、他、ご使用の環境 等の情報を詳らかにしないと、質問する方にも回答する方にも、 思わぬ結果になったり、無駄な負荷が掛かります。 以後、ご質問の際には、留意なさってみてください。

TUUUNWMGTVVLL
質問者

お礼

ありがとうございました。

その他の回答 (1)

  • ubku
  • ベストアンサー率37% (227/608)
回答No.1

手元のExcel2007SP3で試したところひらがなとカタカナは区別されているようです。 すなわち Replace("あ111", "ア", "")の返り値は「あ111」 で、ご希望通りです。 何か誤解されていませんでしょうか? それともバージョンや環境の違い???

TUUUNWMGTVVLL
質問者

お礼

ありがとうございました。

関連するQ&A

専門家に質問してみよう