ユーザーフォームの使い方 [ExcelのVBA]
ユーザーフォーム
「ユーザーフォーム」はフォームウインドウとなります。
| 正式名称 | UserForm |
|---|
コード例 - 基本操作
[事前準備]
設計時に「UserForm1」と「UserForm2」の2つのフォームを作成します。UserForm1には「CommandButton」を1つ、UserForm2には「TextBox」を1つ配置します。
[内容]
次のコードは「UserForm1」に記述します。内容は「UserForm2の表示、UserForm2のコントロールの操作」と「ユーザーフォームの基本的なイベントの流れを出力」します。
Private Sub CommandButton1_Click() ' ユーザーフォーム2のテキストボックスを操作する UserForm2.TextBox1.Text = "プチモンテ" ' ユーザーフォーム2を表示する UserForm2.Show End Sub Private Sub UserForm_Activate() Debug.Print "フォーム1がアクティブになりました。" End Sub Private Sub UserForm_Deactivate() Debug.Print "フォーム1が非アクティブになりました。" End Sub ' 主に初期設定などを記述します。 Private Sub UserForm_Initialize() Debug.Print "フォーム1がロードされました。" End Sub ' 主にメモリ解放などを記述します。 Private Sub UserForm_Terminate() Debug.Print "フォーム1がアンロードされました。" End Sub
[結果]

コード例 - 終了を検知する
次はユーザーフォームが「x」ボタンで閉じられようとした時にその操作をキャンセルします。
Private Sub CommandButton1_Click()
' VBAを終了する
End
End Sub
' フォームが閉じられる時
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
Debug.Print "フォーム1が閉じられようとしています。"
' フォームウインドウ右上にある「x」ボタンでは
' 終了できないようにする
If (CloseMode = vbFormControlMenu) Then
Cancel = CInt(True)
End If
End Sub
※QueryCloseイベントはイベントが発生した時点でフォームなどの情報をレジストリやINIファイルへ保存したりする事にも使用されます。
[結果]
次はCloseModeの定数です。
| 定数 | 意味 |
|---|---|
| vbFormControlMenu | 「x」ボタンが押された。 |
| vbFormCode | Unloadイベントが呼び出された。 |
| vbAppWindows | Windowsが終了した。 |
| vbAppTaskManager | タスクマネージャーで閉じられた。 |
プロパティの一覧
| プロパティ | 内容 |
|---|---|
| BackColor | コントロールの背景色 |
| BorderColor | コントロールの枠線色 |
| BorderStyle | コントロールの枠スタイル |
| Caption | コントロールの表示名 |
| Cycle | フォーカスのサイクルの設定 ※主にマルチページで使用する。マルチページのページでfmCycleCurrentFormを設定するとのマルチページ内のみフォーカスが循環する。 |
| DrawBuffer | 画面描画する為の最大画素数 |
| Enabled | コントロールの使用設定(True/False) |
| Font | 文字列のフォントの設定 |
| ForeColor | 文字列の表示色の設定 |
| Height | コントロールの縦幅 |
| HelpContextID | ヘルプのコンテキストIDの設定 |
| KeepScrollBarVisible | スクロールバーが必要が無い時も表示するかどうか |
| Left | コントロールの表示位置(画面の左幅) |
| MouseIcon | マウスアイコンの設定 |
| MousePointer | マウスポインターの設定 |
| Picture | コントロールの画像設定 |
| PictureAlignment | 画像の表示位置 |
| PictureSizeMode | 画像の拡大縮小 |
| PictureTiling | 画像をタイル形式にする |
| RightToLeft | 文字列の表示方向(日本語版ではTrueにはできません)。日本語版は左から右に設定されています。 |
| ScrollBars | スクロールバーの表示設定 |
| ScrollHeight | スクロールバーの縦幅 |
| ScrollLeft | スクロールバーの位置(左) |
| ScrollTop | スクロールバーの位置(上) |
| ScrollWidth | スクロールバーの横幅 |
| ShowModal | フォームをモーダルの設定(オン/オフ)。モーダルで表示するとそのウインドウ以外は操作不能になる。 |
| SpecialEffect | コントロールの表示スタイルの設定 |
| StartUpPosition | フォームの初期表示位置の設定 |
| Tag | 任意の文字列を設定(String型) |
| Top | コントロールの表示位置(画面の上幅) |
| WhatsThisButton | タイトルバーにヘルプボタンを追加する。WhatsThisHelpと連動しています。 |
| WhatsThisHelp | タイトルバーにヘルプボタンを追加する |
| Width | コントロールの横幅 |
| Zoom | ズーム設定(デフォルトは100%) |
※プロパティの基本的な使い方は「プロパティの使い方」をご覧ください。
イベントの一覧
| イベント | 内容 |
|---|---|
| Activate | コントロールがアクティブになった。 |
| AddControl | コントロールが追加された。 |
| BeforeDragOver | コントロールへファイルをドラッグ中。 |
| BeforeDropOrPaste | コントロールへファイルをドロップした。 |
| Click | コントロールをクリックした。 |
| DblClick | コントロールをダブルクリックした。 |
| Deactivate | コントロールが非アクティブになった。 |
| Error | コントロールでエラーが発生した。 |
| Initialize | コントロールのロード時。 |
| KeyPress | コントロール上で英数字記号キーを押した。 |
| KeyUp | コントロール上でなんらかのキーを離した。 |
| Layout | レイアウトが変更された。 |
| MouseDown | コントロール上でマウスのボタンを押した。 |
| MouseMove | コントロール上でマウスが移動した。 |
| MouseUp | コントロール上でマウスのボタンを離した。 |
| QueryClose | フォームが閉じる時。 |
| RemoveControl | コントロールが削除された。 |
| Resize | コントロールのサイズが変更した。 |
| Scroll | スクロールバーの値が変動した。 |
| Terminate | コントロールのアンロード時。 |
| Zoom | ズームが変更された。 |
※イベントの基本的な使い方は「イベントの使い方」をご覧ください。
Visual Basicのコントロール
| 共通操作 プロパティの使い方 イベントの使い方 |
![]() | ラベル |
![]() | テキストボックス |
![]() | コンボボックス |
![]() | リストボックス |
![]() | チェックボックス |
![]() | オプションボタン |
![]() | トグルボタン |
![]() | フレーム |
![]() | コマンドボタン |
![]() | タブストリップ |
![]() | マルチページ |
![]() | スクロールバー |
![]() | スピンボタン |
![]() | イメージ |
| ユーザーフォーム |
エクセル講座のクイックリンク
スポンサーリンク
関連記事
公開日:2015年07月01日 最終更新日:2015年07月06日
記事NO:01097
プチモンテ ※この記事を書いた人
![]() | |
![]() | 💻 ITスキル・経験 サーバー構築からWebアプリケーション開発。IoTをはじめとする電子工作、ロボット、人工知能やスマホ/OSアプリまで分野問わず経験。 画像処理/音声処理/アニメーション、3Dゲーム、会計ソフト、PDF作成/編集、逆アセンブラ、EXE/DLLファイルの書き換えなどのアプリを公開。詳しくは自己紹介へ |
| 🎵 音楽制作 BGMは楽器(音源)さえあれば、何でも制作可能。歌モノは主にロック、バラード、ポップスを制作。歌詞は抒情詩、抒情的な楽曲が多い。楽曲制作は🔰2023年12月中旬 ~ | |























