リストボックスで常に最下行を表示する
ログを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を末尾へ移し、新しい行が見えるようにします。
追加
ログを末尾にAddItem
末尾番号
ListCount-1を計算
表示移動
TopIndexに末尾番号
各操作は、このガイドに指定されたフォームのコードで行います。
コードの処理を説明する模式図です。実際の画面や実行結果を撮影したものではありません。
使い方・実行手順を確認する5つの手順で、コードの使い方を確認できます
- 1
Windows版デスクトップExcelの練習用ブックを.xlsmで保存し、Alt+F11→[挿入]→[ユーザーフォーム]で、名前がUserForm1の空のフォームを用意します。各例は別々に試します。
- 2
ツールボックスからListBox1とCommandButton1を各1個を置き、各コントロールの[(Name)]が記載どおりか確認します。
- 3
UserForm1を右クリック→[コードの表示]を開き、掲載コード全体をフォームのコードモジュールへ貼り付けます。標準モジュールには貼り付けません。
- 4
VBEでUserForm1を選び、F5でフォームを表示します。 「ログを追加」を15回程度クリックします。
- 5
追加した最新の「処理 15 が完了」などが見える位置まで自動でスクロールします。