【VBA】入力中もExcelが操作できる!ユーザーフォームを「モードレス」で表示する方法

【業務効率化】VBA
スポンサーリンク

「…えっ、なんでエクセルが触れないの?」

VBAを勉強して、ようやく自作の入力フォーム(UserForm)を作れた時のこと。意気揚々と実行ボタンを押したものの、フォームが開いている間は、後ろのエクセルシートを1ミリも動かせない…。
結局、シートの内容を確認するために一度フォームを閉じ、また開く。

そんな「二度手間」にイライラしたことはありませんか?

実はこれ、VBAの初期設定が「モーダル(Modal)」という、少し融通の利かない設定になっているからなのです。

今回は、この制限を解除して、フォームを表示したまま自由にシートを操作できる「モードレス(Modeless)」という設定をご紹介します。

【業務効率化】VBAの記事を見る 

「モーダル」と「モードレス」の違いとは?

両者には、以下のような使い勝手の違いがあります。

  • モーダル(標準設定) 「頑固なレストランの店員さん」。注文をすべて決めて店員さんに伝えない限り、他のメニューを見ることすら許してくれません。
  • モードレス(今回の設定) 「セルフサービスのカフェ」。トレイを持って好きなものを取っている最中も、店内の様子を見たり、席を確保したりできます。

事務作業中は、シートの数字を見ながらフォームに入力することが多いですよね。だからこそ、後者の「モードレス」が圧倒的に便利なんです。

解決策は「1行書き足すだけ」!

やり方はとても簡単です。フォームを表示させるコードに、たったひとつの単語を付け加えるだけ。

コピペで使えるコード

標準モジュールなどに貼り付けて使ってください。

Sub ShowMyForm()
    ' 通常の表示方法:UserForm1.Show
    ' これを以下のように書き換えるだけで「モードレス」になります
   
    UserForm1.Show vbModeless
   
    ' これでフォームを出したまま、マウスでシートのセルを選択したり
    ' スクロールしたりできるようになります。
End Sub

もう一つの設定方法(プロパティから変更)

「コードを直接書き換えるのは避けたい」という方は、マウス操作だけで設定することも可能です。

  1. VBAエディタで「UserForm」を選択。
  2. 左下の「プロパティウィンドウ」を見る。
  3. ShowModal」という項目を探し、TrueをFalseに変更する。

これだけで、そのフォームは常に「出しっぱなしOK」の状態になります。

まとめ

VBAは単に「動けばいい」というわけではなく、「使う人がどれだけ楽になれるか」という視点が大切です。

もし、ご自身で作ったツールに対して「シートが触れなくて不便だな」と感じることがあれば、迷わず「vbModeless」を試してみてください。

たったそれだけの工夫で、あなたや周囲の方々の作業が劇的に快適になるはずです!

【業務効率化】VBAの記事を見る 


VBAを独学で学び、業務自動化に5年以上携わってきた私が、「本当に実務で役立った!」と感じた2冊を紹介します。 もう本選びで失敗したくない方は、よければ参考にしてみてください。

この記事を書いた人
ぐー

手取り15万円の会社員でしたが、年間100万円以上節約していました。
株式投資で年間360万円以上投資し、iDeCoも併用しています。
総資産はアッパーマス層に到達しました。
資格は日商簿記3級を持っています。

このブログでは、私が実践してきた節約術やリアルな資産運用、生産性を高めるITスキルについて発信しています。

生活を豊かにするため、高配当株投資で年間配当金60万円をめざしています。
現在の年間配当金は30万円ほどです。

ゲーム・漫画・アニメなどが好きです。
一緒に資産形成をがんばりましょう!
よろしくお願いします!

ぐーをフォローする
【業務効率化】VBAITスキル
スポンサーリンク
ぐーをフォローする

コメント

タイトルとURLをコピーしました