Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


11403 / 76734 ←次へ | 前へ→

【70866】Re:ユーザフォームのコマンドボタンとスピンボタンの連動のさせ方について
回答  UO3  - 12/1/9(月) 15:35 -

引用なし
パスワード
   ▼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

13 hits

【70845】ユーザフォームのコマンドボタンとスピンボタンの連動のさせ方について Jto 12/1/6(金) 9:45 質問
【70846】Re:ユーザフォームのコマンドボタンとスピ... UO3 12/1/6(金) 10:30 発言
【70847】Re:ユーザフォームのコマンドボタンとスピ... UO3 12/1/6(金) 10:40 回答
【70848】Re:ユーザフォームのコマンドボタンとスピ... Jto 12/1/6(金) 12:00 質問
【70850】Re:ユーザフォームのコマンドボタンとスピ... UO3 12/1/6(金) 17:10 発言
【70851】Re:ユーザフォームのコマンドボタンとスピ... UO3 12/1/6(金) 18:04 発言
【70852】Re:ユーザフォームのコマンドボタンとスピ... UO3 12/1/6(金) 21:11 発言
【70857】Re:ユーザフォームのコマンドボタンとスピ... UO3 12/1/7(土) 10:27 発言
【70866】Re:ユーザフォームのコマンドボタンとスピ... UO3 12/1/9(月) 15:35 回答
【70903】Re:ユーザフォームのコマンドボタンとスピ... Jto 12/1/13(金) 21:49 質問
【70908】Re:ユーザフォームのコマンドボタンとスピ... UO3 12/1/16(月) 17:07 発言
【71052】Re:ユーザフォームのコマンドボタンとスピ... Jto 12/1/27(金) 10:19 質問
【71054】Re:ユーザフォームのコマンドボタンとスピ... UO3 12/1/27(金) 10:32 発言
【71055】Re:ユーザフォームのコマンドボタンとスピ... UO3 12/1/27(金) 10:58 発言

11403 / 76734 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free