ExcelVBAでカタカナを数値に変換する関数を書いてみる

ア→1, イ→2, ウ→3 のように、指定した文字列を対応する数値に変換する関数です。配列に入れ込むだけなので、カタカナじゃなくても、指定さえすればわりとなんでもいけると思います。
Functionプロシージャを使う
今までずっと、Subプロシージャを使ってきましたが、今回はFunctionプロシージャというものを使ってみます。Subと違って、引数を受け取り、戻り値を返すことができるので、関数として使えます。
イメージとしては、こんな感じ。Callにも似てますが、戻り値を返すというのが特徴です。
Function
Function change_n(val As String) As Integer 'カタカナを数値に変換する関数
Dim ary As Variant, i As Integer
ary = Array("ア", "イ", "ウ", "エ", "オ", "カ", "キ") 'もっと書けます
For i = 0 To 6 '配列はゼロから始まる
If val = ary(i) Then
change_n = i + 1 '一致した番号を取得
Exit For
End If
Next i
End Function
配列の中に、カタカナをあらかじめ入れておいて、その配列の数値を持ってこようという、簡単な構造です。もちろんひらがなでも、記号でも順番通りにかいておけばなんでも使えます。
Sub
Sub sample()
Dim val As String, i As Integer
val = Range("A1")
i = change_n(val) '関数へ引渡し
MsgBox val & "は数値にすると" & i & "です"
End Sub
いつものSubプロシージャ。Range("A1")になにかしらカタカナが入っている前提です。5行目で、さきほどのFunctionを呼び出します。
Functionで作っておくことで、何度か同じことをしたい時にSub側では1行で済むので結構便利です!
ExcelVBAに興味をお持ちの方は、こちらの記事もどうぞ!
- これからExcelのマクロを始めたいという方に!簡単な練習問題作りました。
- 私がExcelVBAでよく使う便利なコード・スニペットまとめ
- プログラム初心者さんへ贈る、エラーが起きたら試してみて欲しいこと
- ExcelVBAのクラスモジュールって何?という人向けの使い方まとめ
書籍を執筆しています。




![[WordPress] BackWPupでMySQLiエラーなら、WP-DBManagerと併用するといいかも](https://ateitexe.com/wp-content/uploads/2013/05/130527eye.jpg)

コメントは承認制ですので、反映までしばらくお待ち下さい。(稀にスパムの誤判定にて届かないこともあるようですので、必要な際はお問い合わせからお願い致します。)
YouTubeでQ&Aコンテンツを企画しています
運営しているYouTubeチャンネルで、ご相談やご質問を募集しています。動画のコメントやお問い合わせページからお気軽にご相談をお寄せください。