重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

お世話になります。

word vbaの特定の文字変換を行っております。
条件としては、
(1)1桁の数値を全角に変換
(2)2桁以上の数値+カンマを半角変換
(3)上記で変換されたカンマ+半角数値1桁を全角に変換

ソースを作成してみました。

Dim sw(1 To 3) As String
Dim cw(1 To 3) As Integer
Dim i As Integer
Dim t As Integer
t = 1
sw(1) = "[!0-9][0-9][!0-9]"
sw(2) = "[0-9,]{2,}"
sw(3) = "[!0-9],[0-9][!0-9]"
cw(1) = 6
cw(2) = 4
cw(3) = 6
With Selection
For i = 1 To 3
.HomeKey wdStory
With .Find
.ClearFormatting
.Text = sw(i)
.Replacement.ClearFormatting
.Replacement.Text = ""
.MatchFuzzy = False
.Forward = True
.Wrap = wdFindStop
.Format = False
.MatchWholeWord = False
.MatchWildcards = True
.Execute
End With
Do While .Find.Found = True
If i = 1 Or i = 2 Then
.Range.CharacterWidth = i + cw(i)
ElseIf i = 3 Then
.Range.CharacterWidth = t + cw(i)
End If
.Collapse wdCollapseEnd
.Find.Execute
Loop
Next
.HomeKey wdStory
End With

上手く行かない箇所としまして、
(3)上記で変換されたカンマ+半角数値1桁を全角に変換
ソースの中で、「"[!0-9],[0-9][!0-9]"」
があるんですが、どうやらここがうまくいってないようです。
例えば、ここに、"a"を入れると、word上の"a"の文字が全角変換されます。

雑なソースかと思いますが、
ご指導のほど、よろしくお願いします。

A 回答 (1件)

お世話になります。



StrConv 関数を使用されてはいかがでしょう。
' 全角へ
Public Sub ToWide()
  Selection.Text = StrConv(Selection.Text, vbWide)
End Sub

' 半角へ
Public Sub ToNarrow()
  Selection.Text = StrConv(Selection.Text, vbNarrow)
End Sub
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!