|
▼Zenji さん:
>>このコードはどこに書かれていますか?
>
> 標準モジュールに書いています
標準モジュールですか??
私はまた、UserForm1のボタンを押すと一連の処理を実行するのかと
想像してました。
UserForm1がすでに開いている前提で、
'----------------------- 標準モジュール
Option Explicit
Sub ComboBox_Setting()
Dim Ws As Worksheet
Dim i As Long, j As Long
Dim LastRow As Long
Dim v As Variant, ss As String
Dim dic(2 To 9) As Object
For i = 2 To 9
Set dic(i) = CreateObject("Scripting.Dictionary")
Next
Set Ws = ActiveWorkbook.Worksheets("Sheet1")
'LastRow=Noが書かれている最下行
LastRow = Ws.Range("B7").CurrentRegion.Rows.Count
For i = 7 To LastRow
v = Ws.Cells(i, 2).Value
If Not IsEmpty(v) Then
If v <> "No" Then
For j = 3 To 10
ss = Ws.Cells(i, j).Value
If Len(ss) > 0 Then
dic(j - 1)(ss) = Empty
End If
Next j
End If
End If
Next i
For i = 2 To 9
UserForm1.Controls("ComboBox" & i).List = dic(i).Keys()
Next
Erase dic
End Sub
'-------------------
とすると、ComboBox2〜ComboBox9 にリストが作成されます。
つまり、このばあい、最初 ComboBoxにはアイテムが一つもない状態を
仮定しています。
そうではなく、
すでにComboBoxどもに、アイテムがAddItem されていて、
そこに Sheet1 からアイテムを追加したい(重複せずに)ということであれば、
別の方法を(ちょっと思いつきませんが)考える必要があります。
この点(新規リスト作成か/すでにあるリストに追加か)をご確認ください。
|
|