[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『全角半角の置換と置換後のフォントの指定』(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
文字列内の文字ごとの処理は非常に負荷が大きいのですが、やむなしですね。
自信度 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
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.