[Excel][VBA] 標準モジュールの作り方






トップページへ

ExcelのマクロつまりVBAで使えるサンプルプログラムです。

標準モジュールの作り方とその利用の仕方を説明した記事です。

その例題(サンプル)として下記の内容となっていますが「読者様自身のオリジナルの標準モジュールを作る時と手順は同じ」なので、所々参考にして頂ける記述はあると思います。

 

プログラムの概要

全国地方公共団体コード(以下、団体コード)から自治体名を表示する

サンプルについて

内容は「岡山県」なので岡山県内の自治体、企業ならそのままで使えますし、他県の方でも団体コードと自治体名を変更・追加するだけでお使い頂けます。

なお他の自治体の団体コードについては、文末の総務省へのリンク先をご覧下さい。

 

 

Q.標準モジュールとは?

A.同じExcelブック内のVBAなら、どこからでも利用できるプログラムを記述する場所、と私は認識しています。

最も多い用途は「あちこちのVBAシートで必要で、共通化できるプログラムを標準モジュール」にします。ですので、複数のVBAシートで使うことがない処理、共通化できない処理は標準モジュールにする必要はありません。

言い換えれば「同じ処理が何回もでてくる場合は標準モジュールにできる可能性」があり、メリットとしては、「修正や改良時、何か所も修正する必要があった処理が、標準モジュールの1か所を修正するだけ済む」ことがあげられます。

 

1 Excelで「Excelマクロ有効ブック(*.xlsm)」を新規作成して保存します。

クリック、タップで拡大します

Excelで「Excelマクロ有効ブック(*.xlsm)」を新規作成

 

2 VBA画面を開き、メニューの挿入→標準モジュールを選びます。

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個配置します。

※デザインモードをクリックするとオン状態となり濃いグレーになります。

開発タブ→デザインモードをオンにして→挿入の中のコマンドボタンを選び、シート上の適当な場所にボタンを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なら、どこからでも利用できます。

 

全国地方公共団体コードについて

総務省

 






関連記事
[Excel][VBA]2次元配列

[Excel]数式バーの空白欄が大きくなってシートが小さい

[Excel][VBA]大量データの処理にかかる時間の測定事例

[Excel][VBA]個人的 逆引き関数リファレンス

[Excel][VBA] バッチ処理風