|    | 
     >Cmb開催日1の部分が1〜3まであるのですが、 
>すべて同じ処理をさせたいのです。 
>1の部分を2と3に変えてやればいいかと思うのですが、 
>長くなるので、もう少し簡素化できる方法はありますでしょうか? 
>教えてください  
 
この意味が今一不明なのですが? 
 
もし、Cmb開催日1、Cmb開催日2、Cmb開催日3のListが全く同じ(日付を探すシート等が同じ)と 
言う事で有れば、ちんさんの言う事で善いと思いますが? 
 
Listの中身が違うのでこのコードを3つ分書かなければならないと有れば 
整列部分を別のプロシージャに追い出して、 
以下の様に其れを共通に呼び出しても或る程度単純化出来るのでは? 
 
Private Sub UserForm_Initialize() 
 
  Dim c As Range 
  Dim fAddress As String 
         
  With Sheets(Cmbチーム名.Value).Cells 
    Set c = .Find(What:="*/*", lookat:=xlPart) 
    If Not c Is Nothing Then 
      fAddress = c.Address 
      Do 
        'Listの整列登録を呼び出す 
        ListSort c.Value, Cmb開催日1 
        Set c = .FindNext(c) 
        If c.Address = fAddress Then Exit Do 
      Loop 
    End If 
  End With 
 
End Sub 
 
'下記を同じUserFormのコードモジュールに記述 
Private Sub ListSort(vntDate As Variant, cmbMark As MSForms.ComboBox) 
 
'  List部の整列登録 
 
  Dim i As Long 
   
  With cmbMark 
    For i = 0 To .ListCount - 1 
      If Format(vntDate, "mmdd") _ 
          >= Format(CDate(.List(i, 0)), "mmdd") Then 
        Exit For 
      End If 
    Next i 
    If i <= .ListCount - 1 Then 
      If Format(vntDate, "m/d") <> .List(i, 0) Then '★不要なら削除 
        .AddItem Format(vntDate, "m/d"), i 
      End If '★不要なら削除 
    Else 
      .AddItem Format(vntDate, "m/d") 
    End If 
  End With 
 
End Sub 
 | 
     
    
   |