← コード一覧へ戻る
基本UserForm

リストボックスで常に最下行を表示する

ログを1行追加するたびにTopIndexを末尾へ移し、新しい行が見えるようにします。

実行前に確認

  • TopIndexの変更は表示位置を変えるもので、選択を変える必要はありません。空リストには-1を代入しないよう、追加後に設定します。
  • 利用者が手動で上へスクロールすることまで禁止する例ではありません。次の追加時に再び末尾へ移動します。
  • コードと公式仕様を照合した学習用の例です。Excel実機での実行確認は行っていません。

1サンプルコード

'【貼付先:UserForm1 のコードモジュール】
Option Explicit

Private Sub UserForm_Initialize()
    Me.ListBox1.Height = 70
    Me.CommandButton1.Caption = "ログを追加"
End Sub

Private Sub CommandButton1_Click()
    With Me.ListBox1
        .AddItem "処理 " & (.ListCount + 1) & " が完了"
        .TopIndex = .ListCount - 1
    End With
End Sub

図で見る追加した行を見せる

イメージ図

ログを1行追加するたびにTopIndexを末尾へ移し、新しい行が見えるようにします。

  1. 追加

    ログを末尾にAddItem

  2. 末尾番号

    ListCount-1を計算

  3. 表示移動

    TopIndexに末尾番号

各操作は、このガイドに指定されたフォームのコードで行います。

コードの処理を説明する模式図です。実際の画面や実行結果を撮影したものではありません。

使い方・実行手順を確認する5つの手順で、コードの使い方を確認できます
  1. 1

    Windows版デスクトップExcelの練習用ブックを.xlsmで保存し、Alt+F11→[挿入]→[ユーザーフォーム]で、名前がUserForm1の空のフォームを用意します。各例は別々に試します。

  2. 2

    ツールボックスからListBox1とCommandButton1を各1個を置き、各コントロールの[(Name)]が記載どおりか確認します。

  3. 3

    UserForm1を右クリック→[コードの表示]を開き、掲載コード全体をフォームのコードモジュールへ貼り付けます。標準モジュールには貼り付けません。

  4. 4

    VBEでUserForm1を選び、F5でフォームを表示します。 「ログを追加」を15回程度クリックします。

  5. 5

    追加した最新の「処理 15 が完了」などが見える位置まで自動でスクロールします。

使っている機能の公式ドキュメント(Microsoft Learn)