[Excel][VBA] 標準モジュールの作り方
トップページへ
ExcelのマクロつまりVBAで使えるサンプルプログラムです。
標準モジュールの作り方とその利用の仕方を説明した記事です。
その例題(サンプル)として下記の内容となっていますが「読者様自身のオリジナルの標準モジュールを作る時と手順は同じ」なので、所々参考にして頂ける記述はあると思います。
プログラムの概要
全国地方公共団体コード(以下、団体コード)から自治体名を表示する
サンプルについて
内容は「岡山県」なので岡山県内の自治体、企業ならそのままで使えますし、他県の方でも団体コードと自治体名を変更・追加するだけでお使い頂けます。
なお他の自治体の団体コードについては、文末の総務省へのリンク先をご覧下さい。
Q.標準モジュールとは?
A.同じExcelブック内のVBAなら、どこからでも利用できるプログラムを記述する場所、と私は認識しています。
最も多い用途は「あちこちのVBAシートで必要で、共通化できるプログラムを標準モジュール」にします。ですので、複数のVBAシートで使うことがない処理、共通化できない処理は標準モジュールにする必要はありません。
言い換えれば「同じ処理が何回もでてくる場合は標準モジュールにできる可能性」があり、メリットとしては、「修正や改良時、何か所も修正する必要があった処理が、標準モジュールの1か所を修正するだけ済む」ことがあげられます。
1 Excelで「Excelマクロ有効ブック(*.xlsm)」を新規作成して保存します。
クリック、タップで拡大します
2 VBA画面を開き、メニューの挿入→標準モジュールを選びます。
3 標準モジュールの「Module1」を選んだ状態で、下記のサンプルコードの全てを右側の空白画面にコピー&ペーストして下さい。
この画像はペースト後です。
Option Explicit Function f_jichimei(ByVal key As Long, ByVal syu As Integer) As String Dim w_jichitai As String Select Case key Case 330001: w_jichitai = "岡山県" Case 331007: w_jichitai = "岡山市" Case 332020: w_jichitai = "倉敷市" Case 332038: w_jichitai = "津山市" Case 332046: w_jichitai = "玉野市" Case 332054: w_jichitai = "笠岡市" Case 332071: w_jichitai = "井原市" Case 332089: w_jichitai = "総社市" Case 332097: w_jichitai = "高梁市" Case 332101: w_jichitai = "新見市" Case 332119: w_jichitai = "備前市" Case 332127: w_jichitai = "瀬戸内市" Case 332135: w_jichitai = "赤磐市" Case 332143: w_jichitai = "真庭市" Case 332151: w_jichitai = "美作市" Case 332160: w_jichitai = "浅口市" Case 333468: w_jichitai = "和気町" Case 334235: w_jichitai = "早島町" Case 334456: w_jichitai = "里庄町" Case 334618: w_jichitai = "矢掛町" Case 335860: w_jichitai = "新庄村" Case 336068: w_jichitai = "鏡野町" Case 336220: w_jichitai = "勝央町" Case 336238: w_jichitai = "奈義町" Case 336432: w_jichitai = "西粟倉村" Case 336637: w_jichitai = "久米南町" Case 336661: w_jichitai = "美咲町" Case 336815: w_jichitai = "吉備中央町" Case Else w_jichitai = "自治体" End Select '県,市,町,村の除去 If syu = 1 Then w_jichitai = Left(w_jichitai, Len(w_jichitai) - 1) End If f_jichimei = w_jichitai End Function
4 Excelのシート画面を開いて、開発タブ→デザインモードをクリック→左隣の挿入の中のコマンドボタンを選び、シート上の適当な場所にボタンを2個配置します。
※デザインモードをクリックするとオン状態となり濃いグレーになります。
5 先に作成したボタンを選び右クリックして「コードの表示」をクリックします。するとVBA画面に
Private Sub CommandButton1_Click()
End Sub
が表示されます。シート画面に戻り次のボタンも同様にすると
Private Sub CommandButton2_Click()
End Sub
も表示されます。
6 画像のように、それぞれの場所に下記のコード(MsgBoxの1行だけ)をコピー&ペーストします
Private Sub CommandButton1_Click() MsgBox (f_jichimei(332089, 0)) End Sub Private Sub CommandButton2_Click() MsgBox (f_jichimei(335860, 1)) End Sub
ここで設定した団体コードで自治体名を表示します。詳細は、後述の「処理の説明」について
7 以上が済んだらシート画面に戻り、開発タブのデザインモードをクリックして通常のグレー状態に戻してから
※通常のグレーはデザインモードがオフ状態です。
作成したボタンをマウスでクリックして総社市、新庄というメッセージボックスが表示されれば作業完了です。
処理の説明
独自の関数
f_jichimei(全国地方公共団体コード, 0または1)
使い方 一例
f_jichimei(332089, 0)
戻り値(String型):自治体名
全国地方公共団体コード(Long型):半角数字6桁
種別コード(Integer型):半角数字0か1
0(ゼロ)をセットすれば「市町村名がそのまま」表示されます。
e.g. 総社市→総社市
1をセットすれば「市町村名の最後の市町村を省いて」表示されます。
e.g. 新庄村→新庄
※Boolean型でも良かったのですが、将来の拡張性を考慮してInteger型です
今回はメッセージボックス(MsgBox)で試しましたが「標準モジュール」なので同じExcelブック内のVBAなら、どこからでも利用できます。
全国地方公共団体コードについて