• ベストアンサー

VBA(Excel)で文字列内の"~"記号だけ半角変換したくない

VBA(Excel)で、StrConvを用いて、文字列内に存在する記号を全角→半角に変換して、再び文字列内に格納するようにしています。   strValue = StrConv(strValue, vbNarrow) しかし、"~"も"~"に変換されてしまいます。 "~"は半角変換しないようにしたいのですが、何か良い手法はありますでしょうか? どなたかご教授下さいませ。 よろしくお願い致します。

  • THUBAN
  • お礼率76% (771/1002)

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

  • ベストアンサー
  • ham_kamo
  • ベストアンサー率55% (659/1197)
回答No.1

もし元の文字列に半角の~が入ることがないのであれば、   strValue = StrConv(strValue, vbNarrow) の後に、   strValue = Replace(strValue, "~", "~") で、"~"だけ"~"を変換してはいかがでしょうか。 もし元々の文字列に"~"が入っているのであれば、   strValue = Replace(strValue, "~", "*~*")   strValue = StrConv(strValue, vbNarrow)   strValue = Replace(strValue, "*~*", "~") のように、元々入っている"~"と、"~"が変換された"~"が区別できるように、いったん他の文字列に変換して、後で元に戻す、というのはいかがでしょうか。

THUBAN
質問者

お礼

逆に"~"がある場合は"~"に変換するようにしなければいけなくなるかもしれないので、たぶん Replace 1行のみでいくことになると思いますが、2番目に提案していただいた内容も、とても参考になります。 なるほど!!!と思いました! どうも、ありがとうございました!! m(_"_)m

関連するQ&A

  • 文字列変換

    他人が作ったExcelデータを修正しなければいけなくなったのですが時間がかかって手間取っています。 する作業は、選択した文字列を ・カタカナは全角 ・ローマ字は半角 ・数字は半角 とすることです。 手作業ですると時間がかかるので、 マクロとかVBAで作業に無駄をなくせればと思いました。 それで調べてみたのですがStrConv関数というのが出てきましたが、 文字種ではしてくれなさそうなのです。 参考になりそうなものはないでしょうか?

  • EXCELのVBAで半角数字を全角数字へ変換

    EXCEL2007を使用しております。 VBAにて半角数字を全角数字へ変換したいと思っております。 最初にStrconv (cells (i 、j ) 、vbwide ) としていました。セルには数字が入っていますが、これで実行しても半角のままでした。 これは数字を文字列に変えないとだめなのでは思い、Cstr ( cells ( i 、j ) としてそれをstring として定義した項目へ送ってからStrconv で変えようとしたのですが、これでも半角のままでした。 何か勘違いをしているように思うのですが、アドバイスいただければ幸いです。 宜しくお願い致します。

  • エクセルで半角文字に色を付けるVBA

    エクセルで半角文字を全角に変換しつつ、変換した文字には色を付けるマクロを考えています。 半角→全角の変換はこの記述でできましたが、 myTEXT = StrConv(myTEXT, vbWide) 変換した文字(変換後の文字)に色を付ける、というのが分かりません・・・。 そのような記述は可能でしょうか?お時間あるときにでもご教授いただけると助かります。

  • 【Excel VBA】A列の全角・半角文字をチェック

    【Excel VBA】A列の全角・半角文字をチェック Excel VBAの初心者です。 仕事で必要なため、教えていただけると助かります。 【やりたいこと】 Excel VBAで、入力が完了したExcelシートのA列(A1からA10)が、 半角のみであること、または全角が入力されていないこと、を チェックしたいです。 半角以外の文字があった場合は、メッセージを表示します。 また、半角以外のセルがあった場合は、そのセルの色を水色にします。 入力チェックの方法は、ボタンにマクロを登録して、 そのボタンを押下することで行います。 以下に、僕が試したプログラムを記します。 アドバイスをいただけると幸いです。よろしくお願いします。 Sub 入力チェック() Dim cellValue As String Dim strANSI As String Dim i As Integer For i = 0 To 10 cellValue = Cells(1, i + 1) strANSI = StrConv(cellValue, vbFromUnicode) If Len(cellValue) = LenB(strANSI) Then MsgBox "セルは半角のみ" myColor = 8 Else MsgBox "セルの内容は全角のみ" End If MsgBox "セルの内容は全角と半角があり" Next i End Sub

  • Excel2010:文字列の表示

    Excel2010で、添付画像のような文字列があるとき、V列に以下のような規則で表示することはできるでしょうか? ■規則 英数字は半角 カタカナは全角 スペースは全角 ハイフンは半角 ハイフン以外の記号は全角 それ以外は全角 自分としては、難しいのでたいしたお礼は言えないと思いますがよろしくお願いします。 回答よろしくお願いします。

  • 全角から半角に変換する

    Javaで、文字列の中に全角があれば単純に半角に変換するような処理をしたいです。具体的には、次のような文字列があった場合、以下のように変換したいです。 <変更前> あ亜アアaaAA11%% <変更後> ア亜アアaaAA11%% つまり、以下のようにしたいです ・全角ひらがな→半角カタカナ ・漢字:何もしない ・全角カタカナ→半角カタカナ ・半角カタカナ:何もしない ・半角アルファベット→何もしない ・全角アルファベット→半角アルファベット ・半角数字→何もしない ・全角数字→半角数字 ・半角記号→何もしない ・全角記号→半角記号 上記のように書くと複雑に見えますが、要は基本的に半角に相当する文字がある場合には半角にしたいだけです。Googleで探してみましたが、Javaで標準で上記のような処理を出来るようなメソッドを見つけることができませんでした。このようなメソッドは標準で存在しますでしょうか? 自作する場合、いくつかアプローチがあると考えられますが、最もパフォーマンスを速くしたい場合にはどのような作り方にした方がよいでしょうか。お手数ですが、宜しくお願いします。 <追伸> プレビューで見たら、半角の文字が全角に自動的に変換されてしまいました。。 例文からはわかりにくいかも知れませんが、宜しくお願いします。。

    • ベストアンサー
    • Java
  • 【VBA】文字列の場所入れ替え

    こちらの識者の方々にはいつもお世話になっています。 VBAの質問です。 環境は下記になります。 OS=windowsXP SP3 Office=Excel2003(11.8347.8403) SP3 A列に住所のデータがあるのですが、形式がちょっと特殊で、 A1 千代田区千代田1-1-1-301千代田マンション1号棟 A2 千代田区千代田2-3-4 というな形になっています。(A1,A2はセル番地表示で、その文字列がセルにあるわけではありません) 並び順が、市名(区名)・町名・丁目・番地・号地・部屋番号・物件名となっています。 データの定義は、丁目・番地・号地・部屋番号については半角数字・市名(区名)・町名・物件名は数字やアルファベットを含むものであっても全角であることは担保されております。 戸建てであればいいのですが、集合住宅の場合、物件名と部屋番号が入れ替わってしまっています。 これを、できればA列には住所、B列には物件名・(全角スペース)・部屋番号とわけたいのです。   A           B 1 千代田区千代田1-1-1  千代田マンション1号棟 301 2 千代田区千代田2-3-4 1.最後の文字列が全角か半角かで処理を分岐、(半角ならスルー、全角なら2.以降に) 2.セル内の最後の半角文字の次の文字から最後の文字までを抜き出す 3.最後のハイフン(-)の次の文字から全角文字の前の文字までを抜き出す 4.2と3で抜き出した文字列を合体 という流れでやろうと思い、まずは1のコードを、StrConv(Right(Range("A1"),1), vbNarrow) で検査してみたのですが、vbNarrowは半角に変換できる文字列のみ対応しているようで、漢字のものはスルーされてしまい、検査段階で既に頓挫しています。 上記のような場合、どのようなコードが適していますでしょうか。 質問に不備不足等ございましたらご指摘ください。 ご面倒お掛けしますがよろしくお願いします。

  • 半角の記号について

    自分のケータイから他社のケータイにメールをするときに、「半角のカタカナは全角のカタカナに変換されてしまう」ということは友達に教えてもらったのですが、半角の記号って全角の記号に変換されてしまうのでしょうか?? 顔文字とかするときに、半角と全角では大きく変わってしまうので困っています↓↓ すごく初心者まな質問ですいません。。。

  • 【PHP】全角記号を半角記号に変換するには?

    PHP5使用者です。 全角記号を半角記号に変換するにはどうすればいいのでしょうか? 現在、 mb_convert_kana($str, 'a' , 文字コード); で変換していますが、なぜか  !”#$%&’()*+,-./:;<=>?@[¥]^_`{|}~  のうち、  ’ ” ¥ ~ は変換してくれません。 それに本来これは記号変換の関数ではありませんし… 全角記号を半角記号に変換したい場合、皆さんはどうされてますか? よろしくお願いします。

    • 締切済み
    • PHP
  • 全角英数字を半角に excel vba

    インターネットで全角を半角に変換するvbaを調べたら、strconvみたいな関数の説明がいろいろあったので、私のケースにあてはめて考えましたがどうもしっくりきません。例えばセルの A1,A2,A3..............A200位まで(最後の位置A200は毎回変わります)全角の英字 (TOKYO, OSAKA,NAGOYA) など都市の名前がいろいろ入っているですがそれをすべて半角に変換するvba関数はどういった表記でできるかご教授願います。毎月の仕事で必要なEXCEL作業の一部でエクセルのASC関数などは使用せずにvbaのをくみこみたくここで質問を入れてみました。vba全くの初心者なので簡単な表記であれば助かります。

専門家に質問してみよう