CustomUI : Combobox

Salah satu fitur yang sering digunakan dan sangat berguna dalam meningkatkan fungsionalitas Excel dengan mengunakan Ribbon adalah ComboBox.

Dengan comboBox memungkinkan pengguna untuk membuat antarmuka yang lebih interaktif dan dinamis, memfasilitasi pengelolaan data dengan lebih baik.

ComboBox di Ribbon Excel memberikan keleluasaan kepada pengguna untuk memilih dari daftar opsi yang telah ditentukan, menyederhanakan navigasi dan pengoperasian lembar kerja Excel.

Dalam materi kali ini, saya akan membahas secara mendalam tentang penggunaan ComboBox di Ribbon Excel.

Dalam script yang sederhana sintaksis combobox bisa ditulis seperti berikut ini

 <comboBox id="comboBox" label="Combo Box">
   <item id="item1" label="Item 1" />
   <item id="item2" label="Item 2" />
   <item id="item3" label="Item 3" />
 </comboBox>

Pada combobox juga memiliki Property dan juga Callback yang bisa diguakan. Berikut ini beberapa properti dan Callback yang tedapat pada combobox

Property

enabledberisi “true” | “false”
id id Combobox
idMso Combobox bawaan Office
idQ id Qualifier
image(Image)
imageMso(OfficeImageId)
insertAfterMso 
insertAfterQ 
insertBeforeMso 
insertBeforeQ 
invalidContentOnDrop 
item 
keytip(KeyTip)
label(Label)
maxLength 1 to 1024 maximum length of entry
screentipMenampilkan Screentips
showImageMenampilkan Gambar “true” | “false”
showItemImageMenampilkan Item Image “true” | “false”
showLabelMenampilkan Label “true” | “false”
sizeukuran combobox “normal” atau “large”
sizeStringPajang Area Combobox “AAAAAAAAAAAAAA”
supertip(SuperTip)
tag(Tag)
visibleMenampilkan Combobox “true” | “false”

CallBack

onChangegetItemSupertip
getEnabledgetKeytip
getImagegetLabel
getImageMsogetScreentip
getItemCountgetShowImage
getItemIDgetShowLabel
getItemImagegetSupertip
getItemLabelgetText
getItemScreentipgetVisible

Mengisi Combobox

Untuk mengisi Item kedalam Combobox bisa dengan 2 cara,

  1. Bisa secara langsung item ditambahkan melalui script XML (Hardcode)
  2. Bisa membaca item yang ada di worksheet (Databse)

Mengisi Combobox Langsung

Untuk mengisi combobox secara langsung bisa dengan menambahkan Item kedalam combobox, tambahkan juga item ID dan juga Item Label.

Untuk contoh XML bisa dilihat dibawah ini.

<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui">
<ribbon startFromScratch = "false" >
	<tabs>
		<tab id = "customTab" insertBeforeMso = "TabHome" label= "Custom Combobox" >
			<group id = "Primary_Key" label = "vba.co.id" >
			<comboBox id = "comboBox1" label= "Pilih Bulan" onChange="bulan_OnChange" >					
					<item id = "item01" label = "Januari" />
					<item id = "item02" label = "Februari" />
					<item id = "item03" label = "Maret" />
					<item id = "item04" label = "April" />
					<item id = "item05" label = "Mei" />
					<item id = "item06" label = "Juni" />
					<item id = "item07" label = "Juli" />
					<item id = "item08" label = "Agustus" />
					<item id = "item09" label = "September" />
					<item id = "item10" label = "Oktober" />
					<item id = "item11" label = "November" />
					<item id = "item12" label = "Desember" />
			</comboBox>	
			</group>
		</tab>
	</tabs>
</ribbon>
</customUI>

Dan hasilnya akan terlihat seperti ini

Mengisi Combobox Dari Database

Cara kedua untuk mengiisi item di Combobox melalui data yang berada di Worksheet.

Misalnya data yang akan dimasukan kedalam combobox berada di sheet 1 dari Baris 2 sampai baris 13, seperti yang terlihat pada gambar dibawah ini.

Untuk mengisi Data diatas kedalam Combobox Ribbon, bisa menggunakan sebuah Callback.

Sama seperti cara manual tadi, sebuah combobox memerlukan sebuah item ID dan juga Item Label. Sehingga callback yang digunakan diantaranya adalah GetItemID dan juga GetItemLabel.

Selain 2 Callback tersebut, masih diperlukan 1 callback lagi yang bernama getItemCount. Callback ini untuk menentukan berapa kali ItemID dan juga ItemLabel di Looping.

Contoh scriptnya bisa dibuat seperti dibawah ini

<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui" onLoad="Initialize">
<ribbon startFromScratch = "false" >
	<tabs>
		<tab id = "customTab" insertBeforeMso = "TabHome" label= "Custom Combobox" >
			<group id = "gCombo" label = "vba.co.id" >
			<comboBox id = "comboBox1" label= "Pilih Bulan" onChange="bulan_OnChange" 
                      getItemCount="Combo1_getItemCount"
                      getItemID="Combo1_getItemID"
                      getItemLabel="Combo1_getItemLabel" >					
			</comboBox>	
			</group>
		</tab>
	</tabs>
</ribbon>
</customUI>

Setelah itu didalam modul bisa tambahkan script VBA seperti dibawah ini

Dim myRibbon As IRibbonUI

Sub Initialize(ribbon As IRibbonUI)
    Set myRibbon = ribbon
End Sub

Sub Combo1_getItemCount(control As IRibbonControl, ByRef returnedVal)
    returnedVal = 12
End Sub

Public Sub Combo1_getItemID(control As IRibbonControl, index As Integer, ByRef id)
    id = Sheet1.Cells(index + 2, 1).Value
End Sub

Sub Combo1_getItemLabel(control As IRibbonControl, index As Integer, ByRef returnedVal)
    returnedVal = Sheet1.Cells(index + 2, 2).Value
End Sub

Dan combobx berhasil ditambahkan

Memilih Combobox

Untuk menambahkan Aksi ketika memilik Item didalam combobox, kita bisa mengunakan Callback OnChange.

Buat sebuah procedure sesuai dengan nama yang terdapat pada onChange. Pada contoh diatas, onChange saya berinama bulan_OnChange.

Sehingga scriptnya bisa dibuat seperti ini

Sub bulan_onChange(control As IRibbonControl, text As String)
    MsgBox "Kamu memilih " & text
End Sub

Msgbox ini hanya sebuah contoh, didalam onChange ini bisa diisi dengan aksi apapun sesuai dengan kebutuhan ketika Item berhasil dipilih.

Download File

Leave a Reply

Your email address will not be published. Required fields are marked *

Chat WhatsApp
WhatsApp