
これであなたもプロ級!ポップアップメニュー作成術
業務メニューを作って、業務をマニュアル化しましょう。
業務をマニュアル化すると、次のようなメリットがあります。
・ミスが少なくなる。
・他の担当者への業務引継ぎが正確になる。
前回は、メニューボタンを作って[ファイルを開く]処理を実行しました。

今回は、[メニュー]ボタンを押して[ポップアップメニュー]を表示する方法について説明します。

ユーザーが記述するマクロは、下記のように[タイトル:業務メニュー]と[メニュー名:業務経費報告書 , 売上管理表 , 在庫管理表]を記述するだけですむようにします。
Sub 業務メニューを開く()
n = f_メニュー("業務メニュー", "業務経費報告書,売上管理表,在庫管理表", "選択してください", 0)
End Sub
[メニュー]ボタンには、[業務メニューを開く]マクロを登録します。
マクロを登録する手順は、前回のnote記事(業務アプリは、マニュアル作り)を参考にしてください。
[業務メニューを開く]マクロの説明
1. [n =]について説明します。
一般的なマクロでは n = 1 と記述すると、変数 n に 1 を代入します。
ここでは n = f_メニュー(・・・) と記述していますので、変数 n に 関数 f_メニュー(・・・) の値を代入します。
関数 f_メニュー(・・・) は、指定した値[タイトル]と[メニュー名]と[メッセージ]を[ポップアップメニュー]に表示する関数です。
関数 f_メニュー(・・・) は関数を実行したけど、うまく実行できずにエラーになった場合は、0 の値を返します。
つまり、n = f_メニュー(・・・) と記述していますので、うまく実行できなかった場合は、変数 n の値は 0 になります。
関数 f_メニュー(・・・) が、正しく実行された場合は [選択されたメニュー番号]を返します。
つまり、1番目のメニューが選択された場合 n の値は 1 、 2番目のメニューが選択された場合 n の値は 2 になります。
関数を実行後の n の値を判定すれば、何番目のメニューが選択されたのかがわかります。
2. [f_メニュー("業務メニュー", "業務経費報告書,売上管理表,在庫管理表", "選択してください", 0)]について説明します。
下図のような[ポップアップメニュー]を作成するには、ユーザーフォームにリストボックスを挿入して作成します。

関数 f_メニュー(・・・)は、[タイトル]と[メニュー名]を指定すると[ポップアップメニュー]が表示するように作成された関数です。
記述方法は下記のようになります。
【構文】 f_メニュー("<タイトル>","<メニュー1>,<メニュー2>,・・・","<メーッセージ>",メニュー初期値)
【戻り値】選択したメニュー番号。[中止]したときは 0 を返します。
関数 f_メニュー(・・・)を実行する場合に必要な変数は4つあります。
・タイトル 業務メニュー
・メニュー名 業務経費報告書、売上管理表、在庫管理表、・・・
・メッセージ 選択してください
・初期値 開いた時に、指定した番号のメニューを選択しておく
変数を指定するには、文字列は 記号(")で囲んでください。
数値は、そのまま指定します。
タイトル、メニュー名、メッセージは、文字列で指定します。
初期値は、数値で指定します。
下記のようになります。
f_メニュー("業務メニュー", "業務経費報告書,売上管理表,在庫管理表", "選択してください", 0)
初期値を 2 と指定すると、開いたときに 2番目のメニューが選択さています。

マクロを記述する場合に、関数 f_メニュー(・・・) のような多くの関数があると、少ないコード(ローコード)でマクロを書くことができます。
このような関数を[日本語ローコード]として公開していますので、興味のある方は利用してください。(日本語ローコード YUGE)
この note[Excel 業務アプリ大学]では、主に[日本語ローコード]を利用したマクロをご紹介いたします。
[日本語ローコード YUGE]をダウンロードする
[日本語ローコード YUGE]は、下記のリンクからダウンロードしてください。
>>> ダウンロード
[日本語ローコード YUGE]を開くと、サンプルファイルを実行できます。

[日本語ローコード]を使う
ダウンロードした[日本語ローコード YUGE]を開きます。

[開発]タブの[Visual Basic]をクリックします。
標準モジュールの[ユーザーマクロ]を開きます。
標準モジュール[ユーザーマクロ]は、ユーザーが自由に編集できるマクロです。ここに、マクロを記述します。

標準モジュール[日本語ローコードYUGE]は、色々なローコード関数が準備されていますので、自由に利用することができます。
f_確認
f_クエリー表示
f_クエリー編集
f_シート印刷
f_シートコピー
f_シート削除
f_シート判定
f_シート追加
f_シート表示
f_シートメニュー
f_条件セル入力
f_条件マスター参照
f_条件日付入力
f_条件年月入力
f_セルコピー
f_選択
f_ダイアログ
f_ファイルオープン
f_ファイル判定
f_ブックオープン判定
f_メニュー
では、[業務メニューを開く]マクロを作成します。
[Enter]キーを押して記入する空白行を広げます。

[Sub 業務メニューを開く]とタイプして[Enter]を押します。

上のサンプルから[n = f_メニュー("業務メニュー", "業務経費報告書,売上管理表,在庫管理表", "選択してください", 0)]をコピペで貼り付けます。

カーソルを[業務メニューを開く]マクロの中に置いて[Sub/ユーザーフォーム]を実行します。

下図のように[業務メニュー]が、開きます。
