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
>  
>

Kirim email ke