|
Microsoftのフォーラム
ht tps://social.msdn.microsoft.com/Forums/ja-JP/52f7099a-6290-493b-9014-c4094f5e5033?forum=vbajp
で解決したようですが、こちらは正解が提示されているのに放置でしょうか?
マナーを守ってくださいね。
(本サイトの基本方針から引用)
> マルチポストについて
> 別のサイト(掲示板)にまったく同じ目的の投稿をすることを、一般に「マルチポスト」といいます。当質問箱では、マルチポストは原則認めています。つまり、ほかのサイトで質問したことをこのサイトで質問してもかまわないということです。
>
> しかし、もしマルチポストをするのなら、可能な限り「○○にも同じ質問を出しました」ということを宣言してください。そして、仮に他のサイトで解決したのなら、ここにも必ずその顛末を書いてください。質問しっぱなし、というのはモラルに反します。「解決したからいいや」というのではありません。
----------
ところで、あちらの解決しましたというコードについて言えば、
カタカナが1文字でも含まれているものに限定していますね。
カタカナは含まない場合の、全角の英数字が全角のまま残ってしまっています。
また、繰り返しのなかで何度もCreateObject("VBScript.RegExp")している点も改善すべきでしょう。
一方、亀マスタさん作成のコードは、漏れなく半角に変換されます。
正規表現を持ち出すまでもないということですね。
----------
ちなみに、
>セル参照のシート名はそのままにすることはできませんでしようか?
実は、
For Each rTarget In Sht.UsedRange
rTarget.FormulaLocal = StrConv(rTarget.FormulaLocal, vbNarrow)
Next
とすれば、
シート名に全角カタカナが使われていて、シート名を半角に変換したものを
入力しても、「Excelが気を利かせて自動的に元の全角と認識してくれる」ようですね。
ですから、関数部分もシート名の部分も含め、
単純に上の処理でも結果オーライになっていたはずです。
これはやってみないと中々気づかない点ですな。
----------
なお、半角カタカナを求める指示そのものに違和感があります。
いまやビジネス現場でも半角カタカナは余り使用されないはずです。
|
|