コンボボックスを持っています。私は一意のレコードだけを必要とし、私はこのページに切り替えるときにそれらを更新したい。そのために 私は、次のコードを使用:コンボボックス(VBA)内のユニークなレコードのみ
Private Sub MultiPage1_Change()
Dim Rand As Long
Dim ws As Worksheet
Set ws = Worksheets("BD_IR")
Dim i As Long
Rand = 3
Do While ws.Cells(Rand, 3).Value <> "" And Rand < 65536
If Me.repereche.ListCount <> 0 Then
For i = 0 To (Me.repereche.ListCount)
If Me.repereche.List(i, 0) <> Mid(ws.Cells(Rand, 3).Value, 4, 10) Then
Me.Controls("repereche").AddItem Mid(ws.Cells(Rand, 3).Value, 4, 10)
End If
Next i
ElseIf Me.repereche.ListCount = 0 Then
Me.Controls("repereche").AddItem Mid(ws.Cells(Rand, 3).Value, 4, 10)
End If
Rand = Rand + 1
Loop
このコードの問題は、(問題がどこにあると私は知らないのですか?)私は、ページを変更し、私は戻ってこのページに来たときにということですコンボボックスは...より多くの(ユニークではない)アイテムを追加します。どこが間違っていますか?
コンボボックスにアイテムを追加する前に、そのコンボボックスを消去する必要があります。これは、ページを切り替えるたびに「ますます多くのアイテム」が追加されるのを防ぎます。一意のレコードが必要な場合は、範囲を配列に読み込んで各アイテムをCollectionオブジェクトに追加します。コレクションオブジェクトが重複を拒否するため、ユニークなアイテムのみを追加できます。サンプルコードについては、http://www.dailydoseofexcel.com/archives/2004/05/18/listing-unique-items-with-collections/を参照してください。 – JimmyPena
'Rand'を変数名として使用すると、乱数(' RAND'ワークシート関数のように)になるはずです。 – barrowc