ゼロスタートで1BTC達成  (`・ω・´)σ  普通の会社員がコツコツ資産運用で生活向上するBlog

【Excel VBA】ユーザーフォームデザイン|UI向上!呼び出したくなるフォーム【まずは見た目】

  • 2022-05-08
  • 2024-01-07
  • Excel

ユーザーフォームは難しそうだと諦めていませんか?実はそれほど高度な知識は必要無く、初心者でもフォームデザインから始めれば楽しく覚えられます。

(*’ω’*)σ 記事の最後にはネタで魔改造したフォームを載せたので、気楽にご覧ください。

VBAの設定については解説していないので、ご了承下さい。

初めてユーザーフォームを作成する際は2つのパートに分けて考えると分かりやすくなります。

  •  ユーザーフォームプロパティ
     🔹土台となる部分の基本的な仕様を決める作業(色・フォント・表示位置など)
     🔹リモコンに例えると本体部分と考えると分かりやすい
  •  コントロールツール
     🔹作業したい内容に応じてフォームに配置するツール
     🔹リモコンに例えるとボタンと考えると分かりやすい

本体を作ってから、実装したい機能のツールを配置していきます。

(*’ω’*)σ カラフル・ビジネス向けの落ち着いたトーン・個性的なツートンなど、自由自在です。

▼ グラフもドレスアップすれば目に留まる|グラフデザイン記事

ユーザーフォームプロパティ

ユーザーフォーム土台部分の表示内容や動作について細かい設定ができます。

▼ プロパティで設定できる項目の概要

  •  表示
      フォーム本体・区切り線・文字などの色の設定
      区切り線の有無・フォーム本体の立体感などの設定
  •  ピクチャ
      フォームに画像を挿入する場合の位置やサイズの設定
  •  フォント
      書体・太字・斜体・文字の大きさなどの設定
  •  位置
      フォームを呼び出した際に表示される画面上の位置設定
  •  スクロール・動作・その他
      スクロールの有無やマウスポインタ―のデザインの設定

Excelを開いてAlt+F11でVBEを起動→新規ユーザーフォームを挿入すると画面左下に登場します。

英語が並んでいて速攻くじけそうになりますが、「項目別」タブを選択すると日本語でカテゴライズしてくれます。やれる気がしてきましたね。

ユーザーフォームの機能をカテゴリ別に表示させる手順

7カテゴリで、分かりやすくなりました。
今回はデザインに特化した内容なので、関連の高い項目をメインに紹介していきます。

表示|色やスタイルの基本設定

表示で設定できるのは6項目です。

ユーザーフォームの表示機能でカスタムできる項目の一覧

BackColor【バックカラー】

ユーザーフォームの色を変更できます。見やすさを考えると白か薄めの色がおすすめです。

ユーザーフォームのバックカラーの切替え方

BoderColor/BoderStyle【ボーダーカラー/ボーダースタイル】

BorderStyleでフチ(枠線)の有無を設定して、フチアリの場合はBorderColorで色を変更できます。
見た目的にはあまり変わりませんが、こだわる方はいじる場所です。

ユーザーフォームの枠線の色を変える方法

Caption/ForeColor【キャプション/フォアカラー】

キャプションはフォームのタイトルです。プロパティに直接入力して書き換えが可能です。
文字色のデフォルト設定はフォアカラーで行います。後からツールごとに個別設定も可能です。

ユーザーフォームの文字色を設定する方法

SpecialEffect【スペシャルエフェクト】

フォームのタイトル部分とコントロール部分の境目の立体感を設定できます。

ユーザーフォームの淵の立体感を設定する方法

設定値は0,1,2,3,6の5種類です。FlatとRaisedは何となく雰囲気でわかるのですが、あとはよく分からない項目名なので、勝手に名前をつけました。

微妙すぎて掲載を迷うレベルですが、皆様の「へぇ~・・・」のために載せておきます。

ユーザーフォームの淵の立体感の設定による見た目の違いを比較する画像

ピクチャ|背景画像の編集

ユーザーフォームの背景に画像を設定します。
好きな画像をフォームの背景にすることが可能で、設定した画像のサイズや位置の調整もPictureから行います。

Picture【ピクチャ】

ユーザーフォームの背景に画像を挿入する方法

PictureAlignment【ピクチャーアライメント】

背景画像の位置を指定します。

  •  0-fmPictureAlignmentTopLeft/左上端に合わせて配置
  •  1-fmPictureAlignmentTopRight/右上端に合わせて配置
  •  2-fmPictureAlignmentCenter/中央に配置(既定値)
  •  3-fmPictureAlignmentBottomLeft/左下端に合わせて配置
  •  4-fmPictureAlignmentBottomRight/右下端に合わせて配置

英語表記で設定値の名前が長いですが、要は「どこ合わせか?」です。

PictureSizeMode【ピクチャーサイズモード】

  •  0-fmPictureSizeModeClip/元の画像サイズのまま表示(規定値)
  •  1-fmPictureSizeModeStretch/フォームサイズに合わせて画像を引き延ばす
  •  2-fmPictureSizeModeZoom/フォームサイズに合わせて1:1比率で引き延ばす

設定値1はユーザーフォームの大きさにピッタリ合わせですが、画像が歪む可能性ありです。
設定値2だと画像は歪みませんが、フォームの途中で画像が途切れる場合があります。

PictureTiling【ピクチャーターニング】

  •  True/フォームのサイズを埋めるだけの画像を並べて表示する
  •  False/画像は1つしか表示しない

フォームが大きくて画像が小さい場合、Trueにしておくと左図のようになります。

フォント|コントロールツールのフォント設定

コントロールツールに表記されるフォントの既定値になります。
ツールごとに変更したい場合はツールのプロパティで個別設定できます。

ユーザーフォームのフォントを設定する画面の操作を説明

位置|ユーザーフォーム表示位置の調整

実行時の表示位置とフォームサイズを設定できます。

ユーザーフォーム実行時の表示位の置設定方法と、実際の画面で表示される位置の画像

StartUpPosition【スタートアップポジション】

ユーザーフォームが最初に表示される位置を選択できる。

  •  0-手動・・・別途LeftプロパティとTopプロパティを設定してポイント単位で位置を指定
  •  1-オーナーフォームの中央・・・ユーザーフォームが属する項目の中央に表示
  •  2-画面の中央・・・画面全体の中央に表示
  •  3-Windowsの既定値・・・左上隅に表示

Left/Top【レフト/トップ】

スタートアップポジションが0-手動の時のみ有効。
画面上の座標をポイントで指定して位置を調整する。

Height/Width【ハイト/ワイズ】

ユーザーフォームの高さ(Height)と幅(Width)を指定。
ドラッグで大まかな大きさを決めた後、ポイント単位で微調整する際に使用する。

スクロール・動作・その他

この辺りはデザインにほぼ関係ないので省きます。
実際に既定値から変更する必要も無いに等しい部分なので、知らなくても大丈夫です。

コントロールツールの種類

ツールボックスから使いたいコントロールを選択し、ユーザーフォーム上でドラッグして配置します。
一通りフォームに追加して実行した図です。まずは見た目から。

ユーザーフォームのツールの種類と、表示された時のサンプル画像の一覧

ラベル/テキストボックス

フォーム上に文字を表記するのがラベル、ユーザーが入力する部分がテキストボックスです。

↑ この2つの表示設定はほぼ共通です。

  •  BackStyle設定
      ↳ 0-fmBackStyleTransparent/背景透明

      ↳ 1-fmBackStyleOpaque/任意の色
  •  BorderStyle設定
      ↳ 0-fmBorderStyleNone/境目線無し

      ↳ 1-fmBorderStyleSingle/任意の色で境目線有り
  •  ForeColorでデフォルトの文字色設定可
      ↳ SpecialEffectで凸凹設定可

見た目を整えるのであれば、このあたりの設定だけで十分です。

PasswordChar

テキストボックスプロパティにPasswordChar(パスワードキャラ)という項目があります。
これはパスワード入力時など、画面上に直接表示を出したくない場合に使います。例えばPasswordCharに「*」と入力しておくと、実行時は右図のようになります。

コンボボックス/リストボックス

この2つは似ているのですが、それぞれ特徴があります。
フォームをコンパクトにまとめたい時はコンボボックスがおすすめです。

コンボボックスとリストボックスの比較 機能と見た目の違い
 コンボボックス リストボックス
 ▪ 初めは閉じている
 ▪ 選択できる項目は1つだけ
 ▪ 直接入力で検索も可能
 ▪ 初めから開いている
 ▪ 設定次第では複数項目の選択も可
 ▪ 直接入力で検索は不可

表示設定の項目はほぼ共通ですが、コンボボックスの方が少し多くなっています。
4つあるので解説します。

BackStyle【バックスタイル】

リストボックスは背景を透明にできませんが、コンボボックスは背景を透明に設定できます。下図は色の組み合わせ比較です。

DropButtonStyle【ドロップボタンスタイル】

右端のボタンのアイコンが選択できます。4種類あります。

ShowDropButtonWhen【ショードロップボタンホエン】

ボタンの表示/非表示の設定ができます。

  •  0-fmShowDropButtonWhenNever/ボタンは表示しない
  •  1-mShowDropButtonWhenFocus/コンボボックスにフォーカスした時のみボタンを表示
  •  2-fmShowDropButtonWhenAlways/ボタンを常に表示する(既定値)

Style【スタイル】

コンボボックスでの値の選択方法を設定できます。
既定値のままにしないとコンボボックスの意味がないという、謎の設定になっています。

  •  0-fmStyleDropDownCombo
      ↳ 直接値を入力したり、リストから値を選択することができる(既定値)
  •  2-fmStyleDropDownList
      ↳ 直接入力不可。リストから値を選択する(リストボックスとして機能する)

チェックボックス/オプションボタン/フレーム

チェックボックスは複数選択が可能です。
オプションボタンは択一式で、昔は「ラジオボタン」(1個しか押せないから)と呼ばれました。

フレームはオブジェクトを見やすくまとめる役割です。「図形のグループ化」のようにオブジェクトを動かす時に塊で移動できるので、フォーム編集の際も便利な機能です。

チェックボックスとオプションボタンの比較 機能と見た目の違いの画像

チェックボックスとオプションボタンの表示設定項目は同じです。
アライメントと、ここまで説明してこなかった2つについて解説します。

チェックボックスとオプションボタンの詳細な設定項目の一覧

Alignment【アライメント】

通常よく見るのが左端にチェックを入れる配置(既定値)です。

Value【バリュー】

チェックボックス(オプションボタン)の状態を表す値を設定または取得します。
「True」なら「選択されている」
「False」なら「選択されていない」です。

Visible【ビジブル】

表示、非表示を切り替えまたは状態を取得します。
「True」なら「表示」「False」なら「非表示」です。
※Falseの場合、VBE上では見えますが実行画面では非表示になります。

コマンドボタン/トグルボタン/スピンボタン

コマンドボタン・トグルボタン・スピンボタンの比較 機能と見た目のサンプル画像

CommandButton【コマンドボタン】

作業を「実行」するボタンです。
値の入力・検索・並べ替え・抽出・転記など、様々な作業にGOサインを出す役割です。

表示設定に特に変わった項目はありません。
色を変えたり、透明にしたり、画像を設定することができます。

ToggleButton【トグルボタン】

電気のスイッチのようにクリックするたびにON,OFFが切り替わります。
処理条件の切り替えや、表示/非表示の切り替えなどに使用します。

表示設定に特に変わった項目はありません。
色を変えたり、透明にしたり、画像を設定することができます。

SpinButton【スピンボタン】

ボタンをクリックして、特定の範囲内で値を増減させることができます。
単体では増減の表示ができないので、ラベル・テキストボックス・セル等と組み合わせて使用します。

色設定の他、ボタンの並びを設定できます。

*Orientation【オリエンテーション】

  •  -1-fmOrientationAuto/コントロールの大きさによって自動的に判定(既定値)
  •  0-fmOrientationVertical0/垂直(縦)方向に配置
  •  1-fmOrientationHorizontal/水平(横)方向に配置

タブストリップ/マルチページ

タブストリップはどのページを開いても、同じコントロールが表示されます。
マルチページは各ページに違うコントロールを設定できます。

タブストリップとマルチページの比較 サンプル画像で見た目と機能の違いを解説

コントロールツールの紹介は以上です。
この後、ネタとして魔改造したフォームの画像を載せます。

(*’ω’*)σ 怖いのが嫌いな方はここまでです。お疲れ様でした!

ユーザーフォームは自由自在に改造できる

おまけで、筆者が魔改造した力作(?)フォームを掲載します。

作成の背景は、職場でのちょっとした理不尽な事で、、、

どこの会社にもいると思うんですがね・・・

後輩に仕事を丸投げするアカン先輩・・・

それなりに入社以来お世話にはなっているんです。

人としては人間味があって、人情もあって、いい先輩なんです。

しかし私に権限がないような仕事まで回してくるので、物申した記録です。

頼まれてたファイルを魔改造してやった!

開くとこんなファイル・・・
自分で作ったのに気持ち悪い・・笑

▼ 拡大

回答内容にかかわらず、決定をクリックするとファイルが閉じる設定にしてあるだけの簡単なVBAしか設定していなかったのですが、先輩は予想以上にビビり倒してました。

そして、馬刺しとスタバUber10回を手に入れ、MacBookProの代わりにペンタブをGet!

先輩いわく、「丸投げのおかげで、お前はスキルアップした」
・・・( ゚Д゚)えーーーー?! まぁいいか。

ちなみに大事なデータが入ったファイルは、後日きちんと別で渡しましたョ。

XP PENのDeco01もらいました。板タブだけどすごく使いやすいので、別記事書く予定です。