Hai Keket,
Langkah 1 :
>> buat blok pengisian item combobix dengan methods additem. Jadi tidak
menggunakan properti rowsource alias listfillrange.
>> Blok proses pengisian item combobox dengan methods additem ini bisa
diletakkan disebuah prosedur tersendiri ataupun di event init milik si
userform (jika menggunakan userform). Lihat disini
<http://b-excel.blogspot.com/2014/02/belajarvba-102-combobox-02.html>.
>> ubah baris pengisian (yang ada bunyi additem-nya) agar berada dalam satu
blok pengkondisian (blok IF) yang memeriksa apakah item yang akan
ditambahkan berisi teks yang ditulis user atau tidak.
>> sebelum blok for, tambahkan perintah hapus isi daftar combobox
Kira-kira bentuknya
namanyacombobox.clear
for blablabla
if instr( nilai_yang_di_loop_for , teks_inputan_user , 1 ) <> 0 or
len(teks_inputan_user)=0 then
baris yang ada additem nya
endif
next blabla
Langkah 2 :
>> buat sebuah prosedur berscope private, misal diberi nama IsiCombo
private sub isicombo()
end sub
>> cut baris dari event init userform mulai dari proses clear combobox
sampai next ke dalam prosedur IsiCombo
>> di event init userform, pada baris bekas blok for yang di-cut tadi, isi
dengan perintah untuk panggil prosedur IsiCombo
Langkah 3 :
>> pada module milik userform, buat variabel bertipe boolean untuk status
apakah proses change sedang berlangsung atau tidak, dengan scope private
private bStatusChange as boolean
>> pada event init si userform, sebelum proses clear, isi nilai
bStatusChange dengan FALSE
bStatusChange=false
Langkah 4 :
>> pada event change si combobox,
setelah baris deklarasi variabel (jika ada), letakkan blok kondisi
pengubah informasi status change berikut :
if bStatusChange then
exit sub
endif
bStatusChange =true
>> panggil prosedur isicombo
>> pada event change si combobox,
sebelum end sub atau sebelum baris perintah keluar dari prosedur,
tambahkan baris pengubah status change agar kembali ke normal, yaitu nilai
bStatusChange menjadi FALSE
bStatusChange=false
Kira-kira demikian alurnya.... silakan disesuaikan dengan keadaan setempat.
Konsep :
1. proses pengisian combobox didahului dengan clear isi daftarnya
2. proses pengisian combobox dengan methods additem (isi satu per satu
melalui loop)
3. proses pengisian combobox yang utuh tersebut diletakkan di sebuah
prosedur tersendiri
4. proses init userform perlu memanggil proses pengisian combobox
5. proses change terhadap combobox juga perlu memanggil proses pengisian
combobox
6. karena proses 5 akan membuat proses yang circular, maka buat variabel
penyimpan status bahwa proses change combo sedang dilakukan (nilai TRUE),
sehingga ketika nilai TRUE harus segera keluar dari event change si
combobox. Proses circular bisa dicegah.
Selamat mencoba.
Wassalam,
Kid.
2014-12-12 17:57 GMT+11:00 ke2t [email protected] [belajar-excel] <
[email protected]>:
>
>
>
> Sore..
>
> Saya coba buat macro dengan combo box. Apakah bisa seperti data terlampir,
> jika saya ketikkan "makan" dalam ComboBox1, maka akan otomatis muncul 4
> suggestion drop down kebawah:
> - besok kamu mau makan apa
> - makan sama apa ya
> - pokoke makan aja deh
> - makan nasi goreng deh
> Karena kata "makan" adalah kata kucinya. Dan terakhir akan dieksekusi
> dengan pilihan click kita pilih text yg mana.
>
> Tks atas bantuannya.
> Keket Ijo
>
>