教えて!ExcelVBA!

ExcelVBAの基礎知識・書き方について紹介します。

【ExcelVBA フォーム&コントロール】スクロールボックスのスクロール幅を設定する方法①を教えて!

構文

構文は以下の通りです。

スクロールバー名.LargeChange = 値

解説

スクロールバー内のスクロールボックス以外の部分をクリックした時のスクロール幅を設定するには、LargeChangeプロパティを使用します。値にはスクロール幅を設定します。これにより、スクロールバーが1回の移動でどれだけ移動するかが決まります。

使い方

具体的な使い方を紹介します。

Private Sub UserForm_Initialize()
    ' フォーム初期化時にスクロール幅を設定
    ScrollBar1.LargeChange = 10
End Sub

例えば、スクロールバーが1回の移動で10行分の変更を行うように設定したい場合、VBAコードは以下の通りです。このコードは、フォームが初期化される際にスクロールバーのLargeChangeを10に設定します。

プログラミング例

以下に、プログラミング例を幾つか紹介します。

(例1)フォームの読み込み時にスクロールボックスのスクロール幅を設定する方法

Private Sub UserForm_Initialize()
    ' フォームが初期化されるときに実行されるコード
    Me.ScrollBar1.LargeChange = 10  ' スクロール幅を設定(例: 10)
End Sub

(例2)ボタンクリック時にスクロールボックスのスクロール幅を変更する方法

Private Sub CommandButton1_Click()
    ' ボタンがクリックされたときに実行されるコード
    Me.ScrollBar1.LargeChange = 5  ' スクロール幅を設定(例: 5)
End Sub

(例3)テキストボックスに入力された値を使ってスクロール幅を設定する方法

Private Sub TextBox1_Change()
    ' テキストボックスの値が変更されたときに実行されるコード
    Dim newLargeChange As Integer
    ' エラー処理: 数値以外が入力された場合の対応
    On Error Resume Next
    newLargeChange = CInt(Me.TextBox1.Value)
    On Error GoTo 0
    If newLargeChange > 0 Then
        Me.ScrollBar1.LargeChange = newLargeChange
    Else
        MsgBox "正の整数を入力してください。", vbExclamation
    End If
End Sub

まとめ

スクロールバー内のスクロールボックス以外の部分をクリックした時のスクロール幅を設定するには、LargeChangeプロパティを使用します。設定したスクロール幅に基づいて、ユーザーがスクロールバーを操作すると、指定された大きさでのスクロールが行われます。是非活用してください。