Professional Documents
Culture Documents
Module
Prakata
Bismillaahirrahmaanirrahiim. Segala puja dan puji serta ungkapan syukur penulis panjatkan kehadirat Allah swt. Atas segala nimat, rahmat, dan rahimNya, penulis dapat menyelesaikan penyusunan dokumentasi dalam bentuk module ini. Shalawat dan salam atas Rasulullah saw, juga mudah-mudahan terlimpah kepada para keluarganya, sahabat, tabiin, tabittabiin dan umatnya sampai hari akhir. Dokumentasi berjudul Visual Basic for Application Microsoft Excel Quick Training Module menggunakan lisensi GNU Free Documentation License, Version 1.2 dengan harapan module ini dapat dipergunakan lebih bebas dan dapat dikembangkan. Ucapan terima kasih disampaikan kepada Keluarga Mahasiswa Muslim Statistika, juga pada penulis-penulis VBA Excel yang dengan rela mempublikasikan tulisannya di dunia internet. Sudah dipastikan dalam module ini banyak sekali kekurangan dikarenakan keterbatasan kemampuan dan waktu yang dimiliki. Kontribusi dari pembaca/pengguna dokumentasi ini akan sangat membantu berkembangnya ilmu teknologi informasi terutama yang berhubungan dengan statistka. Penulis dapat dihubungi melalui blog XQ, http://excelquotient.wordpress.com.
http://excelquotient.wordpress.com
Visual Basic for Application Microsoft Excel Quick Training Module Hak Cipta 2005 F-Xtudent Dipersilakan untuk memperbanyak, mendistribusikan dan atau memodifikasi dokumentasi ini di bawah ketentuan GNU Free Documentation License, Version 1.2 atau versi sebelumnya yang dipublikasikan oleh Free Software Foundation. Salinan lisensi tersedia di http://www.gnu.org/licenses/fdl.html Keluarga Mahasiswa Muslim Statistika Institut Pertanian Bogor adalah sponsor dokumentasi ini. Microsoft
http://excelquotient.wordpress.com
Daftar Isi
VBA Excel Overview Integrated Development Environment Uswah 1 Procedure & Variable Conditional & Looping Syntax Uswah 2 Range/Cells WorkSheet Workbook Application Message Box & Input Box String Manipulation Visual Basic Controls Uswah 3 Add-Ins Protection & Validation
http://excelquotient.wordpress.com
http://excelquotient.wordpress.com
Uswah 1:
Merekam pembuatan chart Masalah: Buatlah chart yang mendeskripsikan mengenai data populasi muslim di Eropa tahun 2002. Country Austria Belgium Bulgaria Denmark Finland France Germany Greece Hungary Italy Luxemburg The Netherlands Poland Portugal Romania Spain Sweden Switzerland United Kingdom Total Total Population 8,102,600 10,192,240 8,487,317 5,330,020 5,171,302 56,000,000 82,000,000 10,000,000 10,043,000 56,778,031 435,000 15,760,225 38,667,000 9,853,000 22,500,000 40,202,160 8,876,611 7,304,109 55,000,000 Muslims Number 300,000 370,000 1,110,295 150,000 20,000 5,000,000 3,040,000 370,000 30,000 700,000 3,800 695,600 15,000 38,000 60,000 400,000 300,000 310,000 1,406,000 Percentage of Muslim Number
Solusi: 1. Masukkan data di atas ke Sheet1 mulai dari cell A1. Isi cell yang masih kosong! 2. Buka VB Editor 3. Rekam macro, dengan input seperti berikut (Figure 2):
http://excelquotient.wordpress.com
5. Kembali ke Microsoft Excel, blok kolom Country, Muslim Number, dan Percentage of Muslim Number beserta judul tabel tapi tanpa baris Total. 6. Buat chart, dengan tipe Line-Column on 2 Axes pada tab Custom Types. Finish 7. Lihat ke VB Editor, sekarang kode program telah bertambah menjadi
1 2 3 4 5 6 7 8 9 10 11 12 13 14 Sub MyChart() ' ' MyChart Macro ' Macro recorded 9/21/2005 by F-Xtudent ' ' Keyboard Shortcut: Ctrl+r ' Range("A1:A20,C1:D20").Select Range("C1").Activate Charts.Add ActiveChart.ApplyCustomType ChartType:=xlBuiltIn, TypeName:= "Line - Column on 2 Axes" ActiveChart.SetSourceData Source:=Sheets("Sheet1"). Range("A1:A20,C1:D20"), PlotBy:=xlColumns ActiveChart.Location Where:=xlLocationAsObject, Name:="Sheet1" End Sub http://excelquotient.wordpress.com
Keterangan program: Pada kode program di atas, baris 10-13 merupakan baris inti pembuatan chart sebagaimana dilakukan dalam GUI. Baris 10: Membuat chart baru Baris 11: Menentukan tipe chart Baris 12: Menentukan sumber data Baris 13: Menentukan lokasi Chart
9. Hentikan perekaman. 10. Lihat ke VB Editor, kode program bertambah sebagaimana perintah yang dilakukan dalam GUI. 11. Sekarang, ubahlah baris 12 dengan baris berikut
12 ActiveChart.SetSourceData Source:=Sheets("Sheet1"). Range("A1:A20,B1:C22"), PlotBy:=xlColumns
12. Simpan kursor pada procedure sub MyChart, lalu tekan F8, berkalikali. 13. Lihat di Sheet1. Apa yang terjadi? 14. Simpan file Excel dengan nama uswah1.xls
http://excelquotient.wordpress.com
10
http://excelquotient.wordpress.com
11
Syntax IF
If <condition> then <program> Else If <condition> then <program> Else <program> End If
Contoh:
1 2 3 4 5 6 7 8 9 If ActiveCell.Value <= 5 Then Status = "baby" ElseIf ActiveCell.Value <= 10 Then Status = "child" ElseIf ActiveCell.Value <= 20 Then Status = "teen" Else Status = "old" End If
http://excelquotient.wordpress.com
12
Contoh:
1 2 3 4 5 6 7 8 Select Case ActiveCell.Value Case 1 letter = "satu" Case 2 letter = "dua" Case 3 letter = "tiga" End Select
Contoh:
m = 0 Do Until ActiveCell.Value = "" ActiveCell.Value = m ActiveCell.Offset(1, 0).Select m = m + 1 Loop
Syntax FOR
For <condition> <program> Next
Contoh:
For m = 1 To 10 ActiveCell.Value = m ActiveCell.Offset(1, 0).Select m = m + 1 Next m
http://excelquotient.wordpress.com
13
Uswah 2:
Membuat function daypart Masalah: Dalam bidang media research atau advertising seringkali disuguhkan pekerjaan untuk membuat koding daypart dari data hasil running Media Nielsen Suite. Data waktu dapat dilihat pada file uswah2.xls. Waktu dikelompokkan dengan aturan seperti berikut. Daypart Rule 05.30-11.59 12.00-15.59 16.00-18.59 19.00-20.59 21.00-22.29 22.30-23.59 Others
Solusi: 1. Buka file uswah2.xls lihat pada Sheet1 2. Buka VB Editor 3. Pilih menu Insert > Module, lalu tuliskan kode program berikut:
1 2 3 4 5 6 7 8 9 Function DAYPART(waktu As Date) As String DAYPART = "Others" If waktu >= "05:30" And waktu DAYPART = "05:30-11:59" If waktu >= "12:00" And waktu DAYPART = "12:00-15:59" If waktu >= "16:00" And waktu DAYPART = "16:00-18:59" If waktu >= "19:00" And waktu DAYPART = "19:00-20:59" If waktu >= "21:00" And waktu DAYPART = "21:00-22:29" If waktu >= "22:30" And waktu DAYPART = "22:30-23:59" End Function <= "11:59" Then <= "15:59" Then <= "18:59" Then <= "20:59" Then <= "22:29" Then <= "23:59" Then
http://excelquotient.wordpress.com
14
Keterangan program: Baris 1: Function diberi nama DAYPART. Input value untuk function ini adalah variable waktu dengan tipe data Date. Function DAYPART mengembalikan nilai dengan tipe data String. Baris 2-8: Kode program berdasarkan aturan daypart.
4. Kembali ke Sheet1, pada kolom daypart cell B2, ketik formula berikut: =DAYPART(A2) 5. Begitu pula untuk baris-baris di bawahnya. 6. Kalau Anda melakukan dengan benar, maka hasilnya akan terlihat seperti ini: Time 17:52 9:32 12:05 12:31 5:22 10:29 11:57 13:47 21:39 22:56 1:41 3:56 5:50 19:04 9:33 5:48 23:51 0:20 Daypart 16:00-18:59 05:30-11:59 12:00-15:59 12:00-15:59 Others 05:30-11:59 05:30-11:59 12:00-15:59 21:00-22:29 22:30-23:59 Others Others 05:30-11:59 19:00-20:59 05:30-11:59 05:30-11:59 22:30-23:59 Others
http://excelquotient.wordpress.com
15
Range/Cell
Syntax Range/Cell:
Range("<address cell>").<method> Range("<address cell>:<address cell>").<method> Range("<address cell>", "<address cell>").<method> ActiveCell.<method> Selection.<method>
<method>:
Address Value Select
Menghapus isi/nilai range Memanggil range ke <index number> Memfokuskan range r baris ke bawah dan c kolom ke kiri Formula dari range
Formula dengan input cell r baris ke bawah dan c kolom ke kiri Memilih seluruh baris Memanipulasi tampilan font dengan menambahkan:
.Name .Size .ColorIndex=<0-56> .Color=RGB(<0-255>, <0-255>,<0-255>) .Bold=<True or False> .Italic=<True or False> .Underline=<True or False>
http://excelquotient.wordpress.com
16
Contoh:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 Range("A1").Select Range("A1").Value = "Assalaamu'alaykum" alamatcell = ActiveCell.Address Range(alamatcell, "D7").Select Selection.Cells(2).Value = "Wa'alaykumussalaam" Selection.Cells(1).Copy Range("C1") Selection.Copy Range("F1").PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=True Range("A1:D1").ClearContents Range("A2").EntireRow.Insert Range("H1").Offset(1, -2).Value = "Silakan masuk" Salam = Range("A1").Value Range("F5").Value=salam Range("A1").Formula = "=2+4*6" Range("A2").Value = 4 Range("A3").FormulaR1C1 = "=R[-1]C+R[-2]C" With Range("F1:F4").Font .Name = "Verdana" .Bold = True .Size = 20 .ColorIndex = 23 End With
Keterangan program: Baris17-22: Syntax WITH meringkaskan penulisan yang dapat ditulis dengan baris: Range("F1:F4").Font.Name = "Verdana" Range("F1:F4").Font.Bold = True Range("F1:F4").Font.Size = 20 Range("F1:F4").Font.ColorIndex = 23
http://excelquotient.wordpress.com
17
WorkSheet
Syntax WorkSheet: Sheets("<name>").<method> WorkSheets("<name>").<method>
ActiveSheet.<method>
<method>
Add
Name Delete
Contoh:
1 2 3 4 5 6 namasheet = ActiveSheet Worksheets.Add Before:=ActiveSheet Worksheets("Sheet1").Name = "Grafik" Sheets(namasheet).Delete Worksheets("Grafik").Activate ActiveSheet.Move After:=Sheets("Sheet3")
http://excelquotient.wordpress.com
18
Workbook
Syntax Workbook: Workbooks("<name>").<method>
ActiveWorkbook.<method>
<method>
Add Name
Sama dengan perintah File > SaveAs atau F12 dalam GUI Excel
Close Path
Contoh:
1 2 3 4 5 6 7 8 9 10 Dim filebaru as Workbook Set filebaru = Workbooks.Add filebaru.Name = "myData" Workbooks.Open "C:\Data.xls" Workbooks("Data").Activate ActiveWorkbook.Save ActiveWorkbook.SaveCopyAs Filename:="C:\Data2.xls" ActiveWorkbook.Close lokasi = ActiveWorkbook.Path nilai = Workbooks("Data").Sheets("Grafik").Range("A1:D5").Value
http://excelquotient.wordpress.com
19
Application
Syntax Application:
Application.<method>
<method>
Menghentikan alur program dalam waktu tertentu Memberikan status/nilai pada status bar yang terletak di bagian bawah GUI Microsoft Excel. Pastikan Status Bar pada menu View tercentang
Jika False, Alert atau message ketika macro sedang berjalan tidak dimunculkan Contoh:
1 2 3 4 5 6 7 8 9 10 11 Range("A1").Select activecell.offset(10, 100).Select Range("A1").Select Sheet("Sheet2").Delete Application.ScreenUpdating = False Application.DisplayAlert = False Sheet("Sheet1").Delete Application.Wait (Now + TimeValue("00:00:05")) Application.StatusBar = "Running " Application.ScreenUpdating = True Application.DisplayAlert = True
http://excelquotient.wordpress.com
20
Keterangan:
<prompt>
Tombol yang ada ketika message box muncul (bisa dilihat di help VB Editor), di antaranya vbOKCancel : Tanpa icon, tombol: OK dan Cancel vbYesNoCancel : Tanpa icon, tombol Yes, No, Cancel vbQuestion : Icon tanda Tanya, tombol OK vbCritical : Icon tanda silang disertai suara, tombol OK
[,default]
Nilai kembalian (return value) tombol vbOK :1 vbCancel : 2 vbAbort : 3 vbRetry :4 vbIgnore : 5 vbYes :6 vbNo :7
http://excelquotient.wordpress.com
21
Contoh:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 Sub nama() 'deklarasi Dim nama As String Dim konfirmasi As Integer 'input masukkan nama nama = InputBox("Masukkan nama Anda:", "Nama") 'jika nama tidak dimasukkan maka keluar dari procedure sub If nama = "" Then MsgBox "Anda tidak mempunyai nama" Exit Sub End If 'konfirmasi nama konfirmasi = MsgBox("Anda yakin bernama " & nama & "?", vbYesNo, "Konfirmasi") 'jika menekan tombol Yes If konfirmasi = 6 Then MsgBox "Nama: " & nama 'jika menekan tombol No ElseIf konfirmasi = 7 Then MsgBox "Saya juga tidak yakin kalo " & nama & " itu nama Anda" End If End Sub
http://excelquotient.wordpress.com
22
String Manipulation
Syntax Manipulasi String:
Ltrim(<text>,<numchar>) / Rtrim(<text>,<numchar>) Mid(<text>,<startnum>,<numchar>) Upper (<text>) / Lower (<text>) Len(<text>)
Mengambil <numchar> karakter dari sebelah kiri/kanan Mengambil string dari posisi <startnum> sebanyak <numchar> Membuat text manjadi huruf besar Mengembalikan nilai panjang karakter string
Trim(<text>) Split(<text>,<delimiter>,<limit>)
Memisahkan text dengan pemisah delimiter. Function ini mengembalikan array satu dimensi (vector). Ukuran vector bisa dibatasi sebanyak limit. Contoh
1 2 3 4 5 6 7 8 9 Range("A1").Value = "Brand teks = Range("A1").Value teks = Trim(teks) pisahteks = Split(teks, ":") merek = pisahteks(1) teks = Upper(teks) teks = RTrim(teks, 16) teks = Mid(teks, 8, 4) lenteks = Len(teks) : Sunsilk - Shampoo"
http://excelquotient.wordpress.com
23
Figure 5. Visual Basic Toolbar: Properties, Visual Basic, dan Control Toolbox
http://excelquotient.wordpress.com
24
Cara penggunaan: Untuk melakukan pengeditan, pastikan tombol (Design Mode) terpilih. Untuk membuat interactive user interface, klik objek pada Control Toolbox, maka kursor mouse berubah menjadi tanda +. Lalu klik lagi pada worksheet. Untuk mengedit properties dari objek, klik kanan objek pada Sheet lalu pilih Properties. Untuk menjalankan (running), pastikan tombol (Design Mode) tidak terpilih
http://excelquotient.wordpress.com
25
Uswah 3:
Membuat system entri data Masalah: Telah dilakukan survey bohongan mengenai produk yang paling disukai dari makanan khas Indonesia dengan tingkat kepuasannya. Buatlah system untuk entry data dengan tiga variable yaitu: 1. ID Responden 2. Jenis kelamin 3. Produk paling disukai 4. Tingkat Kepuasan dengan selang 1-10 Solusi: 1. Buka file excel dan ganti nama Sheet1 dengan Main, Sheet2 dengan Data, dan Sheet3 dengan Support. Di mana sheet Main adalah front end untuk entri data, sheet Data adalah daftar data yang telah dientri, dan sheet Support berisi data konfigurasi system. 2. Buatlah tampilan sheet Main seperti Figure 6, sheet Data seperti Figure 7, dan sheet Support seperti Figure 8.
VB Controls
Figure 6. Tampilan sheet Main
http://excelquotient.wordpress.com
26
VB Controls
http://excelquotient.wordpress.com
27
Figure 10. Aturan main optionbutton Jenis Klamin VBA Excel Quick Training http://excelquotient.wordpress.com
28
5. Properties combobox Produk Paling Disukai dan scrollbar Tingkat Kepuasan dalam sheet Main seperti Figure 11
Figure 11. Properties combobox Produk Paling Disukai dan scrollbar Tingkat Kepuasan
http://excelquotient.wordpress.com
29
7. Properties tombol Record, tombol View Data, dan tombol Reset pada sheet Main, serta tombol Back to Main pada Sheet Data
Figure 13. Properties tombol Record, tombol View Data, tombol Reset dan tombol Back to Main VBA Excel Quick Training http://excelquotient.wordpress.com
30
8. Dobel klik masing-masing ke empat tombol, maka akan terbuka VB Editor. Lalu masukkan kode program seperti berikut:
Pada Sheet Main: 1 Private Sub record_Click() 2 simpan 3 End Sub 4 5 Private Sub reset_Click() 6 resetmain 7 End Sub 8 9 Private Sub vData_Click() 10 Sheets("Data").Activate 11 End Sub Pada Sheet Data: 1 Private Sub main_Click() 2 Sheets("Main").Activate 3 End Sub
9. Pada VB Editor klik menu Insert > Module, maka akan terbuka Module1. Lalu ketik program berikut untuk me-record data dari sheet Main ke sheet Data. Program ini aksi dari klik tombol Record.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 Sub simpan() Application.ScreenUpdating = False Application.DisplayAlerts = False On Error GoTo errorline 'DECLARATION Dim cID As String Dim cJK As String Dim cPPD As String Dim cTK As String Dim m As Integer 'ASSIGN VALUE TO VARIABLE cID = Range("D8").Value cJK = Range("D10").Value cPPD = Range("D12").Value cTK = Range("D14").Value 'VALIDATION EMPTY CELL If cID = "" Or cJK = "" Or cPPD = "" Or cTK = "" Then MsgBox "Fill the form correctly, please!" GoTo lastline http://excelquotient.wordpress.com
31 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 End If 'PASTE VARIABLES ''Activate Cell A1 at Sheet Data Sheets("Data").Activate Range("B3").Select ''Search empty cell Do Until ActiveCell.Value = "" ''Assign record number m = m + 1 ActiveCell.Offset(0, -1).Value = m ''Validation duplicate redord If ActiveCell.Value = cID Then MsgBox "Can't perform duplicate ID Responden." Sheets("Main").Activate GoTo lastline End If ''Move to lower cell ActiveCell.Offset(1, 0).Select Loop ''Fill the record ActiveCell.Offset(0, -1).Value = m + 1 ActiveCell.Value = cID ActiveCell.Offset(0, 1).Value = cJK ActiveCell.Offset(0, 2).Value = cPPD ActiveCell.Offset(0, 3).Value = cTK 'RESET THE CONDITION Resetmain 'JUMP TO THE END OF PROGRAM GoTo lastline 'GOTO LINE errorline: MsgBox "Sorry! Unpredicable error is occur. Call program maker. please!" lastline: Application.ScreenUpdating = True Application.DisplayAlerts = True End Sub
10. Ketik pula program berikut pada module1 untuk me-reset system ke kondisi semula. Program ini merupakan aksi dari tombol Reset,
http://excelquotient.wordpress.com
32
sambungan dari program simpan dan dijalankan ketika file (workbook) ini dibuka.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 Sub resetmain() Application.ScreenUpdating = False Application.DisplayAlerts = False Sheets("Main").Activate Range("D8").Value = "" Range("D10").Formula = "=IF(Support!B2=TRUE,""LakiLaki"",IF(Support!B2=FALSE,""Perempuan"",""""))" Range("D12").Formula = "" Range("D14").Formula = "" Sheets("Support").Range("B2").Value = "N.A." Application.ScreenUpdating = True Application.DisplayAlerts = True End Sub
11. Agar setiap kali file (workbook) ini dibuka selalu me-reset ke kondisi semula, tuliskan program ini pada makro Workbook.
1 2 3 Private Sub Workbook_Open() resetmain End Sub
http://excelquotient.wordpress.com
33
Add-Ins
Add-Ins merupakan program tambahan untuk Microsoft Excel. Melalui menu Tools > Add-Ins Anda bisa menambahkan atau mengurangi AddIns yang disediakan oleh Microsoft Excel sendiri atau buatan sendiri. Langkah Membuat Add-Ins Membuat program VBA Excel seperti contoh-contoh di bahasan sebelumnya Buka VB Editor Pilih ThisWorkbook dalam jendela Project. Pada jendela Properties set IsAddin menjadi True Menyimpannya dalam tipe file Microsoft Office Excel Add-In (.xla) Contoh: 1. Buatlah file uswah2.xla dari file uswah2.xls 2. Simpan file uswah2.xla di path Add-In, pada computer penulis, terletak di C:\Documents and Settings\F-Xtudent\Application Data\Microsoft\AddIns\ 3. Buka Microsodt Excel 4. Klik menu Tools > Add-Ins, maka akan mucul jendela Add-Ins 5. Klik tombol Browse.. lalu pilih file uswah2.xla 6. Pada Add-Ins available, centang uswah2, lalu klik OK 7. Coba panggil function DAYPART pada worksheet.
http://excelquotient.wordpress.com
34
4. Proteksi di atas akan berfungsi ketika Worksheet diproteksi. Caranya pilih menu Tools > Protection > Protect Sheet Range Input Validation 1. Pilih range(s) yang dikehendaki 2. Pilih menu Data > Validation (Figure 15) 3. Pada tab Settings, tentukan tipe data pada Allow lalu tentukan aturannya.
VBA Excel Quick Training http://excelquotient.wordpress.com
35
4.
5. 6.
Input Message berguna untuk memberi petunjuk pengisian data. Input message akan muncul pop-up ketika range tersebut aktif. Jika berkehendak, isikan judul message dan isi message pada tab Input Message. Pada tab Error Alert , jika Anda ingin memberikan alert ketika ada data yang tidak valid, centanglah Show error alert after Ada tiga style alert yang berbeda fungsinya. Gunakan stop style untuk input data yang benar-benar harus memenuhi validasi. Gunakan warning style untuk validasi yang tidak terlalu ketat. Dan gunakan information style untuk validasi yang sangat longgar.
7.
http://excelquotient.wordpress.com
36
Pustaka
Kusrianto Adi. 2004. Cara Mudah Menggunakan VBA Excel. PT. Elexmedia Komputindo. Jakarta. [Madcoms]. 2005. Panduan Belajar Macro Excel 2003. Penerbit ANDI. Yogyakarta. Thompson James M. 2004. Porting Excel/VBA to Calc/StarBasic. http://documentation.openoffice.org/HOW_TO/various_topics/V baStarBasicXref.pdf
http://excelquotient.wordpress.com