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

 

Kirim email ke