Ada pertanyaan? Masuk ke Forum atau klik di sini..!

Salam untuk semua..

Buat yang baru mulai belajar VBA, pasti sering mendengar istilah Procedure. Dan kenyataannya, procedure itu emang ada dimana-mana di dalam VBA.

 

Emangnya, apa sih Procedure itu?

Oke, kita mulai dengan tahu dulu, baru tempe eh, maksudku,  kita mulai dari tahu dulu apa itu Procedure.

 

Pake analogi aja yah, biar gampang. Bayangin sebuah Pabrik Motor. Mereknya terserah, mo honda, yamaha, toyota eh gak ada dink merek toyota. Pokoknya mereknya apa aja.

Sebuah pabrik motor, gak semua bagian motor itu dibuat sendiri dipabrik tersebut. Sering kali, beberapa bagiannya di-sub kan ke pabrik lain. Misalkan bagian ban. Ban tidak dibuat dipabrik motor, tapi dibuat oleh pabrik Ban. Bisa juga bagian softbraker. Bagian ini juga dikerjakan oleh pabrik lainnya lagi.

Jadi, ternyata sebuah motor yang kita beli itu, gak semua bagiannya di buat di pabrik pembuat motor. Tapi banyak yang di-sub kan ke pabrik lainnya.

Nah, Procedure itu persis seperti pabrik yang ngerjain Ban, pabrik yang ngerjain softbraker dan seterusnya.

Jadi, sebuah procedure akan menunggu perintah dan juga inputan dari procedure lain, kemudian mengerjakan perintah tersebut sesuai dengan inputan yang diberikan. Dan kalau sudah selesai dikerjakan, hasilnya dikembalikan ke procedure yang memerintahkannya.

 

Setidaknya, ada dua jenis Procedure yaitu:

1. Sub Procedure

2. Function Procedure

(Sebenernya ada 1 lagi jenis procedure yaitu Properties Procedure. Tapi yang ini ntar-ntar aja deh..)

 

Apa bedanya?

Tenang, ini juga mau dijelasin.

 

Sub Procedure

Sub procedure itu berisi baris program untuk mengolah sesuatu. Bila baris program selesai dilakukan, maka procedure ini akan berhenti dan menutup. Dan Program dikembalikan ke program utama.

Oke, sekarang kita pakai analogi pabrik tempe yah. Kan sering tuh makan tempe. Proses pembuatan tempe itu disederhanakan sebagai berikut:

1. Mulai pengerjaan

2. Kedelai dicuci bersih.

3. Kedelai dikupas kulitnya.

4. Kedelai direbus.

5. Kedelai diragi

6. Kedelai dibungkus.

7. Selesai

 

Jadi...

 

No. 1, program utama dimulai.

Saat sampai ke No.2, program utama memanggil sub procedure: pencucian kedelai. Jika kedelai sudah bersih, dikembalikan ke program utama.

Kemudian, saat sampai ke No.3, program utama memanggil sub procedure: pengupasan kulit. Jika kulit sudah terkelupas, dikembalikan ke program utama. Dan seterusnya sampai selesai.

Begitulah cara kerja Sub Procedure.

 

Function Procedure

Jika sub procedure cuma menjalankan program, maka function procedure melakukan kalkulasi dan mengeluarkan hasil untuk dipakai program utama.

Kita masuk lagi ke analogi pembuatan tempe. Ternyata, agar tempe dapat ter-ragi dengan sukses, maka harus menghitung besarnya kantong, banyaknya kedelai, dan banyaknya ragi. Jadi, kalo ada 10 kg kedelai, trus kantong plastiknya 1/4 kg-an, berapa jumlah ragi yang dibutuhkan?

Nah, agar pembuatan tempe-nya sukses, maka pada proses di atas, harus ditambahkan sebuah function procedure. Jadinya adalah sebagai berikut:

1. Mulai pengerjaan

2. Kedelai dicuci bersih.

3. Kedelai dikupas kulitnya.

4. Kedelai direbus.

5. Hitung jumlah ragi yang dibutuhkan umtuk 10 kg kedelai dan plastik 1/4 kg-an.

6. Kedelai diragi

7. Kedelai dibungkus.

8. Selesai

 

No.1 sampai No.4 masih sama seperti sebelumnya. Tapi setelah sub procedure: perebusan selesai, dan program dikembalikan ke program utama, maka program utama akan memanggil function procedure: penghitungan ragi. Inputan-nya adalah: kedelai 10 kg dan plastiknya 1/4 kg-an.

Function procedure kemudian akan menghitung dan memberikan hasil ke program utama. Misalkan hasilnya adalah 10 gram ragi. Hasil dari function ini bisa digunakan oleh procedure-procedure lainnya.

Kemudian, program utama akan memanggil sub procedure berikutnya hingga selesai.

 

Wah, tambah pusing..! Ada contoh pogramnya gak?

Oke, sekarang kita coba buat sebuah sub procedure ya. Semakin banyak latihan, semakin cepet pinter kan..

 

KE procedure 01

 

Pada gambar di atas, kita buat 2 sub procedure. (programutama dan testsubproc).

Sebenernya, dua-duanya adalah sub procedure, tapi untuk mempermudah gambaran, kita anggap yang pertama adalah program utama dan yang kedua sub procedure. Sesungguhnya, program utama itu ya Excel itu sendiri.

Oke pertama, kita buat program utama (anggap aja ini program utama ya, meski sebenernya sama-sama sub procedure).

Didalam program utama, kita memanggil sub procedure: testsubproc. Cara manggilnya gampang, cukup tulis namanya saja.

 

Sub programutama()

'didalam program utama, kita akan panggil sub procedure testsubproc

testsubproc

End Sub

 

Sekedar info, tanda petik satu ('), menunjukkan kalimat setelah tanda ini adalah sekedar keterangan saja. Dan VBA tidak akan memprosesnya sebagai baris program.

 

Nah, selenjutnya kita buat sub procedure testsubproc.

 

Sub testsubproc()

'sub procedure ini berisi sebuah perintah untuk menampikkan pesan.

MsgBox "halo..! saya lagi belajar VBA"

End Sub

 

Sekedar info lagi yah, perintah MsgBox sebenarnya adalah sebuah function loh. Tapi ini internal function, atau function yang udah built-in (dibuat) oleh Excel. Kita tinggal manggil aja.

 

Sekarang kita coba RUN program utama kita. Letakkan cursor pada programutama dan klik RUN seperti pada gambar dibawah.

 

KE procedure 02

 

Hasilnya adalah, akan muncul pesan seperti pada gambar berikut:

 

KE procedure 03

 

Sub Procedure kita SUKSES!!

 

Trus, gimana cara bikin Function Procedure?

Oke, sekarang kita coba buat sebuah function. Seperti pada sub procedure, kita akan pura-pura memiliki program utama (yang sebenernya adalah sebuah sub procedure juga. Ingat, program utama sesungguhnya adalah program Excel itu sendiri).

 

Biar gampang, kita tetap pakai code sebelumnya dan cukup kita tambah memanggil function procedure. Oke..

 

Function procedure kita adalah Penjumlahan. Berikut code function-nya:

 

Function penjumlahan(input1 As Integer, input2 As Integer) As Integer

'baris program di function untuk menjumlahkan dua variabel

penjumlahan = input1 + input2

End Function

 

Apa yang dilakukan code diatas adalah:

 

Function penjumlahan meminta inputan yang nantinya akan dimasukkan ke dalam variable input1 dan input2. Kedua variabel memiliki datatype integer. Hasil dari function ini tersimpan dalam variable penjumlahan dengan datatype yang juga integer. Selanjutnya, didalam function, kita tulis sebuah formula perhitungan dari variabel-variabel tadi (penjumlahan = input1 + input2).

 

Jadi, jika kita memanggil function penjumlahan dengan memberikan data inputan yang diminta, function akan memasukkan ke dalam variabel dan menghitungnya sesuai formula dan mengeluarkan hasilnya untuk pemanggil (program utama misalnya).

 

Oke, function sudah beres, sekarang waktunya memanggilnya di program utama. Ingat, kita masih memakai program utama sebelumnya dengan menambahkan pemanggilan function.

 

Sub programutama()

'didalam program utama, kita akan panggil sub procedure testsubproc

·· · testsubproc

'memanggil function procedure penjumlahan dan menampilkan hasilnya ke message box.

'input penjumlahannya adalah 2 dan 5. Hasilnya seharusnya 7.

MsgBox "ini hasil function : " & penjumlahan(2, 5)

End Sub

 

Pada program utama, function dipanggil bersamaan dengan perintah memunculkan pesan (perintah MsgBox). Data yang kita input adalah 2 dan 5.

 

KE procedure 04

 

Nah, jika kita RUN program utama kita (ingat, letakkan cursor pada program utama), maka akan muncul pesan seperti gambar dibawah. Hasil dari inputan 2 dan 5 adalah 7!

 

KE procedure 05

 

SUKSES LAGI!!!

 

Well.. Gimana.. Udah tahu apa itu procedure?

Kalo masih bingung, jangan sungkan untuk nanya ya.. Ditunggu..

See ya..



0
By: Guest On: Thursday, 26 May 2011

dgn VBA macro Excel....
bs tolong beri contoh dalam pembuatan mengubah warna shape dan cara memunculkannya...

tolong ya krn saya baru belajar nih...

0
By: Guest On: Tuesday, 05 July 2011

punya sintak VB untuk menghitung jumlah file dalam satu folder/sub folder?

saya coba cari belum nemu nih......

thanks for your help

0
By: ngarasan On: Tuesday, 05 July 2011

Hi Tirtha,

Jika ada pertanyaan, silahkan disampaikan melalui "Question & Request"..

Kami sudah jawab pertanyaannya.. Silahkan lihat di: "Question & Request"

Atau klik link berikut:

http://www.klinikexcel.com/questions-a-request/article/3-macro-vba/49-sintak-vba-menghitung-jumlah-file-dalam-folder.html

Terima kasih telah mampir..

salam

0
By: onelgeo On: Thursday, 08 March 2012

salam kenal mas,saya bru bergabung nih..saya senang ada forum ini bisa membantu saya yg masih pemula..mas saya mwu tanya..apakah perlu blok pertama untuk kasus di atas sub programutama dituliskan?bisakah langsung ke blok sub testsubproc? dan apakah memang memanggil fungsi di msgbox harus menggunakan "&"?terima kasih

0
By: ngarasan On: Tuesday, 20 March 2012

Halo Mas Onelgeo,

Sebenarnya, bisa dikatakan tak ada bedanya antara sub procedure: "programutama" dengan "testsubproc".

Keduanya sama-sama SUB PROCEDURE. Jadi bisa dipanggil dengan cara yang sama.

Saya bedakan, hanya untuk contoh aja bahwa, sebuah Sub Procedure, dapat dipanggil dari Sub Procedure lainnya.

Untuk menggunakan MsgBox() tidak wajib membutuhkan tanda "&".

Tanda "&" digunakan jika parameter Message lebih dari satu. Misal dua variabel atau dua String

Misalkan code: MsgBox Variabel1 Variabel2

Ini akan error.. 

Seharusnya: MsgBox Variabel1 & Variabel2

Baru deh GAK error..

Demikian, semoga membantu..

0
By: Guest On: Friday, 06 April 2012

Bos.. bukunya ada brapa level.. ana minat tp skaligus sampai level akhir.... gimana belinya..

0
By: Guest On: Monday, 14 May 2012

Halo Mas.

Saya mo nanya ..... saya punya program untuk split data dari satu sheet ke beberapa sheet dengan parameter data yang ada di kolom A .... tapi saya belum ketemu bagaimana cara membuat total tiap-tiap kolom pada setiap sheet secara otomatis.

Contoh Data Saya

Col A          Col B         Col C        Col D

Ali              1000          500            200

Ardi              500         50              300

Eko            1500         500             250

Ardi             100         20                30

Ali               50          30                 10

Saya sudah split data saya menjadi

Sheet2 = nama ali dan datanya ali semua

Sheet3 = namanya ardi dan datanya ardi semua

Sheet4 = namanya eko dan datanya eko semua

Gimana cara mentotal untuk ali, ardi dan eko secara otomatis.

Mohon penjelasannya

0
By: ngarasan On: Wednesday, 16 May 2012

@Nugraha: Mas, buku bisa dipesan melalui SMS: 0878 0878 2141

Terima kasih

0
By: ngarasan On: Wednesday, 16 May 2012

@Dwi Wahyudi:

Mas, proses totalnya cukup dengan cara menampungnya pada sebuah variable dan lakukan penambahan variable pada setiap pengulangannya.

Pertanyaannya, gimana cara Mas Wahyudi memisahkan (Split) datanya? Nah, dari situlah baru bisa saya coba carikan Code yang pas untuk menjawab pertanyaan Mas Wahyudi.

Maaf dan ditunggu infonya.

salam

0
By: Guest On: Tuesday, 19 June 2012

mas,

gmn untuk procedure bwt insert data??

0
By: Guest On: Wednesday, 27 June 2012

Option Explicit

Sub Splitdatatosheets()
'
' Splitdatatosheets Macro
'

'
Dim rng As Range

Dim rng1 As Range

Dim vrb As Boolean

Dim sht As Worksheet

Set rng = Sheets("Sheet1").Range("A4")

Set rng1 = Sheets("Sheet1").Range("B4:N4")

vrb = False


Do While rng ""

    For Each sht In Worksheets
    
        If sht.Name = Left(rng.Value, 31) Then
        
            sht.Select
               
            Range("A2").Select
               
            Do While Selection ""
               
                ActiveCell.Offset(1, 0).Activate
                    
            Loop
                    
            rng1.Copy ActiveCell
                
            ActiveCell.Offset(1, 0).Activate
                
            Set rng1 = rng1.Offset(1, 0)
                
            Set rng = rng.Offset(1, 0)
                
            vrb = True
            
        End If

    Next sht
    
    If vrb = False Then

    Sheets.Add After:=Sheets(Sheets.Count)
    ActiveSheet.Name = Left(rng.Value, 31)
    ActiveSheet.Range("A1") = ActiveSheet.Name
    Sheets("Sheet1").Range("B3:N3").Copy ActiveSheet.Range("A2")

    Range("A2").Select
               
    Do While Selection ""
               
        ActiveCell.Offset(1, 0).Activate
                    
    Loop

    rng1.Copy ActiveCell

    Set rng1 = rng1.Offset(1, 0)
    
    Set rng = rng.Offset(1, 0)
    
    End If
    
vrb = False

Loop

End Sub