- ベストアンサー
半角全角区別しない場合の置換
エクセルvbaで Cells.Replace What:=str置換前, Replacement:=str置換後, LookAt:=xlPart のように置換するときに 半角でも全角でも置換できるようにするにはどうすればいいですか? Replaceにカーソルを当てF1を押すと ライブラリでVBAとExcelのヘルプがありますが どちらを見ても、半角全角区別しない場合の書き方は書いてなかったため わかりませんでした。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
MatchByte:=False を付け加えて Cells.Replace What:=str置換前, Replacement:=str置換後, LookAt:=xlPart, MatchByte:=False などの様にします。 尚、 LookAt:=xlPart と MatchByte:=False はどちらもデフォルトで設定されている規定値であり、Excelを起動させてから[置換]や[検索]の[オプション]設定で「検索方向」や「半角と全角を区別する」の設定を変更していなければ、最初から LookAt:=xlPart や MatchByte:=False の設定となっていますので、[置換]や[検索]の[オプション]の設定や、マクロで[置換]を行なった際の設定でその部分の設定が変更されていなければ、 Cells.Replace What:=str置換前, Replacement:=str置換後 とするだけでもその様な置換を行う事が一応は可能です。 ですが、毎回必ず「[置換]や[検索]の[オプション]の設定が変更されていない状態」となっているとは限りませんから、間違いなく置換を行いたい場合には、置換の際に全ての設定値を指定して置換を行った方が無難です。 【参考URL】 セルの文字列置換 Replaceメソッド - Excel VBA他サンプル等 http://excwlvba.blogspot.jp/2013/03/replace_26.html
その他の回答 (1)
- keithin
- ベストアンサー率66% (5278/7941)
ご利用のエクセルのバージョンは幾つでしょうね。 【VBAのヘルプより抜粋】 -------------------------------- Replace メソッド 指定されたセル範囲内のセルの文字を検索して置換します。このメソッドを使用すると、選択範囲またはアクティブ セルのどちらも変更されません。 Replace ワークシート関数については、「Visual Basic でワークシート関数を使用する」を参照してください。 構文 expression.Replace(What, Replacement, LookAt, SearchOrder, MatchCase, MatchByte) (中略) MatchByte 省略可能です。バリアント型 (Variant) の値を使用します。この引数は、2 バイト (全角) 文字の言語サポートが選択またはインストールされているときだけ使用できます。半角と全角を区別するには、True を指定します。半角と全角を区別しないようにするには、False を指定します。 (後略) ------------------------------
お礼
ありがとうございました。
お礼
ありがとうございました。