|
▼Misako さん:
こんばんは。
>このサイトで、下のコードの「重複を除く」コードを記録させていただき、
>活用させていただいています。私にとって大切なコードです。
下記のコードは、出力としてコンボボックスにA列のデータを重複なしで登録するコードですよね?
つまり、コンボボックスCombobox1には、重複するデータは登録されていないのです。
>
>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
'****************************************************************
'この中のコードは、セルの値(A6から始まる)とCombobox1に登録されている値の全て
'と等しいか否かの比較をしています。
'セルの値とCombobox1に登録されているメンバの中で等しいメンバがあれば、そのセルの
'値は、Combobox1に登録しません(重複は、含まないのですから)。
'そのセルがCombobox1に登録されているメンバの中のどれとも等しくなければ、
'そのセルをCombobox1に登録します。
'その判断が↓このIf文で行っています。これがちょっとわかりにくいですね!!
'iがComboBox1.ListCount と等しいということは、Combobox1のメンバと全て比較し、
'等しくなかったということです。つまり、新たにCombobox1にそのセルの値は登録されます。
'反対に、等しくない場合は、そのセルの値が、Combobox1のメンバに既に存在することを意味します。
'よって、そのセルの値は、Combobox1に登録しません
> If i = ComboBox1.ListCount Then
> ComboBox1.AddItem Cells(k, 1).Value
> End If
>Next k
>End Sub
これでいかがですか?
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
Debug.Print Cells(k, 1).Row & " の " & Cells(k, 1).Value & " は既に存在します"
Exit For
End If
Next i
If i = ComboBox1.ListCount Then
ComboBox1.AddItem Cells(k, 1).Value
End If
Next k
End Sub
尚、上記のようにDebug.Printを入れて、見直してみてください
|
|