Dalam sebuah userform dapat dipastikan bahwa terdapat beberapa objek (Kontrol) yang berfungsi sesuai dengan fungsinya masing-masing. Misalnya sebuah tombol (CommandButton) berfungsi untuk menyimpan atau mengkonfirmasi sebuah perubahan perintah, atau kolom teks (TextBox) untuk mengetikkan nilai, Tombol Pilihan (OptionButton) untuk memilih kondisi tertentu, dan masih banyak lagi kontrol dengan berbagai fungsi lainnya.

Dalam kondisi tertentu terkadang kita membutuhkan satu object dengan jumlah lebih dari satu, saya akan ambil contoh misalnya kontrol kolom Textbox dalam satu userform biasanya saya membutuhkan lebih dari lima (5) buah textbox dengan satu fungsi yaitu membuat inputan nilai berupa angka saja, perintah kode macro yang digunakan untuk membuat kolom textbox agar hanya bisa diinput nilai angka saja adalah sebagai berikut

Private Sub Textbox_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
Select Case KeyAscii
Case Asc("0") To Asc("9")
Case Else
KeyAscii = 0
End Select
End Sub

Dengan kode macro diatas maka kolom textbox tidak akan bisa diinput dengan huruf (A-Z) atau simbol ( > . , "{ dst ) dan hanya akan menjalankan perintah jika diinput dengan nilai angka (0 - 9). Namun permasalahan yang akan saya angkat bukanlah ini, yang jadi masalah ketika dalam satu userfomr ada 10 atau 20 kolom textbox dengan fungsi sama yaitu membuat inputan nilai berupa angka saja, masa iya saya harus menuliskan syntax diatas sampai 10 atau 20 kali ? "kan ngga banget ya ", naah inilah jalan keluarnya "Bagaimana caranya menuliskan satu kali saja syntax diatas akan tetapi satu syntax tersebut bisa mengontrol 10 atau 20 kolom textbox ??". Jawabnya silahkan ikuti langkah dibawah ini


Saya berasumsi anda sudah mempunyai 10 kolom textbox dalam userform, maka langkah selanjutnya adalah
Insert "Class Module" ingat "Class Module" bukan "Modul"
Masukan atau ketikan baris kode macro dibawah ini kedalam "Class Module"

Public WithEvents TextBox As MSForms.TextBox

Private Sub TextBox_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
Select Case KeyAscii
Case Asc("0") To Asc("9")
Case Else
KeyAscii = 0
End Select
End Sub

Perintah ini hanya contoh saja, silahkan anda ganti dengan perintah yang anda butuhkan, misalnya anda mengganti perintah kolom textbox bernilai desimal atau "Comma [0]" (300.000 , 500.0000 dst), maka kode macro yang anda harus gunakan adalah ini

Public WithEvents TextBox As MSForms.TextBox
Private Sub TextBox_Change()
TextBox = Format(TextBox, "#,##0")
End Sub

Selanjutnya ketikan kode macro dibawah ini kedalam Userform
Dim TextBox() As New Class1
Private Sub UserForm_Initialize()
ReDim Preserve TextBox(10)
For b = 1 To 10
Set TextBox(b - 1).TextBox = Controls("Textbox" & b)
Next
End Sub

Ganti angka 10 sesuai dengan julah kolom Textbox yang ada pada satu userform
Tekan F5 untuk mencobanya, dan Insya Allah kolom textbox yang berjumlah 10 tadi akan patuh dan taat dengan satu perintah

Mengontrol Beberapa Objek dengan Satu Perintah

Untuk pengembangan anda bisa merubah perintah yang ada di"Class Module" sesuai perintah yang anda inginkan, misalnya anda ingin merubah background textbox saat pointer melintas ditextbox , maka kode macronya harus diganti menjadi seperti ini

Private Sub TextBox_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
TextBox.BackColor = &HEEDCB3
End Sub

Tips ini agak membingungkan bagi yang awam, untuk mempermudah pembelajaran anda silahkan anda download saja file sampelnya pada link download dibawah ini, semoga dapat membantu mempermudah pekerjaan anda. Aamiin

Download - Mengontrol Beberapa Objek dengan Satu Perintah
Download - Mengontrol Beberapa Objek dengan Satu Perintah
Download - Mengontrol Beberapa Objek dengan Satu Perintah

Demikianlah kiranya penjelsan tentang teori Mengontrol Beberapa Objek dengan Satu Perintah dalam microsoft excel VBA, semoga bermanfaat bagi kita semua. Ingat share artikel ini ya atau komentarlah jika ada yang ingin ditanyakan, kalau ndak ada yang ingin ditanyakan ya bookmark saja asis10.com ini yang merupakan tempat belajar microsoft excel VBA terbaik. Follow IG admin
No comments