Trimakasih Mas Kid, Awalnya saya coba deklarasi untuk obyek yang lain, tapi ternyata gagal (masih salah terus) Walhasil deklarasinya saya masukkan di tiap objectnya. Dengan jawaban saya yang awal dan koreksi dari Mas Kid malah jadi sekalian belajar tentang prosedur yang benar dan menyingkat pengkodeannya Sekali lagi terimakasih Mas Kid Wassalam,
________________________________ From: Mr. Kid <[email protected]> To: BeExcel <[email protected]> Sent: Thursday, May 2, 2013 4:06 PM Subject: Re: [belajar-excel] Option button macro pada User form untuk menentukan range combo box Sepertinya script dari mas Opik ini bisa menjadi bahan wacana tentang prosedur, terutama bagi BeExceller yang lagi keranjingan VBA. Dari 3 prosedur event milik control option button ini ada proses yang tetap, yaitu menghapus isi combobox bernama Kodepart, kemudian mengisi ulang item combobox dari suatu data range tertentu dengan menggunakan loop. Kali ini kita ndak akan mempermasalahkan bagaimana cara mengisinya (pakai loop atau set row source), tetapi kita akan melihat sedikit tentang cara mengirim dan menerima suatu nilai dari satu variabel ke variabel lain antar prosedur 1. bunyi script untuk proses yang berulang adalah pada bagian : Dim KP1 As Range Dim ws As Worksheet Set ws = Sheets("master") KodePart.Clear For Each KP1 In ws.Range("b4:b11") With Me KodePart.AddItem KP1.Value End With Next KP1 2. satu blok script tersebut diletakkan pada sebuah prosedur baru, misal bernama IsiComboBox() private sub IsiComboBox() Dim KP1 As Range Dim ws As Worksheet Set ws = Sheets("master") KodePart.Clear For Each KP1 In ws.Range("b4:b11") With Me KodePart.AddItem KP1.Value End With Next KP1 end sub 3. dibuang dulu bagian yang tidak pokok, yaitu With Me dan End With menjadi : private sub IsiComboBox() Dim KP1 As Range Dim ws As Worksheet Set ws = Sheets("master") KodePart.Clear For Each KP1 In ws.Range("b4:b11") KodePart.AddItem KP1.Value Next KP1 end sub 4. mendefinisikan object inputan yang dibutuhkan. >> ternyata yang dibutuhkan adalah object range yang akan menjadi isi combobox >> (yang dimasukkan lewat loop), yaitu pada baris berbunyi : For Each KP1 In ws.Range("b4:b11") >> karena object-nya adalah range, dibuat dulu sebuah variabel object range >> sebagai wadah inputan dim rngInput as range >> kemudian object range baru itu menggantikan bagian yang diproses [bagian >> berbunyi : ws.Range("b4:b11")], sehingga berbunyi : For Each KP1 In rngInput >> script secara keseluruhan akan berubah menjadi : private sub IsiComboBox() Dim KP1 As Range Dim ws As Worksheet dim rngInput as range Set ws = Sheets("master") KodePart.Clear For Each KP1 In rngInput KodePart.AddItem KP1.Value Next KP1 end sub 5. buang lagi baris-baris tidak perlu, yaitu yang berkaitan dengan object worksheet, mulai dari deklarasi sampai penggunaannya, yaitu : Dim ws As Worksheet Set ws = Sheets("master") >> maka susunan prosedur akan menjadi : private sub IsiComboBox() Dim KP1 As Range dim rngInput as range KodePart.Clear For Each KP1 In rngInput KodePart.AddItem KP1.Value Next KP1 end sub 6. karena rngInput dibutuhkan oleh proses dan harus diterima dari prosedur lain (dalam hal ini kiriman dari prosedur event setiap option button), maka deklarasi variabel rngInput dipindah ke baris deklarasi prosedur (tidak perlu dim lagi), sehingga baris deklarasi prosedur menjadi : private sub IsiComboBox(rngInput as range) dan baris deklarasi input yang menggunakan dim bisa dihapus. Susunan prosedur akan menjadi : private sub IsiComboBox(rngInput as range) Dim KP1 As Range KodePart.Clear For Each KP1 In rngInput KodePart.AddItem KP1.Value Next KP1 end sub ***** sampai sini, sudah didapat sebuah prosedur untuk mengisi ComboBox bernama KodePart yang harus disediakan data yang harus dimasukkan ke combobox berupa sebuah range yang jelas letaknya. Pada masing-masing prosedur event OptionButton click, yang membutuhkan pengisian combobox, bisa hanya diisi dengan memanggil prosedur bernama IsiComboBox asal bisa menyediakan range sumbernya. Contoh untuk tombol OptionButton1 akan memiliki prosedur event click seperti : Private Sub OptionButton1_Click() 'akan isi combobox, panggil si prosedur IsiComboBox 'dengan data yang akan diisikan ada di sheet bernama master pada range B4:B11 IsiComboBox Sheets("master").Range("b4:b11") End Sub (terapkan juga untuk event tombol lain yang membutuhkan) :) moga-moga bisa menjadi mainan baru dalam ber-VBA bagi BeExceller yang lagi semangat mengeksplorasi VBA. Wassalam, Kid. 2013/5/2 lapendosol opik <[email protected]> > >Dear Daniel, >Coba pake kode berikut, meskipun rada panjang kodenya, mohon master2 yang lain >untuk mengkoreksi/meringkasnya: >Private Sub OptionButton1_Click() >Dim KP1 As Range >Dim ws As Worksheet >Set ws = Sheets("master") >KodePart.Clear >For Each KP1 In ws.Range("b4:b11") >With Me >KodePart.AddItem KP1.Value >End With >Next KP1 >End Sub > >Private Sub OptionButton2_Click() >Dim KP2 As Range >Dim ws As Worksheet >Set ws = Sheets("master") >KodePart.Clear >For Each KP2 In ws.Range("e4:e11") >With Me >KodePart.AddItem KP2.Value >End With >Next KP2 >End Sub > >Private Sub OptionButton3_Click() >Dim KP3 As Range >Dim ws As Worksheet >Set ws = Sheets("master") >KodePart.Clear >For Each KP3 In ws.Range("h4:h11") >With Me >KodePart.AddItem KP3.Value >End With >Next KP3 >End Sub > > > >Trimakasih, >Wassalam, > > > > >________________________________ > From: daniel_aho <[email protected]> >To: [email protected] >Sent: Thursday, May 2, 2013 10:58 AM >Subject: [belajar-excel] Option button macro pada User form untuk menentukan >range combo box > > > > >Dear para master excel, > >Bagaimana code macro untuk Option Button yang dipakai untuk menentukan >range dari combo box, jika pertanyaan saya kurang jelas, berikut saya >lampirkan filenya, > >Mohon pencerahan dari master2 semua. >Terima kasih, > >daniel > > >

