Home » エクセルマクロ・Excel VBAの使い方 » ユーザー定義関数 » 英数字だけ半角にする

対象:Excel2000, Excel2002, Excel2003, Excel2007

ASC関数と[ふりがな]機能とPHONETIC関数を合わせて利用することで、そこそこの手間でカタカナは全角、英数は半角という状態にできることをご紹介しました。

一発で英数字だけ半角にしたいのならば、VBA(Visual Basic for Applications)でユーザー定義関数を作成しましょう。

[スポンサードリンク]

「英数字だけ半角にしたい」という要望をよく聞いてみると、実は記号類も半角にしてカタカナだけ全角にしたいという要望だったりするので、ここではカタカナだけを全角にして、他の半角が存在する文字はアルファベットも数字も記号類もすべて半角にするユーザー定義関数をご紹介します。

カタカナは全角、英数字は半角にするユーザー定義関数

Function AscEx(strOrg As String) As String

 Dim strRet As String
 Dim intLoop As Integer
 Dim strChar As String

 strRet = ""

 For intLoop = 1 To Len(strOrg)
 
  strChar = Mid(strOrg, intLoop, 1)
   
  If (strChar >= "ァ" And strChar <= "ヶ") Then
   strRet = strRet & strChar
  Else
   strRet = strRet & StrConv(strChar, vbNarrow)
  End If

 Next intLoop
 
 AscEx = strRet

End Function

引数・strOrgに指定された文字列を1文字目から順番に取り出して
 strChar = Mid(strOrg, intLoop, 1)
その取り出した1文字がカタカナかを調べ、もしカタカナならそのまま
 If (strChar >= "ァ" And strChar <= "ヶ") Then
  strRet = strRet & strChar
そうでなければ半角にする
 Else
  strRet = strRet & StrConv(strChar, vbNarrow)
という処理を、
 For intLoop = 1 To Len(strOrg)
 Next intLoop
ぐるぐる繰り返しています。

もし本当に「英数字」だけを半角にしたいのなら、If文部分を
 If (strChar >= "0" And strChar <= "9") _
 Or (strChar >= "A" And strChar <= "Z") _
 Or (strChar >= "a" And strChar <= "z") Then
  strRet = strRet & StrConv(strChar, vbNarrow)
 Else
  strRet = strRet & strChar
 End If
などのようにすればいいでしょう。

▼サンプルファイル(003336.xls 56KByte)ダウンロード

サンプルファイルでは、上記のAscEx関数と、英数字だけ半角にする関数をAscEx2としてを作成してありますのでご確認ください。

関連語句
自作関数

[スポンサードリンク]

Home » エクセルマクロ・Excel VBAの使い方 » ユーザー定義関数 » 英数字だけ半角にする

「ユーザー定義関数」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.