Kali ini kami akan berbagi tip melakukan bypass pada error melalui contoh macro yang telah dibahas sebelumnya pada postingan Cara Menggunakan ErrorHandler dalam Macro VBA Excel yaitu contoh macro membuat sheet baru.
Jika sebelumnya dibahas tentang penggunaan statement GoTo, kali ini Anda menggunakan statement On Error Resume Next.
Penggunaan ErrorHandler seringkali dihindari karena statement GoTo ErrorHandler membuat macro menjadi lebih rumit untuk diikuti.
Berbeda halnya dengan bypass error dengan statement On Error Resume Next, yang mana Anda bisa menggunakan susunan If jika ingin menghasilkan salah satu dari dua kemungkinan atau Anda juga bisa menguji-coba kondisi dari objek Error.
Dalam membuat suatu sheet baru, Anda mungkin ingin mempertimbangkan beberapa hal sebagai berikut:
- Nama Sheet ganda.
- Panjang karakter nama Sheet misalnya maksimum 7 karakter.
- Aksara tertentu dan kata yang terlarang sebagai nama Sheet.
Kode macro berikut dapat menghadapi berbagai kemungkinan tersebut untuk dapat dipertimbangkan, jika semua kondisinya terpenuhi maka sheet baru akan dibuat, namun jika kondisinya tidak terpenuhi maka sheet baru tersebut batal dibuat dengan diinformasikan melalui kotak pesan yang memberitahukan alasan pembatalan.
Silakan Anda ikuti langkah demi langkah berikut:
1. Tekan Alt+F11 untuk membuka VBE.
2. Buat module melalui menu Insert > Module.
3. Buat garis kode sebagai judul macro:
Sub BuatSheetBaru()
4. Tepat di bawah garis kode di atas, tetapkan variabel jenis data String untuk memberi nama dan menguji-coba sheet:
Dim sh As String, st As String
5. Gunakan kotak input untuk menanyakan pengguna untuk memberikan nama pada sheet baru:
InputBox("Silakan masukkan nama sheet:", _
"Membuat worksheet baru.")
6. Keluar dari macro jika tidak ada yang dimasukkan ke dalam kotak input atau tombol Cancel dipilih:
If sh = "" Then Exit Sub
7. Bypass error jika nama sheet baru ternyata sudah ada dalam workbook.
st = Worksheets(sh).Name
If Err.Number = 0 Then
MsgBox _
"Sheet dengan nama " & sh & " sudah digunakan.", _
vbInformation, _
"Sheet baru batal dibuat."
Exit Sub
End If
8. Jika panjang karakter nama sheet baru melebihi 7 karakter, maka percobaan ditolak:
MsgBox _
"Nama Sheet tidak boleh lebih dari 7 karakter." & vbCrLf & _
"Anda memasukkan " & sh & ", yang berjumlah " & vbCrLf & _
Len(sh) & " karakter.", vbInformation, _
"Gunakan nama singkat kurang dari 7 karakter."
Exit Sub
End If
9. Nama sheet baru tidak boleh berisi aksara tertentu, periksa jangan sampai ada satu pun aksara yang dimasukkan ke dalam isian:
AksaraIlegal(1) = "!"
AksaraIlegal(2) = "@"
AksaraIlegal(3) = "#"
AksaraIlegal(4) = "$"
AksaraIlegal(5) = "%"
AksaraIlegal(6) = "^"
AksaraIlegal(7) = "&"
10. Loop ke setiap aksara pada nama sheet yang diajukan:
If InStr(sh, (AksaraIlegal(x))) > 0 Then
MsgBox _
"Anda memasukkan aksara yang tidak diizinkan untuk" & vbCrLf & _
"memberi nama sheet. Silakan masukkan nama sheet " & vbCrLf & _
"tanpa menambahkan aksara ''" & AksaraIlegal(x) & "'' lagi.", _
vbCritical, _
"Sheet dibatalkan."
Exit Sub
End If
Next x
11. Kata contohnya "riwayat" tidak diizinkan digunakan menjadi nama sheet:
MsgBox "Sheet tidak boleh diberi nama " & sh & vbCrLf & _
"karena nama tersebut dilarang digunakan.", vbInformation, _
"Riwayat adalah kata terlarang."
Exit Sub
End If
12. Beritahukan pengguna bahwa sheet baru telah berhasil dibuat:
MsgBox "Sheet baru dengan nama " & sh & " telah berhasil dibuat!", _
vbInformation, _
"Selamat!"
13. Kode lengkapnya adalah sebagai berikut:
Dim sh As String, st As String
sh = _
InputBox("Silakan masukkan nama sheet:", _
"Membuat worksheet baru.")
If sh = "" Then Exit Sub
On Error Resume Next
st = Worksheets(sh).Name
If Err.Number = 0 Then
MsgBox _
"Sheet dengan nama " & sh & " sudah digunakan.", _
vbInformation, _
"Sheet baru batal dibuat."
Exit Sub
End If
If Len(sh) > 7 Then
MsgBox _
"Nama Sheet tidak boleh lebih dari 7 karakter." & vbCrLf & _
"Anda memasukkan " & sh & ", yang berjumlah " & vbCrLf & _
Len(sh) & " karakter.", vbInformation, _
"Gunakan nama singkat kurang dari 7 karakter."
Exit Sub
End If
Dim AksaraIlegal(1 To 7) As String, x As Integer
AksaraIlegal(1) = "!"
AksaraIlegal(2) = "@"
AksaraIlegal(3) = "#"
AksaraIlegal(4) = "$"
AksaraIlegal(5) = "%"
AksaraIlegal(6) = "^"
AksaraIlegal(7) = "&"
For x = 1 To 7
If InStr(sh, (AksaraIlegal(x))) > 0 Then
MsgBox _
"Anda memasukkan aksara yang tidak diizinkan untuk" & vbCrLf & _
"memberi nama sheet. Silakan masukkan nama sheet " & vbCrLf & _
"tanpa menambahkan aksara ''" & AksaraIlegal(x) & "'' lagi.", _
vbCritical, _
"Sheet dibatalkan."
Exit Sub
End If
Next x
If UCase(sh) = "RIWAYAT" Then
MsgBox "Sheet tidak boleh diberi nama " & sh & vbCrLf & _
"karena nama tersebut dilarang digunakan.", vbInformation, _
"Riwayat adalah kata terlarang."
Exit Sub
End If
Worksheets.Add.Name = sh
MsgBox "Sheet baru dengan nama " & sh & " telah berhasil dibuat!", _
vbInformation, _
"Selamat!"
End Sub
14. Buka kembali worksheet dengan menekan Alt+Q.
15. Lakukan uji-coba sebagaimana beberapa poin yang Anda monitor di atas. Misal salah satunya coba Anda buat sheet baru dengan kata "Riwayat".
Demikian penjelasan tentang cara bypass error dalam Macro VBA Excel.
Selamat mempraktikkan dan semoga bermanfaat.
0 Comments