エクセル実践塾 > エクセル実践塾2007

リスト内の各データを、順番に個別で表示したい

 

専用のユーザーフォームにスクロールバーを追加すれば、リスト内のデータを順番に表示できます

表示するデータの行番号を変えていけば、ユーザーフォームでデータを順番に表示することができます。この行番号の変更に便利なのが、スクロールバーコントロールです。

@ユーザーフォームにスクロールバーを配置し、そのMinプロパティを「2」にします。

リストでは、1行目には見出しが入力されています。データは2行目からなので、スクロールバーの最小値を「2」に設定しておきます。

同時に、LargeChangeプロパティを「10」にします。LargeChangeプロパティは、スクロール バーの矢印ボタンとスクロール ボックスの間の領域をクリックしたときに移動するスクロール量です。

A前号で記述したBeforeDoubleClickイベントのマクロに、次のコードを追加します。

.ScrollBar1.Value = Target.Row
.ScrollBar1.Max = Cells.SpecialCells(xlCellTypeLastCell).Row

「.ScrollBar1.Value」は、スクロールバーの現在値を表すコードです。それに、ダブルクリックしたデータの行番号を割り当てます。

「Cells.SpecialCells(xlCellTypeLastCell).Row」は、リストの最終行番号を取得するコードです。それをスクロールバーの最大値として、Maxプロパティに設定します。

Bスクロールバーをダブルクリックして、そのChangeイベントに次のようなコードを記述します。

Private Sub ScrollBar1_Change()
  With UserForm1
    .TextBox1.Text = Cells(.ScrollBar1.Value, 1)
    .TextBox2.Text = Cells(.ScrollBar1.Value, 2)
    .TextBox3.Text = Cells(.ScrollBar1.Value, 3)
    .Image1.Picture = LoadPicture(Cells(.ScrollBar1.Value, 4))
  End With
End Sub

前号でBeforeDoubleClickイベントに記述したものと、基本的に同じマクロです。ダブルクリックしたデータの行番号を表す「Target.Row」の代わりに、スクロールバーで変更された値を表す「.ScrollBar1.Value」を指定します。

これにより、スクロールバーでの表示データの変更が可能となります。

Cスクロールバーの操作で、表示されるデータを変更できるようになりました。