我有一個組合框,其中我從Excel表中添加一些東西與一堆東西。我只需要唯一的記錄,並且我希望在切換到此頁面時更新它們。 對於我用下面的代碼:Combobox(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對象 - 這將允許您僅添加唯一項目,因爲Collection對象會拒絕重複項目。有關示例代碼,請參閱http://www.dailydoseofexcel.com/archives/2004/05/18/listing-unique-items-with-collections/。 – JimmyPena
'Rand'作爲變量名使我認爲它應該是一個隨機數(如在'RAND'工作表函數中) – barrowc