VBA'da bir açılan kutudan tüm öğeleri program aracılığıyla nasıl kaldırabilirim? Önümüzdeki (gerçek kodu ile güncellenmiş)Tüm Öğeleri ComboBox'tan Kaldırma?
cevap
Daha da iyisi
For i = ListBox1.ListCount - 1 to 0 Step - 1
ListBox1.RemoveItem i
Next i
Psuedo kodu: öğeleri varken
Do While ComboBox1.ListCount > 0
ComboBox1.RemoveItem (0)
Loop
Temelde, combobox'dan ilk öğeyi kaldırın. Tüm öğeler kaldırıldıktan (say = 0), kutunuz boş.
Yöntem 2:
For i = 1 To ListBox1.ListCount
'Remove an item from the ListBox using ListBox1.RemoveItem
Next i
Güncelleme - cevabım tam çözüm içermiyordu neden bilmiyorum: ayrı ayrı maalesef her birini kaldırmak gerekir
ComboBox1.Clear
+1 ortak yöntemidir - basit daha iyi – DataSmarter
Üzgünüz, VBA, birleşik kutu denetimi için net bir yöntem sağlamaz. –
@Sham Yemul: ComboBox.Clear'ın gerçekten de en azından Excel 2010'dan itibaren ActiveX ComboBox denetiminde çalıştığından emin olabilirim. – Aaron
en iyi yol:
Combobox1.items.clear();
Bu, C# 'da iyi çalışır ancak VBA'da çalışmaz ... –
basit yolu:
Combobox1.RowSource = "" 'Clear the list
Combobox1.Clear 'Clear the selected text
İlk satır VBA uygulamasında çalışır! İkinci çizgi iyi değil. –
Sen ControlFormat yöntemi kullanabilirsiniz:
Sadece bu test ettik Erişim 2013'teComboBox1.ControlFormat.RemoveAllItems
Erişim VBA'sı yok –
:
While ComboBox1.ListCount > 0
ComboBox1.RemoveItem 0
Wend
İlginçtir, eğer Öğe listesini Özellikler'de ayarlarsınız, Form Görünümü'nden çıkıp Tasarım Görünümüne geri döndüğünüzde bu kaybolmaz.
kullanıcı formu comboboxes üzerinde .Clear yöntem sağlamaz Erişim VBA için, bu çözüm benim için kusursuz çalışır:
If cbxCombobox.ListCount > 0 Then
For remloop = (cbxCombobox.ListCount - 1) To 0 Step -1
cbxCombobox.RemoveItem (remloop)
Next remloop
End If
Private Sub cmdClear_Click()
ComboBox1.Value = Null
ComboBox2.Value = Null
End Sub
Lütfen kodun etrafına bağlam ekleyin. – coatless
me.Combobox1.Clear
Bu, "Yöntem 2" için
Bir çekicilik gibi çalıştı, teşekkürler! – sooprise
Her seferinde en üstteki öğeyi kaldırdığınızı işaret ederek (bir salak gibi mücadele ettikten sonra). Eğer bunu yapmaya çalışırsanız, o zaman yarım yol boyunca güzel bir sınır hatası alırsınız. – PsychoData
@PsychoData anlamı yapabileceğiniz 'i için ListBox1.ListCount için 1 Adım -1' ve iyi çalışmalıdır. – ptpaterson