ホーム > カテゴリ > Excel・VBA >

ユーザーフォームの使い方 [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ファイルへ保存したりする事にも使用されます。

Wikipediaで補足:レジストリ INIファイル

[結果]

次はCloseModeの定数です。

定数意味
vbFormControlMenu「x」ボタンが押された。
vbFormCodeUnloadイベントが呼び出された。
vbAppWindowsWindowsが終了した。
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のコントロール

共通操作
 プロパティの使い方 イベントの使い方

ラベル
テキストボックス
コンボボックス
リストボックス
チェックボックス
オプションボタン
トグルボタン
フレーム
コマンドボタン
タブストリップ
マルチページ
スクロールバー
スピンボタン
イメージ
ユーザーフォーム

エクセル講座のクイックリンク

ホーム 新機能 基本(初級) 基本(中級) 基本(上級) 関数 マクロ VBA TIPS





関連記事



公開日:2015年07月01日 最終更新日:2015年07月06日
記事NO:01097