[[20161221143029]] 『全角半角の置換と置換後のフォントの指定』(LeonianIdea) ページの最後に飛ぶ

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

 

『全角半角の置換と置換後のフォントの指定』(LeonianIdea)

Excel VBA入門さんに掲載された下記のコードがやりたい事に近いのですが、

1. 置換対象範囲をActiveSheet.UsedRangeにすること

2. フォントの指定 全角 MS UIゴシック

                  半角 Arial

にするためのコードは、どのようにすればよいのでしょうか?

Sub han2zen()
  Dim c As Range
  Dim i As Integer
  Dim rData As Variant, ansData As Variant
    For Each c In Selection
      ansData = ""
      For i = 1 To Len(c.Value)
        rData = StrConv(c.Value, vbWide)
        If Mid(rData, i, 1) Like "[A-z]" Or Mid(rData, i, 1) Like "[0-9]" Or Mid(rData, i, 1) Like "−" Then
          ansData = ansData & StrConv(Mid(rData, i, 1), vbNarrow)
        Else
          ansData = ansData & Mid(rData, i, 1)
        End If
      Next i
      c.Offset(0, 1).Value = ansData
    Next c

 End Sub

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


 >> 置換対象範囲をActiveSheet.UsedRangeにすること 

 For Each c In Selection を For Each c In ActiveSheet.UsedRange

 にするだけですが?

 >>  フォントの指定 全角 MS UIゴシック 

 変換は 英文字と数字とハイフンのみですか?
 それとも、文字にかかわらず、半角変換できるものはすべて半角変換するということですか?

 その回答にもよりますが、フォント変換は、セル内文字列すべてに対して行っていいのですか?
 それとも、英文字と数字とハイフンのみをフォント変換し、そのほかは、元のままにしたいのですか?

(β) 2016/12/21(水) 15:11


 もし、全領域の全文字に対して変換してOKなら、コードは以下のみでOKです。

 Sub Sample()
    With ActiveSheet.UsedRange
        .Value = Application.Asc(.Cells)
        .Font.Name = "MS UI Gothic"
    End With
 End Sub

(β) 2016/12/21(水) 15:17


置換対象範囲ありがとうございます。
フォント変換は、英文字と数字とハイフンをArial、漢字、ひらがな、カタカナを全角でMS UIゴシック と指定したいです。
(LeonianIdea) 2016/12/21(水) 15:23

 文字列内の文字ごとの処理は非常に負荷が大きいのですが、やむなしですね。

 自信度 40%ぐらいです。試してみてください。

Sub Test()

    Dim r As Range
    Dim c As Range
    Dim s As String
    Dim re As Object
    Dim sm As Object

    Set re = CreateObject("VBScript.RegExp")
    re.Global = True
    re.Pattern = "[A-Za-z0-9−]+"
    For Each c In ActiveSheet.UsedRange.SpecialCells(xlCellTypeConstants)
        c.Value = StrConv(c.Value, vbWide)
        c.Font.Name = "MS UI Gothic"
        For Each sm In re.Execute(c.Value)
            With c.Characters(sm.firstindex + 1, sm.Length)
                .Font.Name = "Arial Unicode MS"
                .Text = StrConv(.Text, vbNarrow)
            End With
        Next
    Next

End Sub

(β) 2016/12/21(水) 21:38


βさん
ありがとうございました。
21:38に投稿されたものを試してみたところ、半角Arialの数値が入っていたセルも、MS UI Gothicになってしまったので、最後に全セル選択してArialにする動作を加えて使うようにしました。
マクロとしては、きっと正解ではないとは思いつつ、日本語をもたないフォントだからこれでいいかなと。
(misegakin) 2016/12/22(木) 13:42

コメント返信:

[ 一覧(最新更新順) ]


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