' [461.xls] ' [Module1] のコード '★★☆ ユーザフォームからシートをスクロールする ☆★★ Option Explicit Sub start() UserForm1.Show End Sub ' [UserForm1] のコード Option Explicit Dim flg As Boolean 'ユーザーフォーム起動時イベントを制御するためのフラグ Dim new_r As Integer '行に対してスピンボタンの変化を取得 Dim new_c As Integer '列に対してスピンボタンの変化を取得 Private Sub SpinButton1_Change() If flg = False Then Exit Sub 'スピンボタンの変化があれば垂直方向にシートを1行スクロール If SpinButton1.Value <= new_r Then ActiveWindow.SmallScroll up:=1 Else ActiveWindow.SmallScroll Down:=1 End If '現在のスピンボタンの値を格納 new_r = SpinButton1.Value End Sub Private Sub SpinButton2_Change() If flg = False Then Exit Sub 'スピンボタンの変化があれば水平方向にシートを1列スクロール If SpinButton2.Value >= new_c Then ActiveWindow.SmallScroll ToRight:=1 Else ActiveWindow.SmallScroll ToLeft:=1 End If '現在のスピンボタンの値を格納 new_c = SpinButton2.Value End Sub Private Sub UserForm_Initialize() 'コントロールの初期化が終わるまでイベントを制御 flg = False Sheets.Add ActiveSheet.Name = "作業シート" With SpinButton1 'ユーザーフォーム起動時にワークシートの全行数をスピンボタンにセット .Min = ActiveSheet.Cells.Rows.Count .Max = 1 .Value = 1 End With With SpinButton2 .Min = 1 'ユーザーフォーム起動時にワークシートの全列数をスピンボタンにセット .Max = ActiveSheet.Cells.Columns.Count .Value = 1 End With 'イベント制御を解除 flg = True End Sub Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer) Application.DisplayAlerts = False ActiveSheet.Delete Application.DisplayAlerts = True End Sub