マクロ(Excel VBA) 「Application.Caller」 を使ってプロシージャを1つに統一する

シェアする

The following two tabs change content below.

松井 元(まつい はじめ)

静岡県三島市の松井会計事務所に勤務する理系税理士。 文理両方のスキルの融合を考えており、このブログは以下を中心に更新している。
●税金・会計に関すること
●IT(Excel、VBAなど)を使った業務効率化
●自分のこと(考え、私生活)

さらに詳細なプロフィールはこちら
松井会計事務所へのお仕事ご依頼・お問い合わせはこちら
税金・会計の無料メルマガはじめます

マクロ(Excel VBA)で標準モジュールにコードを記述するに場合、プロシージャの数は少ない方が良いでしょう。

1つの標準モジュールの中にいくつものプロシージャがあるよりも、1つの方がすっきりします。

今日は、Application オブジェクトの Caller プロパティを使ってプロシージャを1つに統一することができる例を紹介します。

レクタングル大 広告

1、原価率、利益率、売上総利益を計算するシート

シート設計

次のシートを実例として使います。

「売上」と「売上原価」を数値で入力してから、原価率、利益率、売上総利益のいずれかを計算することができるシートです。

それぞれ次のように計算できます↓

●原価率 = 売上原価 / 売上
●利益率 =(売上-売上原価)/ 売上
●売上総利益 = 売上 - 売上原価

マクロを使わなくても簡単に計算できる内容ですが、ここでは敢えて使いますね。

原価率、利益率、売上総利益で計算したい項目の実行ボタンを押せぼ、マクロが実行します。

「売上」と「売上原価」を数値で入力してから、「原価率計算」をクリックすれば、セル「E11」に原価率の計算結果が出力されます。

「利益率計算」をクリックすれば、セル「E11」に利益率の計算結果が出力されます。

「売上総利益計算」をクリックすれば、セル「E11」に売上総利益の計算結果が出力されます。

さて、これらの実行ボタンには1つのマクロ「Keisan」が登録されています。

お仕事のご依頼は、以下のリンク先にある個別のフォームよりお願い致します。
*リンク先は私が勤務する松井会計事務所の HP です。

◆税務・会計 顧問
◆税務・会計のスポットコンサルティング
◆経理業務効率化コンサルティング
◆Excel シートのオーダーメイド
◆Excel、マクロ(Excel VBA) のマンツーマンレッスン
◆東亜大学通信制大学院(法学専攻) 入試対策コンサル
◆その他のスポットコンサルティング(当ブログを読み何かご相談したい事項が出てきた方に向けたサービス)

セミナー開催要望がありましたら、以下のリンク先にある個別のフォームよりお願い致します。
◆セミナー開催要望

税金・会計についての無料メルマガをはじめます。配信をご希望させる方は以下のリンク先にあるフォームよりお願い致します
◆メルマガ登録

3つのボタンに同じマクロが登録されているのに、出力される結果は異なることになります。

プログラミングコード

プログラミングコードは標準モジュールに以下のものを記述してあります。

2、「Application.Caller」の使い方

今回のプログラミングコードのポイントは「Application.Caller」です。

Application オブジェクトの Caller プロパティの値によって処理を分岐させているのです。

Application オブジェクトとは Excelアプリケーション全体を表し、Caller プロパティとはVBA を呼び出した方法についての情報を返します。

Select Case ステートメントを使って、「Application.Caller」を複数の条件に分けています。

実行ボタンの名前を、それぞれ

・原価率計算
・利益率計算
・売上総利益計算

としています。

図形を選択すると左上に、その図形の名前が表示されます。

ここで名前を変更することもできます。

VBA が「原価率計算」から呼び出された場合、原価率の計算を行い出力します。

「利益率計算」「売上総利益計算」も同様です。

3、「Application.Caller」を使うメリット

さて、今回「Application.Caller」を使うことによるメリットは冒頭にも書いたように、プロシージャを1つに統一できることです。

もし仮に「Application.Caller」を使わなかったら、実行ボタンそれぞれに異なるマクロを登録しなければならなくなります。

その場合1つのモジュールの中に次のように3つのプロシージャを作成することになります。

全てのプロシージャで同じ内容を記述しなければならない部分があり、無駄になります。

Select Case ステートメントを使って「Application.Caller」で条件分岐する方が、無駄に重複するコードを書かなくてもよいのですっきりします。

4、まとめ

「Application.Caller」を使えばプロシージャを1つに統一できるケースについて説明しました。

プログラミングコードの無駄を省き、できるだけ簡素にできる工夫は必要です。

お仕事のご依頼は、以下のリンク先にある個別のフォームよりお願い致します。
*リンク先は私が勤務する松井会計事務所の HP です。

◆税務・会計 顧問
◆税務・会計のスポットコンサルティング
◆経理業務効率化コンサルティング
◆Excel シートのオーダーメイド
◆Excel、マクロ(Excel VBA) のマンツーマンレッスン
◆東亜大学通信制大学院(法学専攻) 入試対策コンサル
◆その他のスポットコンサルティング(当ブログを読み何かご相談したい事項が出てきた方に向けたサービス)

セミナー開催要望がありましたら、以下のリンク先にある個別のフォームよりお願い致します。
◆セミナー開催要望

税金・会計についての無料メルマガをはじめます。配信をご希望させる方は以下のリンク先にあるフォームよりお願い致します
◆メルマガ登録
税理士試験まとめ、税法論文の書き方

————————————————

税理士試験についてのまとめはこちらです!

税法2科目免除大学院についてのまとめはこちらです!

kindle電子書籍を出版しました。

税理士試験の税法2科目免除のために大学院で税法論文(修士論文)を書いた経験を元に、大学院生としての目線から税法論文の書き方を体系化した書籍です↓

大学院での税法論文の書き方

本書籍の内容についてはこちらの記事をご確認下さい。

お問い合わせ・フォローボタン

———————————

よろしければフォロー下さい↓

Twitter フォローボタン:

Feedly フォローボタン:
follow us in feedly

Facebookページ:
*いいね!を押して頂くと更新情報が届きます。

レクタングル大 広告
レクタングル大 広告
関連コンテンツ



シェアする

フォローする