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のクラスモジュールって何?という人向けの使い方まとめ
書籍を執筆しています。
コメントは承認制ですので、反映までしばらくお待ち下さい。(稀にスパムの誤判定にて届かないこともあるようですので、必要な際はお問い合わせからお願い致します。)
YouTubeでQ&Aコンテンツを企画しています
運営しているYouTubeチャンネルで、ご相談やご質問を募集しています。動画のコメントやお問い合わせページからお気軽にご相談をお寄せください。