Sample Macro  コントロール・ユーザーフォーム Previous Next

0-1) ユーザーフォームの色を変える このページのトップへ もくじへ 使用可能なExcelのバージョン
'=================================================================================
 ◆ユーザーフォームのコード◆
'---------------------------------------------------------------------------------
Private Sub UserForm_Initialize()               '※1
    BackColor = RGB(255, 255, 0)                '※2 背景色を変える
    BorderColor = RGB(255, 0, 0)                '※2 境界線色を変える
End Sub
'=================================================================================
<コメント>
※1 Initializeイベントは、ユーザーフォームが開かれたときに発生する
※2 BackColorプロパティ、BorderColorプロパティの値を設定して色を変える
   くわしくは、サンプルブックをダウンロードして「解説」シートを参照
サンプルブックのダウンロードは ここをクリック (YNxv230_UserForm_Color.xls 42KB)
※ 一旦、ブックをハードディスクに保存し、開き直してから実行してください。


0-2) ユーザーフォームの表示位置を指定する このページのトップへ もくじへ 使用可能なExcelのバージョン
'=================================================================================
 ◆標準モジュールのコード◆
'---------------------------------------------------------------------------------
Sub ユーザーフォームの初期表示位置を表す値を設定する()
    UserForm1.StartUpPosition = 3               '画面の左上隅(WindowsDefault)
    UserForm1.StartUpPosition = 2               '画面全体の中央(CenterScreen)
    UserForm1.StartUpPosition = 1               'UserFormが属する項目の中央(CenterOwner)
    UserForm1.StartUpPosition = 0               '初期表示位置を表す値を指定しない(Manual)
End Sub
----------------------------------------------------------------------------------------
Sub ユーザーフォームを任意の位置に表示する()
    With UserForm1
        .StartUpPosition = 0                    '初期表示位置を表す値を指定しない
        .Top = 100                              '上端からの距離を設定する
        .Left = 300                             '左端    〃
        .Show                                   '表示する
    End With
End Sub
'=================================================================================


0-3) ユーザーフォームだけを表示する このページのトップへ もくじへ 使用可能なExcelのバージョン
'=================================================================================
 ◆ユーザーフォームのコード◆
'---------------------------------------------------------------------------------
Private Sub UserForm_Initialize()               '※1
    Application.Visible = False                 'Excel画面を非表示にする
End Sub
----------------------------------------------------------------------------------------
Private Sub UserForm_Terminate()                '※2
    Application.Visible = True                  'Excel画面を表示する
End Sub
'=================================================================================
<コメント>
※1 Initializeイベントは、ユーザーフォームが開かれたときに発生する
※2 Terminateイベントは、オブジェクトがアンロードされたあとに発生する


0-4) ユーザーフォームをモードレス表示する このページのトップへ もくじへ 使用可能なExcelのバージョン
'=================================================================================
' ◆標準モジュールのコード◆
'---------------------------------------------------------------------------------
Private Sub ユーザーフォームを指定位置へモードレス表示する()
    Load UserForm1
    UserForm1.StartUpPosition = 0               '初期表示位置を表す値 ※1
    UserForm1.Top = 24                          '画面の上端からの距離 ※2
    UserForm1.Left = 400                        ' 〃 左端  〃   ※3
    UserForm1.Show vbModeless                   'モードレス表示する
End Sub
'=================================================================================
<コメント>
※1 StartUpPositionの定数と値
定数 内容
Manual 0 初期設定値を指定しない
CenterOwner 1 UserFormが属する項目の中央の位置
CenterScreen 2 画面全体の中央の位置
Windows Default 3 画面の左上隅の位置
※2 24 にはフォームの左端からの距離を指定する
※3 400 にはフォームの上端からの距離を指定する


0-5) ユーザーフォームをモードレス表示後
     すぐにワークシートの操作を可能にする
このページのトップへ もくじへ 使用可能なExcelのバージョン
'=================================================================================
 ◆ユーザーフォームのコード◆
'---------------------------------------------------------------------------------
Private Sub UserForm_Activate()
    AppActivate Application.Caption
End Sub
'=================================================================================


0-4) ユーザーフォームを印刷する このページのトップへ もくじへ 使用可能なExcelのバージョン
'=================================================================================
 ◆ユーザーフォームのコード◆
'---------------------------------------------------------------------------------
Private Sub CommandButton1_Click()              '※1
    UserForm1.PrintForm                         '※2、3
End Sub
'=================================================================================
<コメント>
※1 UserForm1にあるコマンドボタンをクリックすると仮定
※2 UserForm1が追加されたグラフィックも含めて印刷される
※3 [通常使うプリンター]として設定されているプリンターが使用される


0-7) ユーザーフォームを[×]ボタンクリックでは閉じれなくする このページのトップへ もくじへ 使用可能なExcelのバージョン
'=================================================================================
 ◆ユーザーフォームのコード◆
'---------------------------------------------------------------------------------
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
    If CloseMode = vbFormControlMenu Then       '※1
        MsgBox "[×]ボタンがクリックされましたが無視します。", , "すぐマク"
        Cancel = True
    End If
End Sub
'=================================================================================
<コメント>
※1 QueryCloseイベントの引数CloseModeの定数と値
定数 内容
vbFormControlMenu 0 UserForm上の[×]ボタンがクリックされた
vbFormCode 1 コードからUnloadステートメントが呼び出された
vbAppWindows 2 Windowsが終了しようとしている
vbAppTaskManager 3 タスクマネージャーが閉じようとしている


0-8) ユーザーフォームをコード以外では閉じれなくする このページのトップへ もくじへ 使用可能なExcelのバージョン
'=================================================================================
 ◆ユーザーフォームのコード◆
'---------------------------------------------------------------------------------
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
    If CloseMode <> vbFormCode Then             '※1
        MsgBox "コード以外では閉じれません。", , "すぐマク"
        Cancel = True
    End If
End Sub
'=================================================================================
<コメント>
※1 QueryCloseイベントの引数CloseModeの定数と値 … 上記 0-5) 参照

Excel VBA Macro