高速に動作する(と思います。多分)
Sub 英字のみ半角化()
Application.ScreenUpdating = False
Dim a As Range, v() As Variant, r&, c&
For Each a In ActiveSheet.UsedRange.SpecialCells(xlCellTypeConstants, xlTextValues).Areas
With a
If .Count = 1 Then
ReDim v(1 To 1, 1 To 1)
v(1, 1) = .Value
Else
v = .Value
End If
For r& = 1 To UBound(v, 1)
For c& = 1 To UBound(v, 2)
v(r&, c&) = 半角$(v(r&, c&))
Next
Next
.Value = v
End With
Next
Application.ScreenUpdating = True
MsgBox "正常に終了しました。", , "英字のみ半角化"
End Sub
Private Function 半角$(ByVal s$)
Dim i%, c$
For i% = 1 To Len(s$)
c$ = Mid$(s$, i%, 1)
If c$ Like "[A-Za-z]" Then Mid(s$, i%, 1) = StrConv(c$, vbNarrow)
Next
半角$ = s$
End Function
お礼
早速にご回答いただき、どうもありがとうございました。 おかげさまで、概ねできました。 またよろしくお願いいたします。
補足
早速にご回答頂き、どうもありがとうございます。 1.問題なく全角→半角になり、コンプリートになりました。ありがとうございました。 2.一つお聞きしたいのですが、ワークシート全体を対象とするのではなく、範囲を指定することは出来ますでしょうか? 3.企業の住所やコンタクト情報等々、企業データが入っている為、Sheet1のB列に企業名が入っています。この部分を指定して、変換したいと思いますがいかがでしょうか? お忙しいところ恐縮ですが、ご回答頂ければ幸いです。 よろしくお願い致します。