- ベストアンサー
ひらがなとカタカナを区別して置換するには?VBA
カタカナの「ア」があるのなら置換したいので Sub test() Debug.Print Replace("ア111", "ア", "") End Sub としたのですが、これで問題なく置換されるのですが どうやらひらがなの「あ」も上記のコードで置換されるようです。 Debug.Print Replace("あ111", "ア", "") だと、返り値が「111」でした。 ひらがなとカタカナを区別するには小津すればいいでしょうか? Replace("あ111", "ア", "")の返り値は「あ111」がいいです。
- みんなの回答 (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のお話なのでしょうけれど、 ご質問の際には、ご利用のアプリケーションの名前、バージョン、他、ご使用の環境 等の情報を詳らかにしないと、質問する方にも回答する方にも、 思わぬ結果になったり、無駄な負荷が掛かります。 以後、ご質問の際には、留意なさってみてください。
その他の回答 (1)
- ubku
- ベストアンサー率37% (227/608)
手元のExcel2007SP3で試したところひらがなとカタカナは区別されているようです。 すなわち Replace("あ111", "ア", "")の返り値は「あ111」 で、ご希望通りです。 何か誤解されていませんでしょうか? それともバージョンや環境の違い???
お礼
ありがとうございました。
お礼
ありがとうございました。