Home » エクセルマクロ・Excel VBAの使い方 » ユーザー定義関数 » 小さい仮名(拗音・促音)を大きい仮名にする関数は?

小さい仮名(拗音・促音)を大きい仮名にする関数は?

対象:Excel97,Excel2000,Excel2002,Excel2003,Excel2007

拗音や促音を大きい文字にする関数は何でしょうか?」
といったご質問をいただくことがあります。

「ぁぃぅぇぉっゃゅょゎァィゥェォッャュョヮ」
といった小さいひらがなやカタカナ(小書き文字・捨て仮名)を
「あいうえおつやゆよわアイウエオツヤユヨワ」
といった大きなひらがな・カタカナにしたいという要望です。

[スポンサードリンク]

アメリカ生まれのExcelにはこういったワークシート関数は用意されていないようなので、VBA(Visual Basic for Applications)でユーザー定義関数を作ってみてはいかがでしょう。

▼拗音・促音を大きなかな文字にするユーザー定義関数
Function UpperSutegana(strOrg As String) As String

 Const cstLower = "ぁぃぅぇぉっゃゅょゎァィゥェォッャュョヮ"
 Const cstUpper = "あいうえおつやゆよわアイウエオツヤユヨワ"

 Dim strRet As String
 Dim intLoop As Integer
 Dim strChar As String
 Dim intChar As Integer
 
 strRet = ""
 
 For intLoop = 1 To Len(strOrg)
 
  strChar = Mid(strOrg, intLoop, 1)
  
  intChar = InStr(1, cstLower, strChar, vbBinaryCompare)
  
  If intChar > 0 Then
   strRet = strRet & Mid(cstUpper, intChar, 1)
  Else
   strRet = strRet & strChar
  End If
 
 Next intLoop

 UpperSutegana = strRet

End Function

引数・strOrgに指定された文字列を
 strChar = Mid(strOrg, intLoop, 1)
1文字目から順番に取り出して
 intChar = InStr(1, cstLower, strChar, vbBinaryCompare)
その取り出した1文字が定数・cstLowerの中にあるか調べて、
 If intChar > 0 Then
  strRet = strRet & Mid(cstUpper, intChar, 1)
もしあったら、定数・cstUpperの文字に置換し
 Else
  strRet = strRet & strChar
なければそのままにするという処理を、
 For intLoop = 1 To Len(strOrg)
 Next intLoop
ぐるぐる繰り返しています。

置換する元の文字を定数
 cstLower = "ぁぃぅぇぉっゃゅょゎァィゥェォッャュョヮ"
に指定し置換後の文字を定数
 cstUpper = "あいうえおつやゆよわアイウエオツヤユヨワ"
に、元の文字と同じ順番で指定してください。

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

関連語句
自作関数

[スポンサードリンク]

Home » エクセルマクロ・Excel VBAの使い方 » ユーザー定義関数 » 小さい仮名(拗音・促音)を大きい仮名にする関数は?

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

検索


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

.