| 
    
     |  | ▼Misako さん: こんばんは。
 >でも何故iの変数が0〜2の動きなのでしょうかね?
 ん? iが0〜2というような変化することが疑問に思う事の真意がちょっと
 わかりませんが・・・。
 
 Combobx1のメンバーはList()という配列に格納されています。
 List()の最初の添え字が0なのですよ!!
 
 例えば、上記のCombobox1にメンバとして、あ、い、う、え、お という5文字が
 登録されているとすると・・・、
 
 Combobox1.List(0)   ------> あ
 
 Combobox1.List(1)   ------> い
 
 Combobox1.List(2)   ------> う
 
 Combobox1.List(3)   ------> え
 
 Combobox1.List(4)   ------> お
 
 となります。このListという配列の添え字としてiは使われています。
 
 ですから、iは、0,1,2という変化をFor文によって制御され、
 Combobox1のメンバを全て取得することが出来るのです。
 
 これでいかがですか?
 
 投稿ついでに、
 
 提示されたコンボボックスに重複なしデータの登録処理コードは、
 データによっては、重複なしデータになりません。
 
 
 新規ブックにて確認してください。
 
 ユーザーフォーム(Userform1)を一つ作成してください。
 
 このUserform1には、コンボボックス(Combobox1)を一つだけ配置してください。
 
 
 このUserform1のモジュールには、提示されたコードをそのまま記述します。
 
 '=================================
 Private Sub UserForm_Initialize()
 Dim k As Long
 Dim i As Long
 For k = 6 To Range("A65536").End(xlUp).Row
 For i = 0 To ComboBox1.ListCount - 1
 If Cells(k, 1).Value = ComboBox1.List(i) Then
 Exit For
 End If
 Next i
 If i = ComboBox1.ListCount Then
 ComboBox1.AddItem Cells(k, 1).Value
 End If
 Next k
 End Sub
 
 標準モジュールに
 '===============================================================
 Sub main()
 With ActiveSheet.Range("a6:a20")
 .Value = [{1;2;3;4;5;5;5;6;7;8;9;10;9;9;9}]
 MsgBox "A列にサンプルデータ作成しました。" & vbCrLf & _
 "これから、ユーザフォームのコンボボックスに重複なし登録します"
 
 End With
 UserForm1.Show
 End Sub
 
 としてmainを実行してみてください。
 
 本来なら、コンボボックスには、
 1,2,3,4,5,6,7,8,9,10 というメンバが登録されなければならないのに
 
 数字が重複して登録されていませんか?
 
 どこかにバグがありますから、考えてみてください。
 
 |  |