【VBA×初学者向け】ユーザーフォームを表示する方法

みなさんこんにちは。

VBAの実装に慣れてくると、

ユーザーフォームを活用した実装機会も増えてくるかと思います。

一口にユーザーフォームの表示といっても、

モーダルやモードレスなど複数種類あり、

ベテランのコーダーでも実装時に(?)と振り返ることがしばしばあります。

ここでは Excel のユーザーフォームで VBA を使ってユーザーフォームを表示する方法について解説します。

VBA×初学者向けの過去の記事

VBAに関するワザやテクニックなどの参考記事については、過去にご紹介しておりますのでそちらもどうぞ。

ユーザーフォームを表示する

基本構造の紹介

ユーザーフォームを VBA のプログラムの中から表示するには、

まずユーザーフォームをメモリに読み込み、そのあとで表示する手順が必要になります。

ユーザーフォームをメモリに読み込むには Load 文を使用します。

そして、メモリに読み込んだユーザーフォームを表示するには Show メソッドを使用します。

文章で書くと違和感があるかもしれませんが、

フォームを表示するコードは以下の内容が基本構文になります。

Option Explicit

Sub テスト()
    Load UserForm1
    UserForm1.Show
End Sub

ただし、Showメソッドを実行したときにメモリに読み込まれていなかった場合は、

自動的に読み込みが行われるので Load 文を省略して次のように記述しても構いません。

Option Explicit

Sub テスト()
    UserForm1.Show
End Sub

実行手順

1.VBEの「挿入」→「ユーザーフォーム」をクリックします。

2.表示されたユーザーフォームをダブルクリックします。

3.F5あるいは、実行ボタンをクリックします。

4.ユーザーフォームが表示されます。

モーダルかモードレスかを指定して表示する

基本構造の紹介

ユーザーフォームを表示するときにモーダルかモードレスかを指定することができます。

モーダルとは、ユーザーフォームが開いている間は、ワークシートなどの操作ができなくなります。

モードレスとはユーザーフォームが開いている間もワークシートにフォーカスを映して操作をすることができます。

モーダルカモードレスかを指定してユーザーフォームを表示する場合は、 Show メソッドの引数を指定する必要があります。

定数説明
vbModal1モーダルで表示します。
vbModeless0モードレスで表示します

以下のようなコードになります。

Option Explicit

Private Sub UserForm_Click()
    Load UserForm1
    ' モーダルで表示する場合
    UserForm1.Show.vbModal
End Sub

モーダルとモードレスの違いについて

モーダルでユーザーフォームを表示した場合、ワークシート上をクリックしても何も反応がありません。

一方でモードレスでユーザーフォームを表示した場合、ワークシート上をクリックするとセルにフォーカスを移すことができ、編集も行うことができます。

最後に

いかがでしたでしょうか。

VBAを1から実装する場合、ユーザーフォームの実装を振り返る必要があり、

久しぶりに取り扱う場合は意外と(?)となる機会があるかと思います。

ですので、しっかりマスターして基本を抑えながらと実装できると業務効率も格段に向上するかと思います。

そのきっかけとして、少しでも参考になればと思います。

開発依頼について

ココナラでWebスクレイピング開発サービスを出品しております。

自分で開発をしようと思ったけど、VBAでのネット記事が少なく困っている方も多いかと思います。

そんな方はいつでもお気軽にご相談ください。

また、本ブログからご依頼いただいた方については割引特典がございますので、

ご不明点と合わせてメッセージをいただけると幸いです。

Excelにてブラウザ操作自動化ツールを作成します その作業、webスクレイピングを使って自動化しましょう!

Webスクレイピング以外にもWebアプリの開発サービスも出品しております。

こちらについても、本ブログからご依頼いただいた方については割引特典がございますので、

お気軽にご相談ください。

スモールスケールのWebアプリ開発します 先ずはスモールスケールのWebアプリから始めませんか?

ご興味がある方はこちら!!

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA