| 
    
     |  | ▼Jto さん: 
 以下ではいかがでしょうか。
 サンプルとしてリストボックスにはシートから3列、B,C,D列をセットするコードにしてあります。
 またリスト元ネタシート名を"Sheet1"としています。
 このあたりは、実際のものにチューニングしてください。
 プロパティでListBox1のColumnCountを適切なものに、またSpinButton1のEnableをFalseに
 設定しておいてください。
 
 Option Explicit
 
 Dim pos As Long
 Dim cnt As Long
 Dim skip As Boolean
 
 Private Sub CommandButton1_Click()
 Call ListGet(1)
 End Sub
 
 Private Sub CommandButton2_Click()
 Call ListGet(2)
 End Sub
 
 Private Sub CommandButton3_Click()
 Call ListGet(3)
 End Sub
 
 Private Sub CommandButton4_Click()
 Call ListGet(4)
 End Sub
 
 Private Sub CommandButton5_Click()
 Call ListGet(5)
 End Sub
 
 Private Sub CommandButton6_Click()
 Call ListGet(6)
 End Sub
 
 Private Sub CommandButton7_Click()
 Call ListGet(7)
 End Sub
 
 Private Sub CommandButton8_Click()
 Call ListGet(8)
 End Sub
 
 Private Sub CommandButton9_Click()
 Call ListGet(9)
 End Sub
 
 Private Sub CommandButton10_Click()
 Call ListGet(10)
 End Sub
 
 Private Sub ListGet(idx As Long)
 Dim ch As String
 Dim myR As Range
 
 With Sheets("Sheet1")  'リストがあるシート名
 
 ch = Array("あ", "か", "さ", "た", "な", "は", "ま", "や", "ら", "わ")(idx - 1)
 Set myR = .Range("A2", .Range("A" & Rows.Count).End(xlUp))
 cnt = WorksheetFunction.CountIf(myR, ch)
 If cnt = 0 Then
 MsgBox "[" & ch & "]から始まる名前は登録されていません"
 Else
 pos = WorksheetFunction.Match(ch, myR, 0) + 1
 With SpinButton1
 skip = True
 SpinButton1.Enabled = True
 .Min = 1
 .Max = cnt \ 10 + 1
 If cnt Mod 10 = 0 Then .Max = .Max - 1
 .Value = 1
 skip = False
 End With
 Call ListSet
 End If
 
 End With
 
 Set myR = Nothing
 
 End Sub
 
 
 Private Sub SpinButton1_Change()
 
 If Not skip Then ListSet
 
 End Sub
 
 Private Sub ListSet()
 Dim f As Long
 Dim t As Long
 Dim z As Long
 Dim i As Long
 Dim tbl() As String
 
 If SpinButton1.Value = 0 Then Exit Sub
 
 f = (SpinButton1.Value - 1) * 10 + pos
 t = f + 10 - 1
 z = pos + cnt - 1
 If t > z Then t = z
 
 ReDim tbl(1 To t - f + 1, 1 To 3)  'リストを仮に3列とする
 
 With Sheets("Sheet1")  'リストがあるシート名
 For i = f To t
 tbl(i - f + 1, 1) = .Cells(i, "B").Value 'リストの1列目にB列を
 tbl(i - f + 1, 2) = .Cells(i, "C").Value 'リストの1列目にC列を
 tbl(i - f + 1, 3) = .Cells(i, "D").Value 'リストの1列目にD列を
 Next
 End With
 
 ListBox1.List = tbl
 
 End Sub
 
 |  |