こんにちは。今日の上田はとてもいい天気。こんな日はワンコと一緒に
山菜採りにでも行きたいなぁ。今はこごみにタラの芽、こしあぶらなど
天ぷらにしたらおいしい食材が、お山でタダで手に入る素晴らしい時期なのです(^^♪
しかしお仕事も大好き!山は週末に行くことにして
今日も生徒さんからの質問を取り上げます。
「せんせーい、私『アプリ作成で学ぶ ExcelVBAプログラミング
ユーザーフォーム&コントロール』買ったんですよ」
まぁありがとう。で?
「練習でユーザーフォームを作りました」
「ユーザーフォームにボタンを配置して、クリックしたら別のブックを開くようにコードを書いてみました」
「でもそのあとが・・・」
こおゆうことね↓
【Book1にユーザーフォームを作成し、ここからBook2を開くようにする】
ではExcelを起動します 私はExcel2010を使用しています
開発タブを選択(※開発タブが非表示の場合は、ファイルタブ→オプションより設定)
そしてVisualBasicを選択するとエディタが開きます

挿入→ユーザーフォームよりユーザーフォームが作成されます このフォームの名前は
「UserForm1」です。Excelのほうで勝手につけてくれた名前です もちろん変更もできますが
このまま使います

ツールボックスからボタンを選択してユーザーフォームに配置

プロパティウィンドウでオブジェクト名を「Btn_book2」
Captionを「Book2を開く」にする
※オブジェクト名は自分で好きな名前をつけてOK。私は「Btn_book2」にしましたよ
※Captionはボタン上に表示したいもの

いったんここで任意の場所に名前をつけて保存しておきましょう
ブックウィンドウに切り替えるためにエディタの左上のエクセルマークをクリックします

「名前を付けて保存」ダイアログを表示しましょう
保存時の注意ですが今回はコードを含んだファイルとして保存したいので、
ファイルの種類を「マクロ有効ブック」にします
名前は最初に表示されている「Book1」のままでいいです
では保存しましょう

出来たファイルは「Book1.xlsm」になります。
さて
次は先ほど作成したユーザーフォームの起動のチェックをしましょう。
エディタに切り替えます。開発タブ→VisualBasic
挿入メニュー→標準モジュール

ユーザーをフォームを起動させるためのコードを記述します
以下のように記述↓

「UserForm1.show」は「UserForm1を表示しなさい」という意味です
このコードをワークシート上にボタンを作って登録していきますよ
ブックウィンドウに切り替えます(エディタ左上のエクセルマークをクリック)
開発タブ→挿入→フォームコントロールのボタンをクリック

ワークシート上で右斜め下にドラッグしてボタンを作成する と同時にマクロの登録ダイアログが表示
されるので「ShowForm」を選択して→OK

「ボタン1」というボタンが作成されました 一度セルをクリックし、ボタンの編集を解除したあと
「ボタン1」をクリックしてみましょう
おっユーザーフォームが表示されました。

さて、このユーザーフォームの「Book2を開く」ボタンをクリックしてみましょう
ボタンは押せるけど何も動作しません。そうです。だってまだこのボタンの動作を
登録していませんから(^^
「Book2というファイルを開く」という動作を登録していきましょう。
おっと、Book2というファイルを作成しておかなければなりませんね。
いったんBook1を閉じてもいいし、このまま新規作成でもいいので
適当なデータを入れたBook2.xlsxを作成しましょう。(ファイル名はBook2、ファイルの種類は
Excelブックですよ)
私はこんなBook2にしました↓

ではBook2ファイルは閉じておきましょう
さてBook1.xlsmを開き、続きをやっていきましょう
エディタを開きます(Altキー+F11キーがショートカットです)
表示されているユーザーフォームのボタンをダブルクリックします
ここに「Book2というファイルを開く」コードを記述していきます
画像のとおりに記述しましょう ただし"C:\Users~~"はPCごと違いますので、Book2ファイルのあるパスを記入しましょう

このコードは「Workboooks.Open」 まさに「あるワークブックを開きなさい」という意味です。そして
そのあとに書いてあるファイルのパスで、ファイルの場所と名前を指定しています
ユーザーフォームのボタンをクリックしたときの動作の登録はこれで以上です
ブックウィンドウに切り替えて、ワークシート上のボタンからユーザーフォームを表示し、
さらに「Book2を開く」ボタンをクリックしましょう
ほら!ユーザーフォームの後ろにBook2が開いています

はぁ
ここまで長々ありがとうございました。
「せんせーい」
「せんせーい」
え?Book2の前のユーザーフォームが邪魔?
まぁ確かにそうね・・これじゃBook2の操作ができませんね・・汗
「それなんですよ!理想はBook2を開いたときにユーザーフォームを閉じたいんです」
はい!もう一度エディタに切り替えますよ(今開いているユーザーフォームは×ボタンで閉じ、Book2も閉じてから)
ユーザーフォームのボタンをダブルクリックし、先ほどのコードの下に1行追加しましょう

「Unload Me」は「私(UserForm1)を閉じます」という意味です
これでもう一度やってみましょう
(ブックウィンドウに切り替えて、ワークシート上のボタンからユーザーフォームを起動)
「お~これですよ♪」
「でもーついでにBook1も閉じたいなぁ」
了解
ではBook2を閉じて、Book1のエディタに戻ってさらにもう一行追加ね

「ThisWorkbook.close」は「このワークブック(Book1のこと)を閉じなさい」という意味です。
(フォームとブックでは 閉じるときの書き方が違うのでややこしいですね)
これでOK
「はーい では練習しまーす」
うんがんばって(^^♪
エクエルって奥が深いですね。
奥が深いと言えば、エクセルって色々な機能があって、使い方によってはまるで手品(マジック)のようになるんですよね。
子どもの“プログラミング的思考"をグングン伸ばす本
この本、おすすめですよ(^^)
mihoりん
他にも色んな本を書いています。
山菜採りにでも行きたいなぁ。今はこごみにタラの芽、こしあぶらなど
天ぷらにしたらおいしい食材が、お山でタダで手に入る素晴らしい時期なのです(^^♪
しかしお仕事も大好き!山は週末に行くことにして
今日も生徒さんからの質問を取り上げます。
「せんせーい、私『アプリ作成で学ぶ ExcelVBAプログラミング
ユーザーフォーム&コントロール』買ったんですよ」
まぁありがとう。で?
「練習でユーザーフォームを作りました」
「ユーザーフォームにボタンを配置して、クリックしたら別のブックを開くようにコードを書いてみました」
「でもそのあとが・・・」
こおゆうことね↓
【Book1にユーザーフォームを作成し、ここからBook2を開くようにする】
ではExcelを起動します 私はExcel2010を使用しています
開発タブを選択(※開発タブが非表示の場合は、ファイルタブ→オプションより設定)
そしてVisualBasicを選択するとエディタが開きます

挿入→ユーザーフォームよりユーザーフォームが作成されます このフォームの名前は
「UserForm1」です。Excelのほうで勝手につけてくれた名前です もちろん変更もできますが
このまま使います

ツールボックスからボタンを選択してユーザーフォームに配置

プロパティウィンドウでオブジェクト名を「Btn_book2」
Captionを「Book2を開く」にする
※オブジェクト名は自分で好きな名前をつけてOK。私は「Btn_book2」にしましたよ
※Captionはボタン上に表示したいもの

いったんここで任意の場所に名前をつけて保存しておきましょう
ブックウィンドウに切り替えるためにエディタの左上のエクセルマークをクリックします

「名前を付けて保存」ダイアログを表示しましょう
保存時の注意ですが今回はコードを含んだファイルとして保存したいので、
ファイルの種類を「マクロ有効ブック」にします
名前は最初に表示されている「Book1」のままでいいです
では保存しましょう

出来たファイルは「Book1.xlsm」になります。
さて
次は先ほど作成したユーザーフォームの起動のチェックをしましょう。
エディタに切り替えます。開発タブ→VisualBasic
挿入メニュー→標準モジュール

ユーザーをフォームを起動させるためのコードを記述します
以下のように記述↓

「UserForm1.show」は「UserForm1を表示しなさい」という意味です
このコードをワークシート上にボタンを作って登録していきますよ
ブックウィンドウに切り替えます(エディタ左上のエクセルマークをクリック)
開発タブ→挿入→フォームコントロールのボタンをクリック

ワークシート上で右斜め下にドラッグしてボタンを作成する と同時にマクロの登録ダイアログが表示
されるので「ShowForm」を選択して→OK

「ボタン1」というボタンが作成されました 一度セルをクリックし、ボタンの編集を解除したあと
「ボタン1」をクリックしてみましょう
おっユーザーフォームが表示されました。

さて、このユーザーフォームの「Book2を開く」ボタンをクリックしてみましょう
ボタンは押せるけど何も動作しません。そうです。だってまだこのボタンの動作を
登録していませんから(^^
「Book2というファイルを開く」という動作を登録していきましょう。
おっと、Book2というファイルを作成しておかなければなりませんね。
いったんBook1を閉じてもいいし、このまま新規作成でもいいので
適当なデータを入れたBook2.xlsxを作成しましょう。(ファイル名はBook2、ファイルの種類は
Excelブックですよ)
私はこんなBook2にしました↓

ではBook2ファイルは閉じておきましょう
さてBook1.xlsmを開き、続きをやっていきましょう
エディタを開きます(Altキー+F11キーがショートカットです)
表示されているユーザーフォームのボタンをダブルクリックします
ここに「Book2というファイルを開く」コードを記述していきます
画像のとおりに記述しましょう ただし"C:\Users~~"はPCごと違いますので、Book2ファイルのあるパスを記入しましょう

このコードは「Workboooks.Open」 まさに「あるワークブックを開きなさい」という意味です。そして
そのあとに書いてあるファイルのパスで、ファイルの場所と名前を指定しています
ユーザーフォームのボタンをクリックしたときの動作の登録はこれで以上です
ブックウィンドウに切り替えて、ワークシート上のボタンからユーザーフォームを表示し、
さらに「Book2を開く」ボタンをクリックしましょう
ほら!ユーザーフォームの後ろにBook2が開いています

はぁ
ここまで長々ありがとうございました。
「せんせーい」
「せんせーい」
え?Book2の前のユーザーフォームが邪魔?
まぁ確かにそうね・・これじゃBook2の操作ができませんね・・汗
「それなんですよ!理想はBook2を開いたときにユーザーフォームを閉じたいんです」
はい!もう一度エディタに切り替えますよ(今開いているユーザーフォームは×ボタンで閉じ、Book2も閉じてから)
ユーザーフォームのボタンをダブルクリックし、先ほどのコードの下に1行追加しましょう

「Unload Me」は「私(UserForm1)を閉じます」という意味です
これでもう一度やってみましょう
(ブックウィンドウに切り替えて、ワークシート上のボタンからユーザーフォームを起動)
「お~これですよ♪」
「でもーついでにBook1も閉じたいなぁ」
了解
ではBook2を閉じて、Book1のエディタに戻ってさらにもう一行追加ね

「ThisWorkbook.close」は「このワークブック(Book1のこと)を閉じなさい」という意味です。
(フォームとブックでは 閉じるときの書き方が違うのでややこしいですね)
これでOK
「はーい では練習しまーす」
うんがんばって(^^♪
エクエルって奥が深いですね。
奥が深いと言えば、エクセルって色々な機能があって、使い方によってはまるで手品(マジック)のようになるんですよね。
子どもの“プログラミング的思考"をグングン伸ばす本
この本、おすすめですよ(^^)
mihoりん

他にも色んな本を書いています。