Dari beberapa contoh Class Module yang pernah diulas sebelumnya yaitu TextBox dan kumpulannya, bisa disimpulkan bahwa UserForm memiliki latar belakang untuk objek-objek pada suatu class module.
Anda juga bisa membuat suatu class dari objek-objek yang tertempel pada worksheet, contohnya alat kontrol ActiveX, grafik, dan pivot table.
Seperti pada contoh, Anda membuat sejumlah tombol CommandButtons yang tidak diketahui akan dibuat berapa tombol tersebut pada Sheet1 dan anda tentunya ingin membuat suatu class module untuk menentukan tombol manakah yang telah diklik tanpa perlu lagi memprogram event Click pada setiap CommandButton tersebut seperti yang dapat dilihat hasil akhirnya ditunjukkan pada gambar di atas.
Kode di bawah ini adalah class module dengan nama Class1 yang akan mempertunjukkan bagaimana cara menghasilkan nama tombol, caption, dan alamat sel dimana sudut kiri atas objek tombol tersebut berada:
Private Sub a_Click()
MsgBox _
"Hai, aku adalah tombol ''" & _
a.Name & "''." & vbCrLf & _
"Captionku adalah ''" & _
a.Caption & "''." & vbCrLf & _
"Sudut kiri atasku berada di sel " & _
a.TopLeftCell.Address(0, 0) & ".", _
64, "OK, berikut info tombol ini:"
End Sub
Anda juga bisa menjalankan event lainnya seperti kode di bawah ini pada class module yang sama, yang Anda perlukan adalah objek yang mendukung event dan class yang sama (dalam contoh kode di atas nama eventnya adalah a), event MouseMove membantu Anda mengenali tombol manakah yang Anda dekatkan dengan kursor mouse dan seketika tombol berganti warna menjadi warna hijau, sedangkan tombol-tombol lainnya berwarna jingga.
Adapun warna-warna tersebut dihasilkan dari kode hex pada tombol dengan properti BackColor sebagai acuan warna.
Silakan Anda tambahkan kode berikut tepat di bawah kode sebelumnya pada class module Class1:
ByVal p As Integer, ByVal X As Single, ByVal Y As Single)
Dim tom As Object
For Each tom In ActiveSheet.OLEObjects
If TypeName(tom.Object) = "CommandButton" Then _
tom.Object.BackColor = &H99FF&
Next tom
a.BackColor = &H99FFCC
End Sub
Langkah berikutnya adalah menempatkan statement berikut di atas module ThisWorkbook:
Dim Handler() As New Class1
Kemudian sebagai langkah terakhir penyusunan kode, Anda gunakan event Open untuk mengumpulkan tombol yang ada di dalam Sheet1.
Dim jml As Integer, tmb As OLEObject
jml = 0
With ThisWorkbook
For Each tmb In .Worksheets("Sheet1").OLEObjects
If TypeName(tmb.Object) = "CommandButton" Then
jml = jml + 1
ReDim Preserve Handler(1 To jml)
Set Handler(jml).a _
= tmb.Object
End If
Next tmb
End With
End Sub
Setelah kode selesai disusun seluruhnya, silakan Anda coba menambahkan lagi tombol ActiveX yang baru pada Sheet1.
Demikian pembahasan tentang cara menggunakan Class Module untuk sejumlah tombol ActiveX Macro VBA Excel.
Selamat mencoba dan semoga bermanfaat.
0 Comments