Excel VBAでボタンを作成する方法

はじめに
ユースフルさんのサイトで、Excel VBAの学習を進めている。
練習問題の中で、「売上表作成」というボタンがあった。
「そもそもボタンってどうやって作るの?」と思っているので、この記事でその方法をマスターしたい。
まずは自力で
こちらのページからダウンロードした演習ファイルを使用している。

開発タブにボタンがあった
こちらのボタンをクリックしてみる。

そうすると、マクロの登録という画面が表示された。

マクロ名を売上表作成にしてみたが、すでに作成したマクロも選択できるようになっていた。
練習問題を解くのに使っている「データの転記処理」を選択してみた。

編集を押すとコードの画面が表示された。

さらにボタンが表示されていた。

しかし、このボタンを押しても何も起きない。
ボタンを押しても何も起きない理由
ボタンを押したら〇〇するという処理を書いていないからと思われる。
JavaScriptで言うところのイベント処理だ。
マクロの登録をしてみる
右クリックで表示される「マクロの登録」を選択してみる。

この状態で記録する。

この画面に遷移するので、OKを押す。

記録できませんと言う通知が出てきた。

VBAでボタンをクリックしたときの処理はどのように書くのか
「VBA ボタンクリック時の処理」というキーワードで調べてみた。
こちらのサイトによると、マクロの登録画面で「OK」を押すといいみたいだ。

なので、データの転記処理をクリックして「OK」を押す。

開発タブのところが「記録終了」になっていた。

記録終了を押すとボタンが押せるようになっていた。
ボタンを押すと処理が実行された。

処理を書くのではなく、マクロを記録すればいいようだ。
ボタンのテキストを変える
右クリックで「代替テキストの編集」が出てくるので、クリックする。
代替テキストを編集したが、ボタンのテキストは変わらなかった。

代替テキストとボタンに表示されているテキストは異なるのかもしれない。
右クリックして、ボタンが選択されている状態で、左クリックすると、ボタンに表示されているテキストを変更することができた。

ソースコードはどうなっているのか
Visual Basicメニューをクリックしてソースコードを確認すると、先ほどマクロの記録を行った内容が「Module2」として追加されていた。

ボタンを選択したりしていたので、いろんな動作がソースコードとして起こされているが、Selextion.OnAction = “データの転記処理”とあることが分かった。
しかし、これは売上表作成とは関係ないコードかもしれない。
売上表作成のマクロを記録する前に、ボタン3やボタン4なども記録していたからだ。
試しに、Module2を削除してみる。
右クリックして、Module2の削除をクリックする。
以下のモーダルが出たら、「はい」を押す。

いや、エクスポートするとローカルに保存されるので、「いいえ」で大丈夫だ。
もう一度、右クリックからやり直し、Module2を削除した。
この状態で、売上表作成を押した時に、処理が行われるかどうか確かめてみる。
行われた。
ソースコードに変更はないから、ボタンは処理を走らせたいソースコードを登録できる機能ということだ。

未知のものを学ぶときの心得
やってみるという姿勢が大事。
ボタンを押すとマクロが実行されるという実装は、初めてのことだったが、色々とやってみたら上手くいった。
確率論でいこう。
確率論とは、やってみるまで分からないという姿勢のこと。
「上手くいくかどうか」という結果は、最後になってみないと分からない。
「今できることはなにか」を考えて進んでいこう。
ある程度もがいたら、見晴らしのいい場所に辿り着けるかもしれない。
険しい森の中をぐるぐると回ってしまうかもしれない。
ネットで調べたり、詳しい人に尋ねたりすることで、森を抜け出すことができるかもしれない。
まずはやってみよう。
今いる場所から動くことで見えてくるものが必ずある。
コメントを残す