modul vba

100
Microsoft Excel 2007 Programming

Upload: fajar-kurniawan

Post on 07-Dec-2014

319 views

Category:

Documents


15 download

DESCRIPTION

modul untuk VBA excel

TRANSCRIPT

Page 1: Modul VBA

Microsoft Excel 2007Programming

Page 2: Modul VBA

Bab IPengenalan VBA

Apa itu VBA Macro Recording

Page 3: Modul VBA

VBA, yang merupakan singkatan dari Visual Basic for Applications, adalah sebuah bahasa pemrograman dikembangkan oleh Microsoft . Singkatnya, VBA adalah alat yang kita gunakan untuk mengembangkan program-program yang akan mengontrol Excel sehingga excel akan melakukan apapun yang kita perintahkan secara cepat dan akurat

Page 4: Modul VBA

Apa yang bisa dilakukan dengan VBA Melakukan suatu pekerjaan yang berulang-ulang, contoh membikin

konfirmasi, jika tanpa VBA mungkin kita harus membuat lampiran secara manual untuk tiap KPP, trus membuat surat juga untuk tiap KPP, abis itu juga mem-printnya, namun dengan VBA anda cukup menyediakan data serta template dari surat dan lampiran maka dengan satu kali klik seketika juga akan selesai

• Mengotomasikan suatu pekerjaan yang komplex, contoh membuat suatu laporan keuangan dari ledger, kalo tanpa VBA mungkin melibatkan banyak sekali pekerjaan namun dengan VBA pekerjaan tadi diringkas jadi satu program dan bisa dipakai untuk tahun berikutnya bahkan Data WP yang lain sepanjang format datanya telah disesuaikan

• Membuat customize command yang kalo memakai excel melibatkan beberapa kali perintah, kemudian anda bikinkan pula tombol atau menu sehingga memudahkan kita dalam pekerjaan sehari2

• Menciptakan fungsi baru, misalnya fungsi penghitungan PPh 25, atau mengubah angka menjadi terbilang (mis: 1250 menjadi seribu dua ratus lima puluh rupiah)

• Menciptakan Ad-in yaitu pelengkap dari excel yang bisa berupa menu2 yang tidak ada di excel, yang dapat dikomersialkan. Misalnya : ASAP Utilities, Power Utilities, dll

• Menciptakan satu aplikasi yang lengkap, beserta template, menu, toolbar, dialog box maupun Help yang lengkap, misalnya GL for excel, Audit for excel, dll

Page 5: Modul VBA

Macro recording

Untuk meng-otomasikan pekerjaan diexcel kita tidak perlu menjadi programmer VBA, kita bisa melakukan dengan Macro recording,kita bisa merekam step by step pekerjaan kita dan macro akan mengulanginya dengan persis dan jauh lebih cepat

Page 6: Modul VBA

Developer RibbonMakro recorder maupun VBE (visual basic editor) terdapat di ribbon “developer”, ribbon ini secara default tidak muncul , untuk memunculkannya kita lakukan cara sbb:

1. Klik Office button (Tombol bulat berlogo office di kiri atas excel)

2. Klik Excel Option3. Pilih menu Popular,

lalu Tick mark Show Developer tab in the Ribbon.

4. OK.

Page 7: Modul VBA

Developer Ribbon

1. Developer Ribbon2. Tombol untuk

Record macros3. Tombol untuk

menjalankan macro

4. Tombol untuk menuju VB Editor

5. Untuk menambahkan list, check box, dan control lainnya ke worksheet

6. Untuk menangani file xlm, import & export, dll

Page 8: Modul VBA

Step by Step Record Macros

1. Pilih sel mana saja di workbook aktif, lalu klik developer tab

2. Klik Record Macro, Record Macro Dialog box akan muncul

3. Isi nama dari makro, mis: Name_Date

4. Klik shortcut key dan isi dengan Shift+N (makro bisa dijalankan dengan Ctrl+Shift+N)

5. Macro bisa ditaruh di workbook ini, personal workbook atau workbook lain

6. Description bisa diisi dengan keterangan, misalnya “makro untuk nulis nama dan tanggal sekarang”

7. Klik OK

Page 9: Modul VBA

Step by Step Record Macros (2)

1.Tulis nama anda

2.Tulis “=now()” ,Pilih kedua sel diatas lalu format bold dan size 20

3.Stop recording

Page 10: Modul VBA

Menjalankan Macro

Pilih cell yang akan diterapkan macro bersangkutan

Klik Developer Tab Klik macros, maka akan muncul

Macro dialog box Shortcut (Alt+F8)

Page 11: Modul VBA

1. Memilih nama macro yg akan dijalankan

2. Klik untuk menjalankan macro

3. Klik untuk menjalankan macro sambil debug

4. Klik untuk mengedit macro di VB Editor

5. Klik untuk mengedit properties dari macro seperti shortcut dan description

6. Untuk memilih workbook yg berisi macro

Macro Dialog Box

Page 12: Modul VBA

Relative and Macro Security Option

1. Untuk menentukan apakah lokasi cell bersifat mutlak atau relatif

2. Untuk memunculkan macro security dialog box

Page 13: Modul VBA

Perbedaan antara absolute dan relatif reference

Jika memakai Absolut Referensi

Range("C4").Select

ActiveCell.FormulaR1C1 = "Nama Anda"

Range("C5").Select

ActiveCell.FormulaR1C1 = "=NOW()"

Range("C4:C5").Select

Selection.Font.Bold = True

With Selection.Font

.Size = 20

End With

Range("D9").Select

Jika memakai relatif referensi

ActiveCell.Select

ActiveCell.FormulaR1C1 = "nama anda"

ActiveCell.Offset(1, 0).Range("A1").Select

ActiveCell.FormulaR1C1 = "=NOW()"

ActiveCell.Offset(-1, 0).Range("A1:A2").Select

Selection.Font.Bold = True

With Selection.Font

.Size = 20

Page 14: Modul VBA

Macro Security

Untuk bisa menjalankan macro maka setting yang pertama jangan di tick mark, untuk amannya pakai setting no. 2 yaitu “disable all macros with notification”, karena jika kita membuka file yg ada macronya maka kita akan diberi pilihan untuk meng-enable atau men-disable –kan macro tersebut

Page 15: Modul VBA

Assign macro to quick access toolbar

1. Klik Customize Quick access button

2. Klik More Command3. Pilih “Macros”4. Pilih macros yang kita inginkan5. Klik Add6. Klik macro kita7. Tombol untuk menggeser posisi

toolbar8. Klik Modify9. Pilih gambar toolbar buat macro

kita10.Klik OK

Page 16: Modul VBA

Saving Macro

Workbook yang berisi macro harus disimpan dalam format “Excel macro enabled workbook” (.xlsm) supaya bisa diexekusi, kalo nggak maka macronya akan dihapus oleh excel

Page 17: Modul VBA

Garis besar dari VBA Kita melakukan sesuatu di VBA baik merekam maupun

menulis kode di VBE (Visual Basic Editor) VBA terdiri dari Sub Prosedure (kumpulan kode yang

melakukan aksi atas suatu obyek) serta Fungsi (kumpulan kode yang menghasilkan suatu nilai)

VBA memanipulasi Obyek, didalam excel terdapat ratusan obyek yang dapat kita perintah atau kita ubah nilainya , contoh obyek yang paling sering kita pakai antara lain: Workbook, Worksheet, range, chart, dll

Obyek dalam excel disusun secara hierarki, artinya didalam satu obyek bisa terdiri dari beberapa obyek yang lain, Obyek yang paling tinggi adalah aplikasi excel sendiri yang disebut “Application”. Didalam Application terdapat obyek lain antara lain seperti workbook obyek dan add-in obyek , didalam workbook obyek terdapat worksheet obyek, dst. Untuk menunjuk ke suatu range dapat dipergunakan cara sebagai berikut

Page 18: Modul VBA

Garis besar VBA

Jika kita tidak menyebutkan secara rinci maka excel akan menganggap bahwa obyek yang dimaksud adalah yang aktif

Jika kita tahu kalo book1.xlsx adalah workbook yang aktif maka kita cukup menulis

Worksheets(“Sheet1”).Range(“A1”)

Jika kita tahu kalo Sheet1 adalah sheet yang aktif maka kita cukup menulis

Range(“A1”)

Page 19: Modul VBA

Garis besar VBA

Obyek memiliki Method, Properties, serta Event. Method adalah action yang akan dilakukan oleh obyek tersebut misalnya obyek workbook memiliki “Open”,”Save” Method

Properties adalah setting yang dimiliki oleh Obyek, Misalnya Workbook memiliki properties “Name”,”Path”, “Saved”

Events adalah peristiwa yang terjadi pada suatu obyek, misalnya workbook memiliki “Before_save”, “Before_save”, “Activate” event

VBA memiliki konstruksi seperti bahasa pemrograman modern karena merupakan turunan dari bahasa Visual basic yang sangat terkenal, sehingga kita bisa melakukan banyak hal2 ajaib seperti membuat browser didalam excel atau pemutar film dan MP3

Page 20: Modul VBA

Bab II: Pengenalan VB Editor Pengenalan antar muka VB Editor Setting2 yang perlu diketahui di VB Editor Kustomisasi VB Editor Proteksi VB Project Menyimpan File VB Project Membuat sub & Function Procedure

Page 21: Modul VBA

VB Editor

Macro yang kita buat via recorded macro sudah bisa kita jalankan, namun masih jauh dari sempurna karenaKondisi fixedjika ada error maka tidak jalanTidak bisa berinteraksi dengan user, dll

Oleh karena itu kita perlu memodifikasi macro tersebut dengan mengetik code secara manual dengan bantuan VBE (Visual Basic Editor)

Page 22: Modul VBA

Cara membuka VBE

1. Cara 1, Klik developer tab, klik tombol “visual basic”

2. Cara 2, Shortcut Alt+F113. Cara 3, Buka macro dialog box

(Alt+F8), pilih macro yang mau diedit, lalu klik “edit”

Page 23: Modul VBA

Visual Basic Editor1. Project

Explorer2. Properties3. Code

Window4. Userform

window5. Object

Browser6. Immediate7. Locals8. Watcher

Page 24: Modul VBA

VB Editor 1. Project Explorer window

Project Explorer menampilkan semua workbook yang terbuka (termasuk hidden dan add-ins) dalam bentuk folder2, click tanda “+” untuk membukanya, didalamnya terdapat semua object seperti worksheet, Modules, userform & Class, klik 2x untuk menampilkan isi nya

Shortcut untuk menampilkan Ctrl+R

2. Properties Window

berisi setting untuk project, userform beserta control2nya, dan workbook & Worksheet

3. Code window

Biasa disebut juga Module windows, berisi semua VBA Code, semua Object di project akan memiliki code window masing2, Untuk membuka code yang berhubungan dengan object klik 2x object bersangkutan

6. Immediate window

untuk menampilkan tekan Ctrl+G atau View➪Immediate Window command. Window ini biasa digunakan untuk eksekusi perintah langsung atau untuk fungsi debugging

Page 25: Modul VBA

Customizing VB Editor 01 Code Settings Auto Syntax Check —

menentukan apakah VBA akan mengecek kebenaran penulisan code setiap kali kita menulis satu baris kode, akan muncul peringatan mengenai apa yang salah dengan code kita dan kita bisa klik help untuk penjelasan lebih lanjut – bagus buat pemula

Require Variable Declaration — menentukan apakah setiap variabel perlu dideklarasikan dahulu sebelum eksekusi, akan menampilkan “option explicit untuk tiap modul baru

Page 26: Modul VBA

Customizing VB Editor 01 Code Settings Auto List Member —

menampilkan secara otomatis sub object, methode, dan properties dari object yang kita ketik

Auto Quick Info — menampilkan informasi serta parameter dari fungsi yang kita ketik

Auto Data Tips — Menampilkan isi dari variabel pada saat ekseckusi/ running, hanya muncul saat break mode

Auto Indent — untuk indent setiap awal baris, baris berikutnya akan mengikuti indent diatasnya

Tab Width — lebar tiap kali indent/tab

Page 27: Modul VBA

Customizing VB Editor 01 Window Settings Drag-and-Drop Text

Editing — buat drag & Drop editing

Default to Full Module View — menentukan apakah semua Code akan berbagi dalam satu code window ataupun satu window tiap satu prosedur

Procedure Separator — menampilkan separator untuk menandai tiap prosedur

Page 28: Modul VBA

Customizing VB Editor 02Code Colors Determines the foreground and background

colors used for the type of text selected in the list box.

Color Text List — Lists the text items that have customizable colors.

Foreground — Specifies the foreground color for the text selected in the Color Text List.

Background — Specifies the background color for text selected in the Color Text List

Indicator — Specifies the margin indicator color.

Font Specifies the font used for all code.

Size Specifies the size of the font used for code.

Margin Indicator Bar Makes the margin indicator bar visible or

invisible.

Sample Displays sample text for the font, size, and

color settings.

Page 29: Modul VBA

Customizing VB Editor 03 Form Grid Settings/ untuk pembuatan

user form

Show Grid — menentukan apakah grid akan ditampilkan dalam userform, hal ini untuk memudahkan dalam design

Grid Units — menentukan lebar grid (dlm pixel)

Align Controls to Grid — Otomatis akan meletakkan control ke grid yang terdekat/untuk mempermudah design

Show ToolTips Displays ToolTips for the toolbar buttons.

Collapse Proj. Hides Windows Menentukan apakah jika folder di Project

explorer ditutup juga akan ikut menutup code window yang bersangkutan

Page 30: Modul VBA

Customizing VB Editor 03 Edit and Continue Notify Before State Loss — jika code error maka

akan menampilkan peringatan tentang data/ variable yang direset pada saat eksekusi diteruskan

Error Trapping Untuk penanganan masalah error Break on All Errors — semua error akan ditangani

sistem (break mode) tidak perduli apakah ada error handle code atau error ada di Class Module

Break in Class Module — hanya akan ditangani oleh sistem jika terjadi di class module

Break on Unhandled Errors — hanya akan ditangani oleh sistem (break mode) jika tidak ada handle error code.

Compile Compile On Demand — sebelum program

running akan dicompile lebih dulu agar berjalan lebih cepat dan untuk melihat apakah ada error atau tidak

Background Compile — compiles akan dijalankan secara background

Page 31: Modul VBA

Customizing VB Editor 04

Windows disini akan di-dock/ ditempelkan di satu tepi dan tidak dapat dipindahkan kemana2, kalo di –undock berarti window akan bebas dipindahkan ke mana2 , hal ini berguna untuk menambah space pada waktu design

Page 32: Modul VBA

Change VBA Project

Pilih Project di Project Explorer Window

Klik kanan untuk memunculkan menu

Pilih dan klik VBAProject Properties

Page 33: Modul VBA

VBA Project Properties 01

Project Name bisa diisi dengan nama yang diinginkan yang mudah dimengerti dan dibedakan dengan project yg lain (unique)

Project description juga sebaiknya diisi dengan penjelasan secukupnya

Help file name dan helpid diisi jika project kita memiliki file help sendiri, kalau tidak sebaiknya dibiarkan saja (nilai default)

Conditional compilation biasanya diisi untuk keperluan debugging

Page 34: Modul VBA

Proteksi code VBA Tick mark “lock project

for viewing” agar kode vba anda tidak bisa oleh orang lain

Lalu diisi passwordnya dan Confirm Password

Code VBA tetap bisa dijalankan namun tidak bisa dilihat codenya

Untuk melihat code-nya maka kita harus memasukkan passwordnya

Page 35: Modul VBA

Membuat new module

Pilih project module yang diinginkan (buat workbook baru kalo belum ada)

Klik kanan untuk memunculkan menu, pilih insert->Module

Atau pilih insert menu/ insert button dari toolbar lalu pilih module

Page 36: Modul VBA

Membuat prosedure baru

Pilih module yang akan ditambahkan prosedure

Klik menu Insert->Procedure

Page 37: Modul VBA

Add new procedure

Isi name dangan nama procedure yang diinginkan

Pilih sub di Type (default)

Pilih public di Scope (Default)

Page 38: Modul VBA

Add new procedure

Prosedure ada Sub prosedure dan Function Procedure, sub biasanya melibatkan suatu aksi terhadap obyek lain atau melakukan sesuatu sementara fungsi adalah prosedure yang menghasilkan suatu nilai atau kumpulan nilai (array)

Public artinya bisa diakses oleh sub lain diluar module ini, kalo private berarti Cuma bisa diakses oleh sub/function lain didalam module bersangkutan

Kita juga bisa menulis secara manual untuk menambah prosedur

Page 39: Modul VBA

Bab IIIExcel Obyek dan VBA Sub & Procedure Intoducing Excel Object Model Merujuk ke Obyek VBA Sub dan Fuction Procedure

How to naming Syntax How to run

Page 40: Modul VBA

Introducing the ExcelObject Model VBA adalah pemrograman yang Obyek

oriented (OOP/Object Oriented Programming) artinya VBA mendefinisikan excel sebagai sekumpulan obyek2 yang memiliki methode dan properties serta event2 yang dapat dimanipulasi sedemikian rupa

Obyek yang paling atas/ induk adalah excel itu sendiri yang dalam VBA disebut sebagai “Application” yang memiliki methods serta properties yang akan mengatur bagaimana excel tersebut dioperasikan

Object excel memiliki obyek lain (turunan/ sub obyek) yaitu antar lain workbook, lalu workbook sendiri memiliki method dan properties sendiri serta memiliki sub obyek yaitu antara lain worksheets, dimana workshetts juga memiliki sub obyek yaitu al: range/cells

Application (Excel)

Window Commandbar

Workbook

Worksheer

Range

Hyperlink

VB Project

Chart

Page 41: Modul VBA

Obyek hirarki dari font object

Disini terlihat bahwa excel/application obyek memiliki sub obyek workbook

Workbook memiliki member a.l: worksheet

Worksheet memiliki sub object range

Range memiliki object font, dst..dst….

Page 42: Modul VBA

Merujuk ke Object

Kita bisa merujuk ke suatu object dengan cara bertingkat, misalnya

Workbooks(“book1.xlsx”).Worksheets(“sheet1”).range(“A1”)

Jika obyek sebelumnya tidak ditulis maka Excel mengasumsikan bahwa obyek yang aktif adalah yang dimaksud, jadi bila workbook yang aktif adalah “book1.xlsx” serta sheet yang aktif adalah “sheet1” maka kita cukup menulis range(“A1”)

Workbooks artinya sekumpulan (Collection) workbook yang terbuka pada saat ini, kalo worksheets juga berarti collection dari worksheet (tanpa “s”/jamak). Untuk merujuk ke worbook tertentu maka bisa dipakai nama dari workbook (book1.xlsx) atau index (1,2,3,….)

Page 43: Modul VBA

VBA Sub and Function Procedures

A Sub procedure is a group of VBA statements that performs an action (or actions) with Excel.

Contoh:Sub ShowMessage()

MsgBox “That’s all folks!”

End Sub

A Function procedure is a group of VBA statements that performs a calculation and returns a single value.

Contoh:Function CubeRoot(number)

CubeRoot = number ^ (1 / 3)

End Function

Page 44: Modul VBA

How to naming Sub/Function procedure Kita bisa menggunakan huruf dan nomor sebagai nama, tapi

karakter pertama haruslah huruf Tidak boleh ada spasi atau titik (“.”) Tidak boleh ada karakter #, $, %, &, @,^, *, ! Karakter lain seperti /,?,<,>,-,+ bisa digunakan tapi bisa

menimbulkan kebingungan karena merupakan operator jadi paling aman adalah hanya gunakan huruf,nomor dan underscore( _ )

Huruf besar sama huruf kecil dianggap sama, tapi biasakan untuk menggunakan huruf besar pada karakter pertama untuk lebih menguatkan arti

Tidak boleh menyamai fungsi yang sudah ada di excel misalnya SUM, AVERAGE,FIND, dll serta jangan menyamai nama sel misalnya “A1” atau “R1C1”

Jangan lebih dari 255 karakter Nama sebaiknya mencerminkan aksi/ tujuan dari sub/function

misalnya: ProcessData, PrintReport, Sort_Array, or CheckFilename. Jangan hanya bersifat umum seperti: DoIt, Update, Fix, macro1,

Macro2.

Page 45: Modul VBA

Syntax dari sub prosedure[Private | Public | Friend] [Static] Sub name [(arglist)]

[statements][Exit Sub][statements]

End SubThe Sub statement syntax has these parts:

Public Sub ini bisa diakses oleh prosedure/function lain di semua module

Private Sub ini hanya bisa diakses oleh sub/function di module yang sama

Friend Hanya digunakan di class module

Static Variable yang ada didalam sub ini nilainya disimpan sehingga tidak berubah

arglist Variable atau sekumpulan variabel yang merupakan argumen dari sub, dipisahkan dengan koma, syntax:[Optional] [ByVal | ByRef] [ParamArray] varname[( )] [As type] [= defaultvalue]

Page 46: Modul VBA

How to run a sub procedure Klik didalam sub prosedure yang diinginkan, lalu klik menu Run➪Run

Sub/UserForm , shortcut F5, atau klik tombol Run Sub/UserForm di toolbar

Pilih list sub procedure di Macro dialog box lalu klik “run”

Klik Toolbar/ribbon/quick access toolbar, Shape yang telah di assign dengan sub prosedur

Dari Sub procedure lain

Secara otomatis begitu membuka, menutup, mensave workbook , berpindah sheet, berpindah range, merubah isi cell tertentu, dll sesuai dengan events dari tiap object di excel

Dari the Immediate window in the VBE. Ketik aja sub prosedur yang diinginkan dan tekan enter

ContohSub panggil_fungsi() Dim cb, cbroot 'minta input dari user cb = InputBox("masukkan bilangan yg mo dicari akar pangkat tiga-nya") ‘Debug.Print cb If cb <> "" Then cbroot = CubeRoot(cb) MsgBox cbroot Else Exit Sub End IfEnd Sub

Page 47: Modul VBA

How to run a Function procedure

Dari sub/ function prosedure yang lain

Diketik di worksheet sebagai fungsiContoh

Function CubeRoot(number) CubeRoot = number ^ (1/3)End Function

Page 48: Modul VBA

Bab IV. Essential VBA Language Elements

Comments Variable Constant Data Type Array

Page 49: Modul VBA

Comments Comments merupakan code vba yang paling simple, gunanya

untuk memberikan penjelasan atas suatu baris kode/ variable/sub/ function

Cara penggunaan Comment cukup dengan memberikan karakter ‘ diawal maka semua karakter yang ada setelah tanda ‘ akan diabaikan oleh VBA

Comment bisa diberikan diatas baris kode atau di sebelah kanan dari baris kode yang akan diberi penjelasan

Contoh:‘ prosedur untuk menghasilkan akar pangkat tiga dari angka yang diberikan oleh userSub panggil_fungsi() Dim cb, cbroot 'minta input dari user cb = InputBox("masukkan bilangan yg mo dicari akar pangkat tiga-nya") 'Debug.Print cb If cb <> "" And WorksheetFunction.IsNumber(cb) Then ' jika user meng-klik tombol cancel cbroot = CubeRoot(cb) MsgBox cbroot Else Exit Sub End IfEnd Sub

Hal ini juga berguna dalam pemrograman dimana jika kesalahan code kita tidak perlu menghapus suatu baris kode tapi cukup menambahkan tanda ‘ maka baris tersebut akan dianggap comments dan tidak akan diproses oleh VBA

Page 50: Modul VBA

Variable

Variable bisa didefinisikan sebagai lokasi penyimpanan/ storage yang ada pada memory yang diperlukan agar suatu proses bisa berjalan

Pada contoh diatas variable cb digunakan untuk tempat menyimpan dari user input, dimana variabel ini bisa dimanipulasi lebih lanjut

Suatu variabel bersifat read write artinya bisa di assign value tertentu (memakai operator =)

cb = InputBox("masukkan bilangan yg mo dicari akar pangkat tiga-nya")

dan bisa diambil valuenya untuk diproses cbroot = CubeRoot(cb)

Page 51: Modul VBA

Declaring Variable Kita mendeklarasikan variabel agar program berjalan lebih efisien dan

lebih cepat, juga agar kita tidak salah dalam mengetik nama variabelmenggunakan auto correct pada editor vba (Ctrl+Space)

Juga jika dideklarasikan diawal prosedur/ awal module bisa diberi penjelasan yang lengkap sehingga programmer bisa lebih memahami program secara keseluruhan

Syntax : Dim varname[([subscripts])] [As type] Misalnya

Dim DasarPengenaanPajak as integerDim Tarif_Pajak(1 to 3) as integerDim Tarif_Pajak(3) as integerDim Pajak_Terutang

[([subscripts])] artinya jika kita mendeklarasikan array maka memakai kurung awal & akhir dan diisi jumlah array-nya, ingat bahwa VB memakai dasar 0 , jadi kalo (3) artinya ada 4 nilai (0-3), kalo (1 to 3) artinya 3 nilai

Kalo tidak diberi type datanya maka berarti adalah varian, varian adalah type data yang sangat flexible , bisa disi apa aja, string, number, boolean, dll namun speednya kurang dan boros memory

Page 52: Modul VBA

Type Data

Page 53: Modul VBA

Scope dari variableScope artinya jangkauan atau luas dari variable Procedure only, dideklarasikan didalam prosedur,

hanya bisa digunakan dan dikenali di dalam prosedur tersebut, begitu program keluar dari prosedure yang bersangkutan maka nilai variabel akan direset ke nilai awal

All procedure in a Module, bisa dipakai dan dikenali oleh semua prosedur didalam suatu module, dideklarasikan diluar prosedur dan diawal module

All Procedure in All Module, bisa digunakan oleh semua prosedur dalam file VBA bersangkutan. Dideklarasikan di awal module dan diberi prefik ‘Public’

Page 54: Modul VBA

Scope dari variable

Normalnya semua variabel akan direset ke angka awal deklarasi jika program/prosedure berakhir, jika kita ingin agar angka/nilai dalam variabel tidak hilang maka kita menambahkan “static” pada pendeklarasian variabel

Misal: Static intCounter as integer

(kata “Dim” diganti “Static”) Variabel static nilainya tidak akan direset kecuali

workbook ditutup dan dibuka kembali, selama workbook masih terbuka maka nilai dari variabel tidak akan hilang

Page 55: Modul VBA

How to naming variable Kita bisa menggunakan huruf dan nomor sebagai nama, tapi

karakter pertama haruslah huruf Tidak boleh ada spasi atau titik (“.”) Tidak boleh ada karakter #, $, %, &, @,^, *, ! Karakter lain seperti /,?,<,>,-,+ bisa digunakan tapi bisa

menimbulkan kebingungan karena merupakan operator jadi paling aman adalah hanya gunakan huruf,nomor dan underscore( _ )

Huruf besar sama huruf kecil dianggap sama, tapi biasakan untuk menggunakan huruf besar pada karakter pertama untuk lebih menguatkan arti

Tidak boleh menyamai fungsi yang sudah ada di excel misalnya SUM, AVERAGE,FIND, dll serta jangan menyamai nama sel misalnya “A1” atau “R1C1”

Jangan lebih dari 255 karakter Menggunakan prefik scope (public,private,static) serta prefik type

data (integer, single, boolean) Nama sebaiknya mencerminkan aksi/ tujuan dari variable misalnya:

intCounter, blnWorksheet_Open, mstrFilePath Jangan hanya bersifat umum seperti: yesno, xyz, var_01, var_o2.

Page 56: Modul VBA

Constant Constant/Konstanta adalah kebalikan dari variabel dimana variabel

nilainya berubah2 selama program berjalan maka constant nilainya fixed selama program berjalan

Konstanta digunakan jika dalam program dipakai nilai tertentu beberapa kali, misalnya kalimat “Direktorat Jenderal Pajak” atau tarif pajak 15% sering dipakai maka lebih efisien jika nilai2 diatas disimpan di konstanta daripada kita mengetik nilai tsb secara manual beberapa kali, selain untuk menghindari kesalahan juga membuat program lebih gampang dimengerti

Syintax : [Public | Private] Const constname [As type] = expression Public/private hanya boleh dipakai di module level declaration,

tidak boleh di dalam prosedur Contoh Public Const strDJP as string = “Direktorat Jenderal Pajak” Const sngTarif_Pajak as single = 0.15

Page 57: Modul VBA

Array Array adalah sekumpulan variabel dengan nama sama serta

type data sama Untuk merujuk ke data tertentu maka digunakan index, di

vb array adalah berbasis nol jadi jika ditulis data(5) berarti ada 6 nilai yaitu data(0), data(1),..,data(5) kecuali dideklarasikan dengan data(1 to 5) artinya ada 5 data

Syntax : Dim varname([subscripts]) [As type] Contoh : Dim strNama(1 to 100) as string Dim intSales() as integer Dim lngData(1 to 12, 1 to 100) as long Kalo array () artinya bisa diisi dengan berapapun jumlah

datanya array dinamis Array juga bisa multi dimensi, kalo contoh diatas maka

datanya ada 12x100=1200 data, dari lngData(1,1) sampat lngData(12,100)

Page 58: Modul VBA

Memasukkan data ke array

Bisa menggunakan statement For ..Next

Dim idx as integer

Dim strName(1 to 3) as string

For idx= 1 to 3

strName(idx)=inputbox(“isikan nama pegawai)

next

Memakai array function strName=Array(“unyil”, “usrok.”ucrit”)

Atau manual, satu per satu strName(1)=“Unyil”

strName(1)=“usrok”

strName(1)=“Ucrit”

Page 59: Modul VBA

Bab V. Working with Range Objects

Inti dari excel adalah cells yang diwakili oleh Object Range. Range meliputi satu cells ataupun sekelompok cells/ selection yang terdapat pada worksheet

Page 60: Modul VBA

Merujuk ke range Merujuk ke satu cell

Range(“A1”) Merujuk ke sekumpulan cells

Range(“A1:C100”) atau Range(“A1”,”C100”) Merujuk ke nama range

Range(“myrange”) Merujuk ke satu/lebih baris/satu kolom

Range(“c:c”)Range(“3:5”)

Contoh diatas mengasumsikan bahwa yang dirujuk adalah range yang ada di worksheet aktif. Untuk menunjuk ke workbook lain atau worksheet lainWorkbooks(“book1.xlsx”).Worksheets(“sheet1”).Range(“A1”)

Untuk merujuk lebih dari satu range, digunakan komaRange("A1:B8,D9:G16"), ingat koma ada di dalam tanda petik

2

Page 61: Modul VBA

Merujuk ke range memakai Cells property Cells disini merupakan property dari worksheet yang

akan merujuk ke cells Object Syntax

Worksheets(idx).cells(row,column) Untuk menunjuk ke sel “A1”

Worksheets(1).Cells(1,1) Ada satu Lagi Cells yang merupakan property dari range

object Syntax

Worksheets(idx).Range(idx).cells(row,column) Kalau disini maka argumen row dan column merujuk ke range

bukan ke worksheet Worksheets(1).cells(1,1) sel “A1” Worksheets(1).Range(“B10:C100”).cells(1,1) sel “B10”

Page 62: Modul VBA

Merujuk ke range memakai Offset property Offset merupakan property dari range object ,

yang akan merujuk ke cells lain dengan jarak rows dan column dari range awal Syntax

Range(idx).offset(rows,columns) Misal:

Range(“A1”).offset(2,3) cells “D4”

Rows/Columns bisa berisi angka positif, negatif, dan Nol, kalo positif berarti kebawah/kekanan, negatif berarti keatas/kekiri, nol berarti diamMisalRange(“E10”).offset(-2,3) cells “H8”Range(“E10”).offset(-2,0) cells “E8”

Page 63: Modul VBA

Some Useful Range Object Properties

Value property Text Property Count Property Address Property HasFormula Font Interior Formula NumberFormat

Page 64: Modul VBA

Value Property

Property ini bersifat read write artinya bisa untuk mengetahui nilai dari suatu sel (single sel , jika terdiri dari banyak sel maka akan error), atau mengubah nilai dari sel tersebut (berlaku untuk range tsb)

Misal: Msgbox Range(“A1:C10”).value Error Msgbox Range(“A1:C10”).Cells(1,1).value

success Range(“A1:C10”).value =6 mengubah semua

sel menjadi nilai 6

Page 65: Modul VBA

Text Property

Bersifat read only Menyajikan informasi yang terlihat

dilayar, misalnya di sel “A1” kita ketik 12.5 dan diberi format dollar dan 2 angka dibelakang koma maka

Range(“A1”).text $ 12.50 Tapi, Range(“A1”).value 12.5

Page 66: Modul VBA

Count property memberikan informasi berapa jumlah sel yang ada di range

Address memberikan informasi alamat dari range, dalam bentuk string, serta bentuk absolut

Hasformulamemberikan nilai yes/no (boolean) apakah suatu sel ada rumusnya atau tidak

Font Property menghasilkan font object yang memiliki property2 seperty bold, italic, fontsize, dll yang bisa dimanipulasi

Interior Property juga menghasilkan interior property berisi border,background,dll

Formula property menghasilkan string berisi formula dari sel bersangkutan

Number Format menghasilkan string berisi number format dari sel bersangkutan, juga bisa diubah nilainya (read write)

Page 67: Modul VBA

Some Useful Range Object Methods

Select methods akan memilih range yang bersangkutan, kalo range ada di worksheet non aktif maka akan error, oleh karena itu maka harus diaktifkan dulu

Worksheets(“sheet1”).range(“A1”).select

Code diatas pasti error maka diganti dng: Worksheets(“sheet1”).activate range(“A1”).select

Untuk memilih sel bisa dipakai goto methods dari application object, dimana tidak perlu mengaktifkan worksheet tujuan

Application.Goto Worksheets(“sheet1”).range(“A1”)

Page 68: Modul VBA

The Copy and Paste methods, contoh kode

Sub CopyRange() Range(“A1:A12”).Select Selection.Copy Range(“C1”).Select ActiveSheet.PasteEnd Sub

Copy adalah methods dari range namun paste adalah method dari worksheet, selection artinya range yang telah kita pilih dengan select methods

Code diatas bisa kita singkat dng kode berikut ini karena copy methods tidak memerlukan select method lebih dulu baik untuk copy dan paste-nya

Range(“A1:A12”).copy range(“C1”)

Page 69: Modul VBA

Clear Methodsmenghapus isi dan format dari cell

Delete methodsmenghapus cell dan shift cell disebelah bawahnya/kananya untuk mengisi cell yang hilang

Sort Methodsmensortir range sesuai urutan yang dikehendaki

Merge methodsmenggabungkan dua atau lebih range

PasteSpecial Methods paste value dari memory ke cell tujuan, bisa paste value, paste format, paste link, dll

Page 70: Modul VBA

Bab VI. Using VBA and Worksheet Functions

Function adalah suatu procedure yang melakukan prses dan menghasilkan suatu nilai/array

Fungsi bisa berasal dari VBA function Excel Function Custom/user definedfunction

Page 71: Modul VBA

VBA function

Page 72: Modul VBA
Page 73: Modul VBA
Page 74: Modul VBA
Page 75: Modul VBA

Using Excel Function Walaupun VBA telah memiliki function yang begitu banyak

namun kadang2 ada yang kurang lengkap menurut kita atau ada fungsi lain yang di excel dibuat secara lebih mudah, misalnya SUM, dng vba agak repot karena harus menjumlah angka satu persatu dng looping padahal dng fungsi excel SUM, begitu gampang

Semua fungsi yang biasa kita gunakan diexcel bisa diakses di VBA dengan application object

Syntaxnya adalah: “Application.worksheetfunction.” lalu disambung dengan fungsi excel misalnya sum,avg, max, dll

MisalnyaTotal = Application.WorksheetFunction.Sum(Range(“A1:A12”))

Kode diatas bisa disingkat menjadiTotal = WorksheetFunction.Sum(Range(“A1:A12”))Total = Application.Sum(Range(“A1:A12”))

Kalo diexcel untuk menggunakan rumus sum kita menggunakan mouse/keyboard untuk memilih range maka di VBA kita menggunakan object Range

Page 76: Modul VBA

Fungsi2 diexcel yang bisa dipakai, bisa dilihat di Object browser, caranya masuk ke VB editor, tekan F2 (atau dng menu view) cari di Classes WorksheetFunction, maka di sebelah kanannya akan muncul fungsi2 yang ada di excelSemua fungsi di excel akan tersedia kecuali di VBA juga ada fungsi yang sama

Page 77: Modul VBA

Bab VII. Controlling Program Flow and Making Decisions GoTo statement Jumps to a particular

statement If-Then structure Does something if something

else is true Select Case Does any of several things,

depending on something’s value For-Next loop Executes a series of statements

a specified number of times Do-While loop Does something as long as

something else remains true Do-Until loop Does something until something

else becomes true

Page 78: Modul VBA

GoTo statement GoTo Statement merupakan cara yang akan secara langsung

merubah aliran/flow dari program menuju baris kode tertentu yang ditandai dengan label (Nama diakhiri dengan tanda titik dua sebagai entry point)

Misal:Sub GoToDemo() UserName = InputBox(“Enter Your Name: “) If UserName <> “Bill Gates” Then GoTo WrongName MsgBox (“Welcome Bill...”) ‘ ...[More code here] ... Exit Sub

WrongName: MsgBox “Sorry. Only Bill Gates can run this.”End Sub

Goto Statement seharusnya tidak boleh dipakai dalam program kecuali untuk menangani error (seperti kode diatas) hal ini dikarenakan Goto akan membuat program menjadi tidak berstruktur yang akan menyebabkan program susah untuk dipahami/ dimodifikasi

Page 79: Modul VBA

If...Then...Else Statement Syntax:

If condition Then statements [Else elsestatements]Misal :If Time < 0.5 Then MsgBox “Good Morning” Else MsgBox “Good Afternoon”AtauIf Time < 0.5 Then MsgBox “Good Morning” Else MsgBox “Good Afternoon”End if

Jika lebih dari 2 option maka bisa memakai syntaxSub GreetMe5() Dim Msg As String If Time < 0.5 Then Msg = “Morning” ElseIf Time >= 0.5 And Time < 0.75 Then Msg = “Afternoon” Else Msg = “Evening” End If MsgBox “Good “ & MsgEnd Sub

Page 80: Modul VBA

Select Case Statement If Then berguna kalau jumlah option hanya 2 atau 3, kalau lebih dari itu akan membuat

program susah dipahami, untuk itu kita menggunakan Select Case Statement Syntax:

Select Case testexpression[Case expressionlist-n[statements-n]] . . .[Case Else[elsestatements]]End Select

Contoh:Sub ShowDiscount3()

Dim Quantity As IntegerDim Discount As DoubleQuantity = InputBox(“Enter Quantity: “)Select Case QuantityCase 0 To 24 Discount = 0.1Case 25 To 49 Discount = 0.15Case 50 To 74 Discount = 0.2Case Is >= 75 Discount = 0.25End Select

MsgBox “Discount: “ & DiscountEnd Sub

Page 81: Modul VBA

For..Next Statement Syntax:

For counter = start To end [Step stepval][statements][Exit For][statements]

Next [counter]

Contoh (mengisi 100 cell dng angka random)Sub FillRange()

Dim Count As LongFor Count = 1 To 100 ActiveCell.Offset(Count - 1, 0) = RndNext Count

End Sub

Page 82: Modul VBA

Do..Loop Statement Do..Loop statement digunakan untuk loop dimana kita tidak tahu

kapan selesainya / berapa kali looping Syntax:

Do [While|Until condition][statements]

[Exit Do][statements]

Loop

Misal: (Program ini akan menggandakan nilai cell, dan begitu cell kosong maka akan berhenti)

Sub DoWhileDemo()Do While ActiveCell.Value <> Empty ActiveCell.Value = ActiveCell.Value * 2 ActiveCell.Offset(1, 0).SelectLoop

End Sub

Code dengan Do Until..LoopSub DoUntilDemo()

Do Until IsEmpty(ActiveCell.Value) ActiveCell.Value = ActiveCell.Value * 2 ActiveCell.Offset(1, 0).SelectLoop

End Sub

Page 83: Modul VBA

Looping through a Collection Di VBA masih ada lagi looping yg sangat berguna yaitu Loop through a collection, kita

tahu bahwa object diexcel seperti cell memiliki collection yaitu cells(kumpulan beberapa cell), worksheet memiliki collection worksheets (semuanya diberi akhiran s jamak), jika kita ingin looping cells kita bisa memakai cara merujuk ke cell satu persatu via index mereka atau dng cara mudah via looping through colllection

Misal: program mengisi sekumpulan cells yang kita pilih dengan nilai urutDim baris as integer, kolom as integerFor baris=1 to selection.rows.count

for kolom=1 to selection.columns.countcounter=counter+1selection.cells(baris,kolom).value=counter

next kolomNext

Kalo menggunakan collection jauh lebih mudah

Dim sel as rangeFor each sel in selection.cells

Counter=counter+1Sel.value=counter

Next

Contoh lain: mendelete row 1 untuk setiap worksheet in workbook yang aktifSub DeleteRow1()

Dim WkSht As WorksheetFor Each WkSht In ActiveWorkbook.Worksheets WkSht.Rows(1).DeleteNext WkSht

End Sub

Page 84: Modul VBA

Bab VIII. Automatic Procedures and Events Ini merupakan salah satu cara untuk mengeksekusi/

menjalankan macro/sub procedure, yaitu lewat event-2 yang dimiliki oleh obyek2 yang ada pada excel

Contoh: A workbook is opened or closed. A window is activated. A worksheet is activated or deactivated. Data is entered into a cell or the cell is edited. A workbook is saved. A worksheet is calculated. An object, such as a button, is clicked. A particular key or key combination is pressed. A particular time of day occurs. An error occurs.

Page 85: Modul VBA

Membuat prosedur yang dijalankan setiap kali workbook dibuka

Buka VBE Pilih Workbook yang

diinginkan di project explorer

Pilih folder “ThisWorkbook” dan klik2x / klik kananView Code

Di Code Windows pilih “Workbook” di Dropdown yang sebelah kiri, di Dropdown yang kanan pilih “Open”

Secara otomatis akan dibuat sub prosedure dng judul workbook_open

Page 86: Modul VBA

Membuat prosedur yang dijalankan setiap kali workbook dibuka

Entry code berikut iniPrivate Sub Workbook_Open()

Dim Msg As String If Weekday(Now) = 6 Then Msg = "Today is Friday. Make sure

that you " Msg = Msg & "do your weekly

backup!" MsgBox Msg Else MsgBox "Friday is your Weekly

backup", vbCritical, "Weekly Backup"

End If

End Sub Save, Lalu reopen workbook, maka

akan keluar kotak dialog sesuai dengan apakah hari ini jumat/ bukan

Page 87: Modul VBA

The BeforeClose event for a workbookProgram ini akan menanyakan apakah backup file akan dibikin

Private Sub Workbook_BeforeClose(Cancel As Boolean)Dim Msg As StringDim Ans As IntegerDim FName As StringMsg = “Would you like to make a backup of this file?”Ans = MsgBox(Msg, vbYesNo)If Ans = vbYes Then

FName = “F:\BACKUP\” & ThisWorkbook.NameThisWorkbook.SaveCopyAs FName

End IfEnd Sub

Program ini akan mencegah orang menyimpan dng nama lain (Save As)

Private Sub Workbook_BeforeSave(ByVal SaveAsUI _As Boolean, Cancel As Boolean)If SaveAsUI Then MsgBox “You cannot save a copy of this workbook!” Cancel = TrueEnd If

End Sub

Page 88: Modul VBA

Program ini akan mencegah user untuk berpindah ke sheet Chart

Dim OldSheet As ObjectPrivate Sub Workbook_SheetDeactivate(ByVal Sh As Object)

Set OldSheet = ShEnd Sub

Private Sub Workbook_SheetActivate(ByVal Sh As Object)If TypeName(Sh) = “Chart” Then MsgBox “Sorry, you can’t activate any charts.” OldSheet.ActivateEnd If

End Sub

Program ini akan mengeluarkan dialog format angka jika sel yang diklik kanan berisi angka (cancel=true artinya shortcut menu tidak akan muncul)

Private Sub Worksheet_BeforeRightClick (ByVal Target As Excel.Range, Cancel As Boolean)

If IsNumeric(Target) And Not IsEmpty(Target) Then Application.Dialogs(xlDialogFormatNumber).Show Cancel = TrueEnd If

End Sub

Page 89: Modul VBA

Program ini akan mencegah user mengisi cell “A1” dengan non numeric

Private Sub Worksheet_Change(ByVal Target As Range)If Target.Address = “$A$1” Then If Not IsNumeric(Target) Then

MsgBox “Enter a number in cell A1.”Range(“A1”).ClearContentsRange(“A1”).Activate

End IfEnd If

End Sub

Program ini akan memberikan peringatan tiap jam 3:00

Sub SetAlarm()Application.OnTime 0.625, “DisplayAlarm”

End Sub

Sub DisplayAlarm()BeepMsgBox “Wake up. It’s time for your afternoon break!”

End Sub

Page 90: Modul VBA

Bab IX. Simple Dialog Boxes Kita Akan membahas :

MsgBox InputBox GetOpenFile GetSaveFile

Page 91: Modul VBA

MsgBox Function Syntax MsgBox(prompt[, buttons] [, title] [, helpfile, context])

Msgbox adalah suatu fungsi yang menghasilkan suatu nilai yaitu vbOk,vbCancel,vbRetry,dll tergantung tombol mana yang dipilih oleh user

Prompt berisi string/kalimat yang merupakan isi dari msgbox

Button merupakan tombol yang akan muncul di msgbox dialog

Title merupakan Caption/ Judul dari Dialogbox yang muncul

Helpfile & Context berhubungan dengan help yang telah disiapkan

Page 92: Modul VBA

Msgbox Function

Nilai Konstant pada button di msgbox

Return Value MsgBox Function

Page 93: Modul VBA

Contoh Code:Dim Msg, Style, Title, Help, Ctxt, Response, MyStringMsg = "Do you want to continue ?" ' Define message.Style = vbYesNo + vbCritical + vbDefaultButton2 ' Define buttons.Title = "MsgBox Demonstration" ' Define title.Help = "DEMO.HLP" ' Define Help file.Ctxt = 1000 ' Define topic context.

' Display message.Response = MsgBox(Msg, Style, Title, Help, Ctxt)If Response = vbYes Then ' User chose Yes. MyString = "Yes" ' Perform some action.Else ' User chose No. MyString = "No" ' Perform some action.End If

Karena Msgbox merupakan fungsi maka dapat dipakai tanpa melalui variable lebih duluSub GetAnswer2()

If MsgBox(“Continue?”, vbYesNo) = vbYes Then‘ ...[code if Yes is clicked]...Else‘ ...[code if Yes is not clicked]...End If

End Sub

Page 94: Modul VBA

The InputBox Function

InputBox berguna jika kita ingin mendapatkan input dari user berupa angka atau string

SyntaxInputBox(prompt[, title] [, default] [, xpos] [, ypos] [, helpfile,

context]) Default berisi angka yang sudah ditetapkan lebih dulu, jika

diabaikan maka InputBox akan kosong Xpos & ypos jika diabaikan maka InputBox akan persis

berada ditengah Jika user menekan cancel maka zero length string akan

dihasilkan (“”) Untuk mengetahui apakah return valuenya angka maka

digunakan fungsi “IsNumeric”

Page 95: Modul VBA

Contoh InputBoxProgram ini akan meminta user untuk memberikan info berapa sheet yang akan

ditambah, disini terlihat ada fungsi isnumeric yang berguna untuk menentukan apakah user memasukkan angka, trus return value “” jika user meng-cancel inputbox

Sub GetName2AddSheet()Dim Prompt As StringDim Caption As StringDim DefValue As IntegerDim NumSheets As StringPrompt = “How many sheets do you want to add?”Caption = “Tell me...”DefValue = 1NumSheets = InputBox(Prompt, Caption, DefValue)If NumSheets = “” Then Exit Sub ‘CanceledIf IsNumeric(NumSheets) Then

If NumSheets > 0 Then Sheets.Add Count:=NumSheetsElse MsgBox “Invalid number”

End If

End Sub

Page 96: Modul VBA

GetOpenFilename Method

Page 97: Modul VBA

Contoh Code Program ini akan menampilkan file open dialog dan akan muncul msgbox yang berisi nama

file yang dipilih

Sub GetImportFileName() Dim Finfo As String Dim FilterIndex As Integer Dim Title As String Dim FileName As Variant ' Set up list of file filters Finfo = "Text Files (*.txt),*.txt,Lotus Files (*.prn),*.prn,Comma Separated Files (*.csv),*.csv," & _ "ASCII Files (*.asc),*.asc,All Files (*.*),*.*" ' Display *.* by default FilterIndex = 5 ' Set the dialog box caption Title = "Select a File to Import""" ' Get the filename FileName = Application.GetOpenFilename(Finfo, _ FilterIndex, Title) ' Handle return info from dialog box If FileName = False Then MsgBox "No file was selected.""" Else MsgBox "You selected " & FileName End IfEnd Sub

Page 98: Modul VBA

GetSaveAsFilename Method, sama seperti GetOpenFilename hanya disini akan menampilkan dialog save

Untuk menampilkan dialog pemilihan folder dipakai fungsi

Application.FileDialog(msoFileDialogFolderPicker).show

Contoh Code:Sub GetAFolder() With Application.FileDialog(msoFileDialogFolderPicker) .InitialFileName = Application.DefaultFilePath & "\" .Title = "Please select a location for the backup" .Show If .SelectedItems.Count = 0 Then MsgBox “Canceled” Else MsgBox .SelectedItems(1) End If End WithEnd Sub

Page 99: Modul VBA

Displaying Excel’s Built-in Dialog Boxes Misalnya Goto dialog box, codenya:

Result=Application.Dialogs(xlDialogFormulaGoto).Show

Untuk melihat Built-In dialog2 yang lain maka masuk ke VBE, vieObject Browsercari Classes=XlBuiltInDialog

Page 100: Modul VBA

Bab X. UserForm Basics