コントロールとプロシージャーの紐づけを記述する

vbajikyukeisaneyecatch009

シートに設置したコマンドボタンとプロシージャーを紐づけます。コードはシートモジュールに記述していきます。
その他ブックモジュールにイベントコードも記述します。

こんにちは、じゅんぱ店長(@junpa33)です。

今回は、初期設定項目シートで設置した各コマンドボタンと、プロシージャーとを紐づけするエクセルVBAコードを作っていきます。

その他に、時給計算表を開いたときに対象者のデータがクリアされるコードも記述しておきます。

時給計算表作成の記事編成

コントロールとプロシージャーの紐づけのVBA

vbajikyuhyohimop002

初期設定項目シートに設置したコントロールのイベントに対して、その動作に対応するプロシージャーを指定していきます。

シートモジュールに記述する

今まで、標準モジュール(Module1、Module2、Module3)で記述してきましたそれぞれのプロシージャーを、コントロールと紐づけていきます。

この紐づけるコードは、コントロールの置かれている「初期設定項目」の「シートモジュール」に記述します。

vbajikyuhyoupho049a

VBEのプロジェクトエクスプローラーの「Sheet1(初期設定項目)」というモジュールです。

この12個のコントロールに紐づけを行います。

vbajikyuhyohimop001

「Sheet1(初期設定項目)」のシートモジュールに記述していきます。

vbacalleyecatch 部品化プロシージャーでCallステートメントは必須

①計算表初期化コマンドボタン

VBA
Private Sub 計算表初期化_Click()
        Call Module1.クリアH
        Call Module1.シート削除
End Sub

②対象者計算Book作成コマンドボタン

VBA
Private Sub 対象者計算Book作成_Click()
        Call Module1.対象者用時間計算作成
End Sub

③Bookを保存して終了コマンドボタン

VBA
Private Sub Book保存_Click()
        Call Module1.ブックを保存
End Sub

④テンプレート作成コマンドボタン

VBA
Private Sub テンプレート作成_Click()
        Call Module2.テンプレート
End Sub

⑤勤務時間計算コマンドボタン

VBA
Private Sub 勤務時間計算_Click()
        Call Module2.時間計算
End Sub

⑥給与計算コマンドボタン

VBA
Private Sub 給与計算_Click()
        Call Module2.金額計算
        Call Module2.合計計算
End Sub

⑦時間・金額マルメコマンドボタン

VBA
Private Sub マルメ_Click()
        Call Module2.マルメ計算
End Sub

⑧計算シートの保存コマンドボタン

VBA
Private Sub 計算シートの保存_Click()
        Call Module3.シート保存
End Sub

⑨シートリスト作成コマンドボタン

VBA
Private Sub シートリスト作成_Click()
        Call Module3.シート名
End Sub

⑩シート印刷コマンドボタン

VBA
Private Sub シート印刷_Click()
        Call Module3.シート印刷
End Sub

⑪シートリストクリアコマンドボタン

VBA
Private Sub シートリストクリア_Click()
        Call Module3.コンボリストクリア
End Sub

⑫計算シートをカスタム名で保存

VBA
Private Sub Worksheet_Activate()
        計算シートカスタム保存.LinkedCell = Range("E10").Address
End Sub

ブックを開いたときに起動するVBA

vbajikyuhyohimop003

コードは、「This Workbook」の「ブックモジュール」に記述します。

ブックモジュールに記述するコード

テンプレートBookの「時給計算表.xlsm」を開くときに、

初期設定項目の「対象者」項目のデータをクリアしておきます。

VBA
Private Sub Workbook_Open()
    Dim FileName As String
        FileName = ThisWorkbook.Name
        If FileName = "時給計算表.xlsm" Then
            Worksheets("初期設定項目").Range("C6") = ""
        End If
End Sub

プロシージャーとの紐づけのまとめ

vbajikyuhyohimop004

この記事でコマンドボタンとプロシージャーを繋げることが出来ました。

紐付けのコード自体は、プロシージャーの呼び出しコードですので、

記述は非常に簡単です。

プロジェクト(モジュール全体)の中で、それぞれのプロシージャー名の重複は禁止されています。

この記事で紹介している紐づけコードには、

どのモジュールに属しているプロシージャーかまで記述しています。

これは後々のメンテナンスで、どこにあるプロシージャーかを見つけやすくするためです。

(本来的には、唯一の名前ですので、記述しなくても十分動作させることは出来ます。)

次回は、この時給計算表作成ソフトの使い方を始めから通して説明します。

エクセルVBAを独習するのに参考書は欠かせません。 参考書選びは自分に合った「相棒」にできるものを選んでいきたいです。

vbastudyeyecatch2 エクセルVBAの独習でおすすめ参考書を7冊選ぶ。良書との出会いは大切です

今回の記事はここまでです。   最後までご覧いただき有難うございました。

エクセルVBA最速理解で必要な知識を集めよう!

エクセルVBA業務ツールで日常の業務改善を行いましょう。

VBAコードの記述記事においては、その記述には細心の注意をしたつもりですが、掲載のVBAコードは動作を保証するものではりません。 あくまでVBAの情報の一例として掲載しています。 掲載のVBAコードのご使用は、自己責任でご判断ください。 万一データ破損等の損害が発生しても当方では責任は負いません。

アンケートでポイ活しよう!!

アンケートに答えれば答えるほど ”使える” ポイントがたまります。

NTTコム サーチ

af_banner01

Dstyle web

dstyleweb_logo
dstyle_320x50-min