METODE
PENGULANGAN
& PELONCATAN (JUMPING)
Ketika anda ingin mengeksekusi satu pernyataan beberapa kali, misalnya
membaca beberapa menggunakan pengulangan. Pengulangan adalah salah satu
struktur yang paling sering digunakan dalam pemprograman. Dalam Excel VBA, anda
dapat mengimplemasikan pengulangan dengan menggunakan pernyataan For/Next, Do
While/Loop, dan While/Wend.
Dalam bab ini, anda akan belajar tentang pengulangan For/Next, Do
While/Loop,Do/Loop While, Whilw/Wend. Selain itu,anda juga akan mempelajari
tentang pernyataan peloncatan (jumping) seperti
Goto,End,Exit,Stop,Gosub/Return,Goto, On Error resume Next, On Error Goto, On
Gosub/Goto.
o
Menggunakan For/Nextpernyataan For/Next
digunakan untuk mengulang satu blok perintah
dalam jumlah tertentu menggunakan bilangan counter yang akan bertambah secara otomatis sebanyak +1
apabila setiap Step tidak ditentukan.
Sintaks
For Counter = awal
TO akhir STEP x
... ‘perintah
NEXT Counter
Penggunaan For/Next
seerhana
Macro berikut akan
menampilkan angka 1-10 secara berurutan dan terbalik dengan menggunakan STEP-1.
Contoh :
Sub
DemoFor1()
Dim a As
Integer, b As Integer
For a =
1 To 10
Debug.Print a; ‘Tampil pada baris sama
Next a
Debug.Print
‘tampil baris kosong
‘menggunakan
STEP
For b =
10 To Step -1
Debug.Print b; ‘Tampil pada baris sama
Next b
End Sub
Hasil :
Penggunaan For/next Bersarang
Pengulangan For/next bersarang bisa sebanyak pernyataan
For/Next yang anda perlukan untuk menjalankan struktur dibawah ini. Macro
berikut akan menampilkan nomor 1-5 dalam lima baris.
Contoh :
Sub
DemoFor2()
‘For
bersarang
Dim a As
Integer, b As Integer
For a =
1 To 5
For b = a To 5
Debug.Print b;
Next b
Debug.Print
Next a
End Sub
Hasil :
Contoh :
Tulislah salah satu macro untuk menjumlahkan x buah
bilangan positif pertama (misalnya, 1 + 2 + 3 + 4 + 5 = 15)
Sub
JmlhBilangan()
Dim i As
Integer, x As Integer, hasil As Integer
hasil =
0
x =
InputBox(“masuk jumlah nilangan: “)
For i =
1 To x
hasil = hasil + 1
If (i
<> x) Then
Debug.Print i & “ + “;
Else
Debug.print i & “ = “;
End If
Next i
Debug.Print
hasil
End Sub
Hasil :
o
Menggunakan Di Whle/Loop
Pernyataan
DoWhile/Loop digunakan untuk pengulangan yang akan dilakukan selama kondisinya
terpenuhi. Inisialisasi nilai counter harus dilakukan terlebih dahulu sebelum
struktur pengulangan dan interasi ditulis dalam blok didepan perintah loop.
Sintaks
inisialisasi
Do While (kondisi)
...’statemen
Interasi
Loop
Contoh :
Macro berikut menampilkan angka 1 sampai 10 menggunakan
Do While/Loop.
Sub DemoDoWhile()
Dim a As Integer
a = 1 ‘inisialisasi
Do While (a <=10)
Debug.print a;
a = a + 1 ‘iterasi
Loop
End Sub
Hasil :
Contoh :
Tulisan satu macro untuk menghitung nilai faktorial dari
suatu bilangan (misalnya,faktorial 3, yaitu 3!= 3 x 2 x 1 =6).
Sub
HitungFaktorial()
Dim bilangan As
Integer, hasil As Integer, i As Integer
Bilangan =
InputBox(“Masuk bilangan ingin: “)
hasil = 1: i =
bilangan
Debug.Print
bilangan & “ = “:
Do While (i >=
1)
Debug.Print i;
If (i <> 1)
Then
Debug.Print “ x “;
Else
Debug.Print “ = “;
End If
Hasil = hasil * i:
i = i – 1
Loop
Debug.Print hasil
End Sub
Hasil :
Contoh :
Tulisakan satu
macro untuk menhitung jumlah nilai faktorial dari jumlah bilangan tertentu
(misalnya, 1! + 2! + 3! = 9).
Sub
JmlhFactorial()
Dim a,
b, c, x, fact As Integer
a = 0: b
= 0 c = 1: fact = 1
x =
InputBox(“masuk jumlah utk hitung: “)
For a =
1 To x
fact = 1: c = a
Do While (c >= 1)
fact = fact * c: c = c – 1
Loop
b = b + fact
Next a
Debug.Print
“Jumlah Factorial “ & (a – 1) & “! = “ & b
End Sub
Hasil :
o
Menggunakan Do/Loop While
Pengulangan Do/Loop While mempunyai bentuk yang
sama sengan Do While/Loop namun perbedaanya dengan Do While/Loop adalah
pengulangan ini dijalankan minimal satu kali karena evaluasi kondisi tidak
dilakukan pada awal pengulangan tetapi baru dilakukan pada akhir pengulangan
tersebut.
Sintaks
inisialisai
Do
...’Statemen
iterasi
loop
While (kondisi)
Contoh :
macro berikut menampilkan angka 1 sampai 10 dengan
menggunakan Do/Loop While.
Sub
DemoDoLoop()
Dim a As
Integer
a = 1
‘inisialisasi
Do
Debug.Print a;
a = a + 1 ‘iterasi
loop
While (a <= 10)
End Sub
Hasil :
Perbandingan Do While/loop & Do/Loop While
Pengulangan Do While/Loop tidak dijalankan
karena belum dapat masuk ke dalam struktur pengulangan tersebut (kondisi yang
dievaluasi menghasilkan nilai False) sementara pengulangan Do/Loop While akan
dijalankan minimal satu kali karena perintah tersebut dijalankan terlebih
dahulu sebelum kondisinya dievaluasi.
Sub DemoPerbandinganDoWhileDoLoop()
Dim a As integer
‘Contoh Do While/Loop
a = 6
Do While (a < 5)
Debug.Print “Do While..Loop – “
& a
a = a + 1
Loop
‘Contoh Do/Loop While
a = 6
Do
Debug.print “Do..Loop While – “
& a
a = a + 1
Loop While (a < 5)
End Sub
Hasil :
o
Menggunakan While/Wend
Pengulangan While/Wend mempunyai bentuk yang sama dengan
Do While/Loop yaitu pengulangan yang akan dilakukan selama kondisinya
terpenuhi. Inisialisai nilai counter dilakukan sebelum struktur pengulangan dan
iterasi ditulis dalam blok di depan perintah Wend.
Sintaks
inisialisai
While
(konisi)
...’statemen
interasi
Wend
Contoh :
Macro berikut menampilkan angka 1 sampai 10
dengan menggunakan While/Wend.
Sub
DemoWhileWend1()
Dim a As
Integer
a = 1
‘inisialisasi
While a
<= 10
Debug.Print
a;
a = a + 1 ‘iterasi
Wend
End Sub
Hasil :
Contoh :
Macro berikut akan terus berulang kecuali user
input pada pesan “ingin coba lag (Y/N)”bukan lahi “Y” sehingga kondisi yang
evaluasi akan menjadi FALSE karen tidak lagi memenuhi syarat, yaitu Jwb=”Y”
atau “y”.
Sub DemoWhileWend2()
Dim a As Integer, Jwb As String * 1
a = 1: Jwb = “Y”
While (Jwb = “Y” Or Jwb = “y”)
Debug.Print “Loop ke- “ & a
a = a + 1
Jwb = InputBox(“Ingin coba lagi (Y/N)”)
Wend
End Sub
Hasil :
Contoh :
Macro berikut menampilkan anga 1 dampai 10 dengan
menggunakan variabel. Status yang diberikan nilai True atau False tergantung
kondisi yang terkait.
Sub
DeoWhileWend3()
Dim
status As Boolean, a As Integer
Status =
True: a = 1
While
(status = True)
a = a +
1
If a
> 10 Then
status = False
End If
Wend
End Sub
o
Menggunakan End
Pernyataan End digunakanuntuk memaksa kontrol program
berhenti dari satu blok program.
Pernyataan
|
Keterangan
|
End
|
Mengakhiri jalannya program, tutup semua file yang buka
dan hapus seluruh isi variabel.
|
End Function
|
Mengakgiripernyataan Function
|
End If
|
Mengakhiri blok pernyataan Then..Else
|
End Select
|
Mengakhiri blok pernyataan Select..Case
|
End Property
|
Mengakhiri properti Let, Get & Set Procedure
|
End Type
|
Mengakhiri pernyataan Type pada pernyataan tipe data
buatan.
|
End With
|
Mengakhiri pernyataan with
|
End Sub
|
Mengakkhiri pernyataan Sub
|
o
Menggunakan Exit
Pernyataan Exit digunakan untuk keluar dari
satu prosedur atau satu blok program tanpa harus menunggu sampai akhir periode
iterasi. Hal ini dpat mempercepat prosedur anda jika ada berbagai tes dalam satu
pengulangan yang menghasilkan nilai tidak terduga dan bertindak sebagai “catch”
(error handier).
Pernyataan
|
Keterangan
|
Exit For
|
Keluar dari blok program for..Next
|
Exit Do
|
Keluar dari blok program Do While..Loop
|
Exit Sub
|
Keluar dari badan prosedur Sub yang sedang tampil
|
Exit Function
|
Keluar dari badan fungsi yang dipanggil
|
Exit Property
|
Keluar dari badan prosedur prperty yang sedang tampil.
|
Contoh ;
Macro berikut tidak akan menampilkan angka lebih dari 6
karena pernyataan Exit memaksa penglagan For/Next untuk keluar ketika nilai a
lebih dari 6.
Sub
DemoExit()
Dim a As
Integer
For a =
1 To 10
Debug.Print
a;
If a
> 5 Then
Exit For ‘keluar dari for
End If
Next a
End Sub
Hasil :
o
Menggunakan Stop
Pernyataan stop digunakan untuk menunda (menghentikan
sementara) proses satu program, namun tidak akan menutup file yang terbuka atau menghapus nilai dari variabel seperti
pernyataan End.
Contoh :
Macro berikut akan menampilkan variabel a pada jendela
Immediate. ‘setiap kali nilai variabel a ditampilkan, program tersebut akanb
berhenti sementara. Untuk melanjutkan, pilih menu Run > continue atau takn
F5.
Sub DemoStop()
Dim a As Integer
For a = 1 To 10
Debug.print a;
Stop
Next a
End Sub
|
|
o
Menggunakan GoSub/return
Pernyataan GoSub/Return merupakan pencabangan
tanpa syarat ke suatu sub routine yang ditandai dengan baris label/nomor.
Setelah pidah ke sub routine, kontrol akan kembali ke baris di bawah
pernyataan GoSub.
Sintaks
GoSub (label)
...’statemen
Label:
...’statemen
Return
Contoh :
Macro berikut mengitung jumlah dua variabel
menggunakan pernyataan GoSub/Return.
Sub DemoGoSub()
Dim a As Integer,
b As Integer, c As Integer
a = 3: b = 2
Debug.Print “Nilai
A: “ & a
Debug.Print “Nilai
B: “ & b
GoSub Hitung
Debug.Print “Nilai
C: “ & c
Exit Sub
Hitung: c = 1 + b
Return ‘kembali ke
baris sesudah GoSub
End Sub
Hasil :
o
Mengunakan GoTo
Pernyataan GoTo merupakan percabangan tanpa
syarat ke suatu baris label/nomor dalam satu prosedur. Setelah pindah ke label
tersebut, kontrol tidak kembali ke baris bawah GoTo tetapi akan lanjut ke baris
perintah berikut.
Sintaks
GoTo
(label)
...’statemen
Label:
Statemen
Contoh :
Macro berikut akan menghitung jumlah dua variabel dengan
menggunakan peloncatan (jumping) GoTo.
Sub DemoGoto()
Dim Number,
MyString
Number =
InputBox(“Masuk nomor (1/2)”)
‘ Evaluasi nomor
dan loncat6 ke label yang terkait
If Number = 1 Then
GoTo Linel Else GoTo Line2
Line1 :
MyString = “Nomor
= 1”
GoTo LastLine ‘ loncat ke label LastLine
Line2:
MyString = “Nomor
= 2 (atau lain-lain)”
LastLine:
Debug.Print
MysString
End Sub
o
Menggunakan On Error resume Next
Ketika terjadi error dalam program, pernyataan
On Error Resume next akan ditulis dalam macro, selanjutnya perintah program
akan tetap dilanjutkan ke perintah dibawah perintah yang salah.
Contoh :
Tanpa On error Resume Next, perintah
Debug.Print akan menampilkan pesan “Type Mismatch” dan berhenti karena tipe
variabel a dan tipe variabel b tidak sama.
Sub
DemoOnErrorResumeNext1()
Dim a,
b, c As Integer
a = 1: b
= “Satu”
c = a +
b
Debug.Print
“Nilai a + b = “ & c
Debug.Print
“Selesai””
End Sub
Hasil :
Contoh ;
Dengan On Error resume nect, perintah Debug.Print tidak
menampilkan pesan “Type Mismatch” dan program akan tetap dilanjutkan.
Sub
DemoOnResumeExit1()
On Error Resume
Next
Dim a, b, c As
Integer
a = 1: b = “Satu””
c = a + b
Debug.Print “Nilai
a + b = “ & c
Debug.Print
“Selesai””
End Sub
Hasil :
o
Menggunakan On Error Goto (Label)
Percabangan terjadi ketika ada error dalam
program, dimana sistem akan melanjutkan ke label yang ditentukan. Letak baris/label
harus berada dalam prosedur sama.
Contoh :
Dengan On Error Goto, macro tersebut akan
langsung menampilkan pesan “Type Mismatch” dan keluar dari program dengan
menggunakan satu catch (error handler).
Sub
DemoOnErrorGoto()
On Error
GoTo errorHandler
Dim a,
b, c
a = 1: b
= “Satu”
c = a +
b
Debug.Print
“Nilai a + b = “ & c
Exit Sub
Errorhandler:
MsgBox
“Salah – Type Mismatch”
Resume
Next
End Sub
Hasil :
o
Menggunakan On (Kondisi) GoSub/GoTo
Pernyataan On (kondisi) Gosub/Goto mirip dengan
pernyataan Select..case dimana perintah program dapat bercabang ke beberapa
kemungkinan baris/label yang ditentukan.
On (kondisi) Gosub (baris/label)
On (kondisi) Goto (baris/label)
Contoh :
Macro tersebut menampilkan jenis kelamin
berdasarkan nilai yang dimasukkan pada variabel jenis dengan menggunakan
pernyataan On (konsisi) GoSub.
Sub DemoOnGoSub()
Dim Jenis, Kelamin
As String
Jenis =
InputBox("Masuk jenis (1/2): ")
On Jenis GoSub
Proses1, Proses2
Debug.Print
"Nilai Jenis: " & Jenis
Debug.Print
"Jenis Kelamin: " & Kelamin
Exit Sub
Proses1:
Kelamin =
"Pria"
Return
Proses2:
Kelamin =
"Wanita"
Return
End Sub
Hasil :

















Nice
ReplyDeletesalam kenal dari ezzyh
salam kenal kak ezzyh
Delete