|
>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
|
|