' [444.xls] ' [Module1] のコード '★★☆ 画面サイズに比例してユーザーフォームサイズを指定する ☆★★ Option Explicit Sub start() UserForm1.Show End Sub ' [UserForm1] のコード Option Explicit 'コントロールを配列に取り込む為の変数宣言 Dim op_btn As New Collection Dim i As Integer Dim f_size Dim Maxh As Long '画面の高さ Dim Maxw As Long '画面の幅 Private Sub CommandButton1_Click() '現在選択されているオプションボタンを調べる For i = 1 To 4 If op_btn(i).Value = True Then f_size = i + 1 Exit For End If Next i With Me '画面サイズに対する割合でフォームサイズを指定する .Height = Maxh / f_size .Width = Maxw / f_size 'フォームが画面の中心に表示するように位置を指定する .Top = (Maxh - .Height) / 2 .Left = (Maxw - .Width) / 2 'コントロール群がフォームの中心に表示するように位置を指定する Frame1.Top = (.Height - Frame1.Height) / 2 - 10 Frame1.Left = (.Width - Frame1.Width) / 2 End With End Sub Private Sub UserForm_Initialize() Dim op_ctrl As Control 'スクリーン(画面)のサイズを取得 With Application .ScreenUpdating = False .WindowState = xlMaximized Maxh = .Height Maxw = .Width .WindowState = xlNormal .ScreenUpdating = True End With 'オプションボタンを配列に取り込む For i = 2 To 5 Set op_ctrl = Me.Controls("OptionButton" & i) op_btn.Add Item:=op_ctrl, Key:=op_ctrl.Name Next 'フォームを表示する前にデフォルトで選択されている 'オプションボタンにフォームサイズを調整しておく CommandButton1_Click End Sub