[[20150828235544]] 『半角数字を全角数字の方法は?』(ZEN) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『半角数字を全角数字の方法は?』(ZEN)

半角を全角(数字・アルファベット)にする方法をご教授お願いします。
以下で出来たのはアルファベットのみで
数字が出来ませんでした。両方が含まれているセルなので同時実行したいのですが
よろしくお願いします。

    Dim c As Range
    For Each c In Selection
      c.Value = StrConv(c.Value, vbWide)
    Next

また、コマンドボタンにマクロ登録して実行したいので
マクロボタンクリック毎に全角/半角 交互にできれば
更にいいのですがお解りに成る方お願いします。

< 使用 Excel:Excel2010、使用 OS:Windows7 >


・(マクロで)セルの書式を文字列に変更したうえで、
 今のコードを実行するか
・ c.Value = "'" & StrConv(c.Value, vbWide)
とするかでしょうか。

後半は、
・もし 2 * Len と LenBが一致していなければ(全角でない文字があるので)、全角化し、
・そうでなければ、半角にする(vbNarrow)
といった分岐を行えばよろしいのでは?

(γ) 2015/08/29(土) 00:20


後半は、Len = LenBならすべて半角なので、全角化するとも考えられるね。
まあ、あなたの方針に沿うように考えてください。

(γ) 2015/08/29(土) 00:24


γさん
ありがとうございます。
条件分岐式がいろいろweb参考にしたのですが
解りませんでした ご指導ください
    Dim c As Range

If Len(ActiveCell.Value) = LenB Then★

    For Each c In Selection
      c.Value = StrConv(c.Value, vbWide)
    Next
Else

    For Each c In Selection
      c.Value = StrConv(c.Value, vbNarrow)
    Next
  End If
(ZEN) 2015/08/29(土) 02:39

 肝心なところの説明が不足していたようで、失礼しました。
 こんな感じですか?

 Sub test2()
     Dim s As String
     Dim c As Range

     s = ActiveCell.Value
     If Len(s) = LenB(StrConv(s, vbFromUnicode)) Then
         For Each c In Selection
             c.Value = StrConv(c.Value, vbWide)
         Next
     Else
         For Each c In Selection
             c.Value = StrConv(c.Value, vbNarrow)
         Next
     End If
 End Sub
 セルの書式が文字列であるという前提です。

(γ) 2015/08/29(土) 06:06


 補足しておきます。

 上で書いたコードの意味は、例えば、
 下記を参照してください。
http://www.moug.net/tech/exvba/0140023.html

 これよりも、次の考え方のほうがわかりやすかったですね。
 つまり、「半角に変換したものが、元の文字列と同じなら半角と判定する」、
 というものです。
 下記を参照してください。
http://officetanaka.net/excel/vba/tips/tips145.htm

(γ) 2015/08/29(土) 22:34


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

StrConv 関数 文字列 勉強してみます。
希望のことが出来ました。
解決です(^_^)v
(ZEN) 2015/08/30(日) 01:07


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.