VBAと日々のこぼれ話

  1. VBA

【ExcelVBA】好きな画像を動きのある(ボタンが凹んで戻る)ボタンにしてみたい

フォームボタンは堅苦しいらしい

ExcelVBAで用意されているフォームボタンが「ちょっと近づきがたい」という意見を目にしました。ボタンに限らず用意されているコントロールフォームでは、堅い印象を受けて威圧感を感じるそうです。

個人的にグレーのボタンは機能美で使いやすいと思うのですが、初心者には取っつきにくいと言われればそうかも。

それじゃあ、画像や図形(オートシェイプ)をボタン代わりにする方法を紹介しよう。

うーん、でもその方法は結構見かける方法だしちょっと面白くないかな。

よし。だったらフォームボタンのように画像を押下した際に、あたかも立体的なボタンをクリックしたような動きを付けて個性を出してみよう。

これで『kawaii』というかポップというか個性を出したボタンになるからちょっとは取っつきやすくなるはず。

でもこれを作るのって結構手間暇かかるし、ボタン押下後に実施するメイン処理的には別に嬉しくないし。

 

あれ、誰の得になるんだっけ。

そうだ。CSS等ではボタンのアニメーションは見かけるけどExcelVBAでも少なくともここまでは出来るよというご紹介ということにしよう!

小芝居失礼しました。

 

仕事でもお客様から特別な要望がない限り、ExcelVBAではなかなかこういったプログラムを書くこともないですよね。基本的にVBAに用意されているフォームボタンが一番効率が良いですもん。

私も個人的にしか作ったことはありません。

色々言い訳していますが、楽しかったから良いんです。

【スポンサーリンク】



処理概要

任意の画像 or 図形を動きのある(ボタンが凹んで戻る)ボタンにするには、

(事前準備)任意の画像を面取りをして立体に見えるように加工
図形の凹み(ボタン押下)を表現
–ボタン押下後に実施する処理–
図形の凸み(ボタン押下後のボタンの戻り)を表現
※図形の凸凹は、いずれも立体書式設定をループ処理で徐々に変化させる
(コード作成後準備)任意の画像を選択した際に実行されるマクロの登録を実施

事前準備

1.ボタンとして、使いたい画像を準備
画像でなくても図形の挿入で作成した図でも構いません。

2.画像がボタンに見えるように加工
描画ツール>書式>図形の効果>面取り>丸を選択し、画像の面取りを行って立体のボタンに見えるように設定します。

3.画像のShape.Nameを確認
気を付けたいのは、Excelの名前ボックスの名前(日本語名)ではないこと

この後、作成したサンプルコードを図形の「マクロ登録」で登録することで完成です!

好きな画像を動きのある(ボタンが凹んで戻る)ボタンにする

Windows APIのSleep関数

名前からもお察しの通り、指定時間(ミリ秒単位で指定)処理を止める関数です。

VBAにはSleep関数は存在しないのですが、その代わりにWindows APIのSleep関数を使用することが出来ます。
それを使いますよ、とモジュールの先頭で宣言しています。

ここまではいいのですが、ちょっと困ったことにAPIの宣言がOffice2010から変更になりました。これは、64bit版が登場したOffice2010からVBAのバージョンがアップしたためです。

サンプルコードは、Office2010以降のバージョンをカバーしていますが、それ以前のものには対応できていません。

任意の画像(シェイプ)の3D書式

ボタンの凸凹は、

画像の面取り書式の立体の書式設定
画像の面取り書式の表面と裏面の奥行

この2つで表現しています。

立体の書式では見た目で凹んでいるか膨らんでいるか、奥行はループ処理で徐々に値を変化させることであたかもボタンクリックで動きが出ているかを表現しています。また事前準備の面取り書式設定と書式を合わせることで違和感のない動きになっているかと思います。

もし、面取りの書式が「丸」が好みでない場合、サンプルコードとともに事前準備の任意の画像の書式設定も変更してくださいね。

また先ほど説明したSleep関数は、奥行の変化を自然な動きにするために利用しています。

Constで定数設定している変化の幅を工夫すれば、より滑らかな動き・好みの動きをすると思うので色々と試してみて下さい。

【スポンサーリンク】



VBAの最近記事

  1. 【VBA】QRコードを作成したい

  2. 【VBA】CSVを1行ずつ処理したい

  3. Excelシートの最終行を取得したい その1

  4. 【VBA】未だに苦手としていること

  5. 【VBA】モジュール先頭に記述する4種類のOption キーワード ステートメント

関連記事

【スポンサーリンク】




PAGE TOP