Hai Longinus,
Kalau dilihat script-nya, penyebabnya adalah penggunaan properti text
ataupun value terhadap combobox.
Properti utama suatu item dalam combobox adalah listindex, bukan text
apalagi value. Dari properti listindex suatu combobox atau listbox akan
mendapatkan nilai yang disimpan dalam properti text ataupun value. Jadi,
mengubah nilai suatu combobox bukan dengan meng-set nilai text atau value,
tetapi meng-set nilai listindex-nya.
Pada kasus ini, control scrollbar pada event change mengubah nilai combobox
melalui nilai text atau value (yang *biru*) [kalo ndak salah, kebiasaan ini
yang sering digunakan mbak Siti (alm). Sayangnya, kebiasaan ini kurang pas
dengan karakteristik si control dan sebaiknya ditinggalkan, kecuali item
dalam combobox memiliki properti value yang unique kalau pakai value atau
properti text yang unique kalau pakai properti text.]
Private Sub CbNextNama_Change()
Dim r As Integer
r = CbNextNama + 0
If r > 0 Then
* cboNama.Value = MemMaster(r, 2)* txtVIP.Value =
MemMaster(r, 3)
txtAlamat.Value = MemMaster(r, 4)
cboCategory.Value = MemMaster(r, 5)
lblrecord.Caption = "Record " & CbNextNama.Value & _
" dari " & CbNextNama.Max
End If
If r = 0 Then
lblrecord.Caption = "Record 1" & _
" dari " & CbNextNama.Max
Exit Sub
End If
End Sub
Seperti pada prosedur tersebut di atas, bagian *biru* akan memasang nilai
baru dalam combobox melalui properti value. Semestinya, yang di-set adalah
properti listindex milik combobox. Berarti baris *biru* tersebut mestinya
berbunyi :
* cboNama.listindex=r-1* 'karena listindex menggunakan base 0, lihat
disini <http://b-excel.blogspot.com/2014/02/belajarvba-102-combobox-01.html>
.
Kemudian, event change milik combobox akan bekerja karena proses pengubahan
nilai listindex tersebut.
Andai dalam event change sudah ada proses untuk mengambil nilai item pada
listindex terpilih (yang di set baru itu), maka dibagian lain script
(diprosedur apapun) ndak perlu ada proses pengambilan nilai lagi karena
sudah diserahkan ke event change.
Contohnya pada kasus ini, event change combobox sudah berisi proses
pengambilan nilai dari item combobox berdasar listindex (tidak mengakses
sumber data untuk listnya combobox lagi ketika combobox sudah diisi dengan
banyak kolom) terpilih : (kayanya ndak asing dengan script ini)
Private Sub cboNama_Change()
Dim lIdx As Long
With cboNama
'blablabla
TextNamaoutlet.Text = .List(lIdx, 0)
txtVIP.Text = .List(lIdx, 1) 'ambil kolom kedua (,1)
pada baris rowsource berindeks lIdx
txtAlamat.Text = .List(lIdx, 2)
cboCategory.Text = .List(lIdx, 3)
CbNextNama.Value = lIdx + 1
'dst
Berarti, baris-baris yang di-merah di prosedur event change milik scrollbar
(diatas sana) tidak diperlukan alias bisa di-non-aktif-ken.
Regard,
Kid
2015-05-12 13:51 GMT+10:00 Longinus Lee [email protected]
[belajar-excel] <[email protected]>:
>
>
> Dear ALL
>
> (REVISI)
>
> Para Master mohon bantuan untuk koreksi modul VBA (file terlampir pada
> email)
>
> case nya adalah sebagai berikut :
>
> 1. untuk form Edit Data Produk tidak berjalan sedemikian yang saya
> harapkan, combobox list produk tidak berfungsi dengan baik dan tidak
> sinkron dengan Record label dan scrollbar, case nya adalah pada saat
> combobox di klik dengan menggeserkan tanda panah bawah dan atas pada
> keybord tidak berfungi dengan baik, begitu juga pada modul perbarui data.
>
> 2.Begitu juga pada form edit data outlet, kasusnya hampir sama dengan
> Edit Data Produk.
>
> Yang saya harapkan adalah kedua form diatas tersbut dapat berfungsi
> dengan baik seperti Form edit catalogue.
>
> Modul sudah saya periksa satu per satu, tetapi tidak ketemu kesalahanya
> dimana, mohon bantaunnya untuk di perbaiki untuk case tersebut.
>
> Sebelum dan sesudahnya saya ucapkan terimakasih banyak.
>
> salam.
> Longinus
>
>
>