この記事には広告を含む場合があります。
記事内で紹介する商品を購入することで、当サイトに売り上げの一部が還元されることがあります。
ExcelのListboxを使って開いているファイルからシートを選択するマクロを作成しました。
先日、開いているファイル名称をリストボックスに表示する方法について記載しましたので、今日は、そのファイルに含まれるシート名称を表示する方法について記載します。
freeeに明細書を取り込むときにこのListBoxを利用しました。
ユーザーフォームにListBox2を追加する
Microsoft Visual Basic for Applicationsの画面を開き
前回の記事で作成したユーザーフォームにListBox2を追加します。(下の画像の赤い部分)ついでにボタンも1つ追加します。(下の画像の水色の部分)
ユーザーフォーム上で右クリックをして「コードの表示」をクリックします。
ListBox1の設定
(1) UserForm_Inirializeの設定
前回と変更ありません。
(2) Listbox1_Clickをクリックしたときの設定
(1)のUserForm_Inirializeの設定によって、ユーザーフォームを開くとListBox1には、開いているファイルの名称が表示されます。
その表示された任意のファイル名称をクリックしたときに、そのファイルのシート名称をListBox2に表示するように設定します。
① ファイル名称を指定して変数へ代入
変数wb1(型はWorkbook)を宣言し、ListBox1でクリックしたファイル名称を代入します。
② ListBox2にシート名称を表示する
次に、上記①で代入したワークブックをActivateします。また、ListBox2をクリアーします。(上の画面の緑色の枠囲み部分)
シート名称をListBox2に表示する方法は、ファイル名称を表示したときと同じく、For~Next構文を使いました。
最後の「ListBox2.ListIndex」はリストの何番目を選択しているかを指定しています。「0」は一番上となります。
実行すると次のような画面が表示されます。(実行した直後・・・開いているファイル名称が表示されます。)
(ファイル名称をクリックすると選択したファイル名称が表示されます。この過程は省略しても良いと思います。)
(上の画面でOKをクリックすると、下の画像のようにシート名称が表示されます。)
データを引き継ぐ
(1) Macro1の記述
前回の記事で、Listboxで選択したファイル名称をその後のプログラムに利用するため、「Macro1」として次のような記述をしました。
今回は、ファイル名称とシート名称の両方をその後のプログラムで利用するために上記の記述を次のように変更します。
Publicを使って変数strCaを宣言し、その変数にシート名称を代入するようにします。(上の画像の赤色の枠囲み部分)
Macro1では、最初に変数strAaとstrCaを空白にしてからユーザーフォーム1を開きます。(上の画像の緑色の枠囲み部分)
ユーザーフォーム1を開いてファイル名称、シート名称を選択したあとIf以下のプログラム(上の画面の水色の枠囲み部分)に進みます。
このIfは、変数が空白の場合はMacro1を終了し、変数にファイル名称とシート名称が代入されている場合は、MsgBoxによって、それぞれの名称を表示するという記述しました。
上記の記述に合わせて、ユーザーフォーム1の記述も次の(2)のとおり追加、変更します。
(2) ユーザーフォーム1の記述
① 決定ボタンの記述
前回の記事で、「決定」ボタンの作成について記載しましたが、その「決定」ボタンをクリックしたときのコードは次のとおりです。
この記述を次のように変更します。
変数strCaにListBox2で選択したシート名称を代入するという記述を追加します。
この記述によりユーザーフォームを隠した後も、Macro1のプログラムでファイル名称とシート名称を利用することができます。
② 閉じるボタンの記述
上記のユーザーフォームへのListBox2の追加した際に「ボタン」も追加しましたが、このボタンに「閉じる」と表示するように設定し、次のようなコードを記述します。
「閉じる」をクリックした場合は、変数を空白にして、ユーザーフォーム1を閉じます。この「閉じる」は「やり直し」のために作成しました。
変数を空白にしないとMacro1のIf以降のプログラムに戻ってから、ユーザーフォーム1を開いた時点でstrAaに代入されたファイル名称をMsgBoxで表示してしまいます。よって、変数を空白にして閉じるという記述にしました。
(3) Macro1の実行
ユーザーフォーム1を改良後、Sheet1にMacro1を実行するボタンを作成しました。コードの記述は次のとおりです。
「Macro1 実行」のボタンをクリックすると、ユーザーフォーム1が表示されます。(ユーザーフォーム1が表示された後に「閉じる」をクリックした場合)
(ユーザーフォーム1が表示された後にListBoxでファイル名称をクリックし、シート名称を選択後に「決定」をクリックした場合)
まとめ
今回、freeeに取り込む出納帳ファイルの作成方法等を変更せずにfreeeにアップロードする方法を考えたのでListBoxを使ってみましたが、小規模の経理事務ではあまり需要はないかと思います。
ファイル名称やシート名称をカウントして表示する方法は、他に利用方法もあるかと思いますので、参考にしてください。
■□◆◇ 編集後記 ◇◆□■
寒くなると暖かいコーヒーを飲みたくなります。ペットボトルのコーヒーをよく買います。