Pada contoh postingan sebelumnya yaitu Cara Menggunakan Class Module untuk Sejumlah TextBox pada UserForm Macro VBA Excel, Anda membuat suatu class dari 12 TextBox yang mana setiap TextBox mewakili nama-nama bulan dalam setahun.
Apa yang akan Anda lakukan jika jumlah TextBox tidak diketahui?
Bagaimana jika dilakukan penambahan atau pengurangan sejumlah TextBox dari UserForm, sedangkan Anda tidak mau terus menerus mengubah kode setiap kali jumlah TextBox mengalami perubahan?
Maka solusi sebagai jawaban pertanyaan-pertanyaan di atas adalah membuat kumpulan TextBox dengan cara melakukan loop kepada semua kendali yang ada pada UserForm, kemudian ketika TextBox ditemukan loop, maka TextBox akan ditambahkan ke dalam kumpulan secara otomatis, yang mana kemudian beralih tempat ke dalam objek class.
Jadi kode event yang ditempatkan pada class module tidak mengalami perubahan apapun, maka yang Anda perlu sesuaikan adalah kode pada module UserForm.
Gambar di bawah ini memperagakan contoh penambahan dan pengurangan TextBox di dalam UserForm.
Pada UserForm Anda masukkan garis kode berikut tanpa perlu lagi menentukan jumlah nama TextBox:
Dim gt() As New Class1
Berikutnya, pada kode berikut event Initialize UserForm mengemas keseluruhan TextBox ke dalam sebuah paket array menggunakan kata kunci ReDim Preserve.
Metode ini tidak lagi tergantung dari seberapa banyak TextBox yang ada pada UserForm, melainkan metode ini mengumpulkan keseluruhannya ke dalam sebuah objek gt:
Dim ktc As Integer, ct As Control
ktc = 0
For Each ct In Controls
If TypeName(ct) = "TextBox" Then
ktc = ktc + 1
ReDim Preserve gt(1 To ktc)
Set gt(ktc).gt = ct
End If
Next ct
End Sub
Itulah pembahasan tentang cara membuat kumpulan TextBox dengan kode otomatis.
Selamat mencoba dan semoga bermanfaat.
0 Comments