19
1 Nizam © Excel in a nutshell Excel in a nutshell Nizam © Excel as object Excel as object Dalam Dalam graphical user interface, graphical user interface, aplikasi aplikasi dan dan bagian bagian-bagiannya bagiannya dikenal dikenal sebagai sebagai object object Object excel Object excel Excel Excel Workbook Workbook Worksheet Worksheet Range Range dalam dalam worksheet worksheet Listbox Listbox Chart sheet Chart sheet Chart Chart Dsb Dsb. Nizam © Object Object utama utama Workbooks Workbooks merupakan merupakan “folder folder” yang yang berisi berisi: Worksheets Worksheets Chart sheets Chart sheets Macro sheets (. Macro sheets (.xlm xlm obsolete) obsolete) Dialog sheets (obsolete) Dialog sheets (obsolete) Worksheets Worksheets merupakan merupakan lembar lembar kerja kerja 1 worksheet 1 worksheet terdiri terdiri dari dari 256 256 kolom kolom dan dan 65,536 65,536 baris baris (16,777,216 (16,777,216 sel sel !!) !!) setara setara dengan dengan 36,000 36,000 halaman halaman cetak cetak!!! !!! Nizam © Excel user interface Excel user interface Antarmuka Antarmuka excel excel bisa bisa dilakukan dilakukan dengan dengan beberapa beberapa cara cara: Menu Menu Dialog box Dialog box Toolbars Toolbars Drag Drag-and and-drop drop Keyboard shortcuts Keyboard shortcuts Nizam © Entry data Entry data Nilai Nilai (angka angka, , tanggal tanggal , , waktu waktu) Text Text Rumus Rumus Nilai Nilai logika logika (boolean boolean – true true-false) false) Beberapa Beberapa tips tips Mengisi Mengisi data data pada pada range: range: isikan isikan data data pada pada active cell, active cell, tekan tekan ctrl+Enter ctrl+Enter Mengcopy Mengcopy ke ke bawah bawah: drag : drag pojok pojok selection selection Mengcopy Mengcopy ke ke bawah bawah dgn dgn increment: drag increment: drag pojok pojok selection selection sambil sambil tekan tekan ctrl ctrl Untuk Untuk penulisan penulisan teks teks yang yang panjang panjang, , ganti ganti baris baris dengan dengan alt+enter alt+enter Untuk Untuk menulis menulis pecahan pecahan tulis tulis 0 < 0 <spasi spasi> > pecahan pecahan Tanggal Tanggal hari hari ini ini : ctrl+; : ctrl+; Jam Jam saat saat ini ini : : ctrl+shift ctrl+shift+; +; Nizam © Beberapa Beberapa kemampuan kemampuan excel excel Formatting Formatting Formulas Formulas Names Names Functions Functions Shapes Shapes Charts Charts Macros Macros Database access Database access filter filter

VBALengkap

Embed Size (px)

DESCRIPTION

vba

Citation preview

Page 1: VBALengkap

1

Nizam ©

Excel in a nutshellExcel in a nutshell

Nizam ©

Excel as objectExcel as objectDalamDalam graphical user interface, graphical user interface, aplikasiaplikasidandan bagianbagian--bagiannyabagiannya dikenaldikenal sebagaisebagaiobjectobjectObject excelObject excel•• ExcelExcel•• WorkbookWorkbook•• WorksheetWorksheet•• Range Range dalamdalam worksheetworksheet•• ListboxListbox•• Chart sheetChart sheet•• ChartChart•• DsbDsb..

Nizam ©

Object Object utamautamaWorkbooks Workbooks merupakanmerupakan ““folderfolder””yang yang berisiberisi::•• WorksheetsWorksheets•• Chart sheetsChart sheets•• Macro sheets (.Macro sheets (.xlmxlm obsolete)obsolete)•• Dialog sheets (obsolete)Dialog sheets (obsolete)

WorksheetsWorksheets merupakanmerupakan lembarlembarkerjakerja•• 1 worksheet 1 worksheet terdiriterdiri daridari 256 256 kolomkolom dandan

65,536 65,536 barisbaris (16,777,216 (16,777,216 selsel!!) !!) setarasetara dengandengan 36,000 36,000 halamanhalaman cetakcetak!!!!!!

Nizam ©

Excel user interfaceExcel user interface

AntarmukaAntarmuka excel excel bisabisa dilakukandilakukandengandengan beberapabeberapa caracara::•• MenuMenu•• Dialog boxDialog box•• ToolbarsToolbars•• DragDrag--andand--dropdrop•• Keyboard shortcutsKeyboard shortcuts

Nizam ©

Entry dataEntry dataNilaiNilai ((angkaangka, , tanggaltanggal, , waktuwaktu))TextTextRumusRumusNilaiNilai logikalogika ((booleanboolean –– truetrue--false)false)BeberapaBeberapa tipstips•• MengisiMengisi data data padapada range: range: isikanisikan data data padapada active cell, active cell,

tekantekan ctrl+Enterctrl+Enter•• MengcopyMengcopy keke bawahbawah: drag : drag pojokpojok selectionselection•• MengcopyMengcopy keke bawahbawah dgndgn increment: drag increment: drag pojokpojok

selection selection sambilsambil tekantekan ctrlctrl•• UntukUntuk penulisanpenulisan teksteks yang yang panjangpanjang, , gantiganti barisbaris dengandengan

alt+enteralt+enter•• UntukUntuk menulismenulis pecahanpecahan tulistulis 0 <0 <spasispasi> > pecahanpecahan•• TanggalTanggal harihari iniini: ctrl+;: ctrl+;•• Jam Jam saatsaat iniini: : ctrl+shiftctrl+shift+;+;

Nizam ©

BeberapaBeberapa kemampuankemampuan excelexcel

FormattingFormattingFormulasFormulasNamesNamesFunctionsFunctionsShapesShapesChartsChartsMacrosMacrosDatabase access Database access filterfilter

Page 2: VBALengkap

2

Nizam ©

Analysis toolsAnalysis tools

OutlineOutlineAutomatic subtotalsAutomatic subtotalsScenario managementScenario managementAnalysis Analysis toolpaktoolpakPivot tablePivot tableAuditingAuditingSolver Solver AddAdd--insins

Nizam ©

cellcell

Relative A1Relative A1Absolute $A$1Absolute $A$1row absolute A$1row absolute A$1Column absolute $A1Column absolute $A1Referencing other sheets/workbooksReferencing other sheets/workbooks=[data.xls]Sheet2[A2]+1=[data.xls]Sheet2[A2]+1ReferensiReferensi dengandengan namanama : insert: insertnamename createcreate

Nizam ©

VBA VBA -- Visual Basic for Visual Basic for ApplicationApplication

BahasaBahasa pemrogramanpemrograman untukuntukaplikasiaplikasi WindowsWindows

Nizam ©

BagianBagian 11

DasarDasar--dasardasar pemrogramanpemrograman VBAVBA

Nizam ©

ApaApa yang yang dibicarakandibicarakan??MengenalMengenal VBAVBAIDEIDEPemrogramanPemrograman berbasisberbasis objectobjectCara Cara membuatmembuat program VBAprogram VBAMakroMakroEditor program Editor program MenjalankanMenjalankan programprogramMembuatMembuat fungsisendirifungsisendiriMembuatMembuat prosedurprosedurMengaturMengatur editoreditorMelindungiMelindungi programprogram

Nizam ©

ApaApa dandan kenapakenapa VBAVBAMerupakanMerupakan bahasabahasa pemrogramanpemrograman bagibagisemuasemua aplikasiaplikasi Microsoft Office (Microsoft Office (ExelExel, , Word, Access, Word, Access, PowerpointPowerpoint) ) dandan beberapabeberapayang lain (Outlook, Visio, AutoCAD, yang lain (Outlook, Visio, AutoCAD, MapInfo, MapInfo, dsbdsb.).)DapatDapat berfungsiberfungsi sebagaisebagai macro macro atauataubahasabahasa pemrogramanpemrogramanMerupakanMerupakan bahasabahasa program program beorientasibeorientasiobject, object, semuasemua object office object office dapatdapat dengandenganmudahmudah dimanipulasidimanipulasi dengandengan VBAVBABelajarBelajar satusatu bahasabahasa dapatdapat daplikasikandaplikasikandalamdalam banyakbanyak aplikasiaplikasi WindowsWindows

Page 3: VBALengkap

3

Nizam ©

kenapakenapa

MendukungMendukung aplikasiaplikasi internet internet dandanintranetintranetMendukungMendukung ActiveX controlsActiveX controlsCode editor Code editor dengandengan bantuanbantuan yang yang lengkaplengkap dandan debuggerdebuggerForm building toolsForm building toolsObject browserObject browserDllDll yang yang memudahkanmemudahkan pembuatanpembuatanprogramprogram Nizam ©

IDE IDE –– integrated development environmentintegrated development environment

UntukUntuk menulismenulis/edit program VBA /edit program VBA digunakandigunakan IDEIDE

Nizam ©

Module window

Project explorer

Properties window

Procedure listObject list

Nizam ©

PrinsipPrinsip prmrogramanprmrograman berbasisberbasis objectobject

ObjectObject•• Workbook, worksheet, chart, cell, Workbook, worksheet, chart, cell, dsbdsb..

PropertiesProperties•• SetiapSetiap object object memilikimemiliki properties: color, properties: color,

font, italic, font, italic, dsbdsb..

Method & procedureMethod & procedure•• Cara/Cara/perintahperintah untukuntuk melakukanmelakukan

sesuatusesuatu: : pindahpindah worksheet, worksheet, pindahpindahbarisbaris, , dsbdsb..

Nizam ©

VBA programmingVBA programmingProgram Program dalamdalam VBA VBA disebutdisebut prosedurprosedur ((dandanfunction)function)TigaTiga jenisjenis prosedurprosedur•• Command macros Command macros mengotomasimengotomasi prosedurprosedur--

prosedurprosedur, , fungsifungsi--fungsifungsi yang yang adaada (built(built--in) in) dalamdalam aplikasiaplikasi, , memformatmemformat, , menyimpanmenyimpan, , dsbdsb..

•• UserUser--defined function (function procedure) defined function (function procedure) program yang program yang berisiberisi rumusrumus dandan perintahperintah yang yang kitakita susunsusun sendirisendiri

•• Property procedure Property procedure menunjukkanmenunjukkan atauataumengubahmengubah propertiproperti daridari suausuau object (class object (class module)module)

Nizam ©

Cara Cara membuatmembuat programprogram

DenganDengan merekammerekam macro (macro macro (macro recording)recording)DenganDengan menulismenulis program program dalamdalamIDE/VBA editorIDE/VBA editor

Page 4: VBALengkap

4

Nizam ©

MembuatMembuat dandan menjalankanmenjalankan macromacro

Tools Tools macro macro record macrorecord macroLakukanLakukan prosedurprosedur--prosedurprosedur dandanperubahanperubahan properties properties padapadaworksheetworksheetStop macro recordingStop macro recordingEdit macro Edit macro untukuntuk memberbaikimemberbaiki dandanmengubahmengubah hasilhasil rekamanrekamanMenjalankanMenjalankan::•• DenganDengan shortcut, shortcut, atauatau•• ToolsTools macromacro runrun pilihpilih namanama macromacro Nizam ©

MenulisMenulis programprogram

ToolsTools macromacro visualvisual basic editor basic editor atauatauClick Click tomboltombol VBE VBE PindahPindah daridari VBE VBE keke aplikasiaplikasialt+F11alt+F11TuliskanTuliskan program (function program (function atauatauprocedure)procedure)•• SubSub

BarisBaris programprogram

•• End subEnd sub

Nizam ©

FungsiFungsiFungsiFungsi adalahadalah rumusrumus yang yang mengolahmengolah argumenargumendandan mengembalikanmengembalikan hasilhasilStrukturStruktur fungsifungsiFunction Function NamaFungsi(argumen1, argumen2, NamaFungsi(argumen1, argumen2, ……))

[[PernyataanPernyataan/statement VBA]/statement VBA]NamaFungsiNamaFungsi = = hasilhasil yang yang dikembalikandikembalikan

End FunctionEnd Function

BagianbagianBagianbagian::•• Statement Statement FunctionFunction•• NamaNama fungsifungsi•• ArgumenArgumen fungsifungsi (parameter)(parameter)•• Statement VBA yang Statement VBA yang melakukanmelakukan hitunganhitungan•• HasilHasil yang yang dikembalikandikembalikan namanama fungsifungsi ==•• Statement Statement End FunctionEnd Function

Nizam ©

MembuatMembuat fungsifungsi

ContohContoh: : menghitungmenghitung sisisisi miring miring segitigasegitiga•• SisimiringSisimiring = sqr(x= sqr(x2 2 + y+ y22))Function Function sisimiring(xsisimiring(x, y) , y) ‘‘ namanama fungifungi

sisimiringsisimiring = = sqr(xsqr(x ^ 2 + y ^ 2) ^ 2 + y ^ 2) ‘‘ nilainilaihasilhasil

End FunctionEnd Function

PemakaianPemakaian: : isikanisikan padapada selsel dengandengannamanama formula, formula, misalmisal =sisimiring(3, =sisimiring(3, 4) 4) akanakan menghasilkanmenghasilkan 55

Nizam ©

MembuatMembuat fungsifungsiFunction akar(A, B, C)Function akar(A, B, C)If A <> 0 ThenIf A <> 0 Then

diskrim = B ^ 2 diskrim = B ^ 2 -- 4 * A * C4 * A * CIf diskrim > 0 ThenIf diskrim > 0 Then

akar = "dua akar riel"akar = "dua akar riel"ElseIf diskrim = 0 ThenElseIf diskrim = 0 Then

akar = akar = --B / (2 * A)B / (2 * A)ElseElse

akar = "akar imaginer"akar = "akar imaginer"End IfEnd If

ElseElseakar = "bukan persamaan kuadrat"akar = "bukan persamaan kuadrat"

End IfEnd IfEnd FunctionEnd Function

Nizam ©

prosedurprosedur

ProsedurProsedur adalahadalah unit program unit program dalamdalamVBA yang VBA yang merupakanmerupakan blokblok kodekodedalamdalam satusatu modulmodulStrukturStruktur sebuahsebuah prosedurprosedurSub Sub NamaProsedurNamaProsedur ((argumen1, argumen1, argumen2,argumen2,……))

[[pernyataanpernyataan/statement VBA]/statement VBA]End SubEnd Sub

Page 5: VBALengkap

5

Nizam ©

MembuatMembuat prosedurprosedur

ContohContoh: : perhitunganperhitungan bungabungaSub Sub EnterLoanDataEnterLoanData()()

Sub Sub InputDataPinjamanInputDataPinjaman()()Range("bunga").Value = 0.08Range("bunga").Value = 0.08Range("lama").Value = 10Range("lama").Value = 10Range("pinjaman").Value = 100000000Range("pinjaman").Value = 100000000Range("bayar").Value =Range("bayar").Value ="=PMT(bunga/12,lama*12,pinjaman)""=PMT(bunga/12,lama*12,pinjaman)"

End SubEnd Sub

PenggunaanPenggunaan: : toolstools macromacro pilihpilih namanamasub sub InputDataPinjamanInputDataPinjaman runrun

Nizam ©

MemanfaatkanMemanfaatkan intellisenseintellisenseSetiapSetiap ojectoject dalamdalam excel excel memilikimemilikiproperties properties dandan methods, methods, UntukUntuk memanipulasimemanipulasi obyekobyek dalamdalamprogram VBA, program VBA, kitakita bisabisa memanfaatkanmemanfaatkanintellisenseintellisenseCaranyaCaranya::•• TuliskanTuliskan namanama obyekobyek dilanjutkandilanjutkan dengandengan titiktitik

(.) (.) akanakan keluarkeluar properties properties daridari obyekobyektersebuttersebut

•• ContohContoh: application.: application.•• KalauKalau kitakita tekantekan <esc> <esc> intellisenseintellisense taktak akanakan

munculmuncul lagilagi untukuntuk obyekobyek yang yang samasama, , untukuntukmemunculkanmemunculkan lagilagi tekantekan Ctrl+JCtrl+J

Nizam ©

InformasiInformasi parameterparameter

SetiapSetiap fungsifungsi memilikimemiliki satu/beberapasatu/beberapaparameter, parameter parameter, parameter terebutterebut dapatdapatdimunculkandimunculkan dengandengan menuliskanmenuliskannamanama fungsifungsi dandan tandatanda kurungkurung bukabuka•• activecell.Formula=pmt(activecell.Formula=pmt( akanakan munculmuncul

argumenargumen untukuntuk fungsifungsi pmtpmt

Nizam ©

MenyimpanMenyimpan/export /export modulmodul

Dari project explorer, Dari project explorer, pilihpilih modulmodulyang yang akanakan disimpandisimpanPilihPilih File|ExportFile|Export FileFilePilihPilih lokasilokasi tempattempat menyimpanmenyimpan filefileBeriBeri namanama file.BASfile.BASTekanTekan SaveSave

Nizam ©

Mengimpor/ambilMengimpor/ambil modulmodul

Dari project explorerDari project explorerPilihPilih File|ImportFile|Import FileFilePilihPilih file file daridari lokasilokasi tempattempatmenyimpanmenyimpan file.BASfile.BASTekanTekan OpenOpen

Nizam ©

MengaturMengatur editoreditorCara Cara kerjakerja dandan tampilantampilan editor editor dapatdapatdiaturdiatur dengandengan menu menu Tools|OptionsTools|Options

Page 6: VBALengkap

6

Nizam ©

MelindungiMelindungi programprogram

Program Program dapatdapat dilindungidilindungi dengandenganpasswordpasswordTools|ProjectNameTools|ProjectName Properties Properties dialog box, dialog box, pilihpilih ProtectionProtectionIsikanIsikan password password untukuntuk melindungimelindungiprogramprogramOKOK

Nizam ©

BagianBagian 22

VariabelVariabel dandan konstantakonstanta

Nizam ©

ApaApa yang yang dibicarakandibicarakan??MendeklarasiMendeklarasi variabelvariabelMemahamiMemahami lingkuplingkup varaibelvaraibelMengirimMengirim variabelvariabel sbgsbg referensireferensi dandan sbgsbgargumenargumenVariabelVariabel statikstatikMenghindariMenghindari kesalahankesalahan variabelvariabelJenisJenis data data variabelvariabelArrayArrayKonstantaKonstanta

Nizam ©

DeklarasiDeklarasi variabelvariabelVariabelVariabel dalamdalam VBA VBA sebaiknyasebaiknyadideklarasikandideklarasikan untukuntuk menyatakanmenyatakan namanamadandan jenisjenis data (data type)data (data type)PendeklrasianPendeklrasian variabelvariabel menghindarimenghindarikesalahankesalahan dandan mengefisienkanmengefisienkan programprogramCaranyaCaranya: : dengandengan pernyataanpernyataan DimDimDim Dim namavarnamavar As As jenisdatajenisdata

NamavarNamavar harusharus dimulaidimulai dengandengan hurufhuruf, max , max 255 255 karakterkarakter, , tidaktidak mengandungmengandung spasispasidandan .!@#$%&.!@#$%&

Nizam ©

contohcontoh

Function Function GrossMarginGrossMargin()()‘‘ deklarasideklarasi variabelvariabelDim Dim totalSalestotalSalesDim Dim totalExpensestotalExpenses‘‘programprogramtotalSalestotalSales = = Application.Sum(Range(Application.Sum(Range(““SalesSales””))))totalExpensestotalExpenses = = Application.Sum(Range(Application.Sum(Range(““ExpensesExpenses””))))GrossMarginGrossMargin=(=(totalSalestotalSales ––totalExpenses)/totalSalestotalExpenses)/totalSales

End FunctionEnd FunctionNizam ©

LingkupLingkup/scope /scope variabelvariabel

DalamDalam VBA VBA lingkuplingkup variabelvariabelLingkupLingkup prosedurprosedurLingkupLingkup modulmodulLingkupLingkup publikpublik

Page 7: VBALengkap

7

Nizam ©

LingkupLingkup prosedurprosedurVariabelVariabel hanyahanya bisabisa diaksesdiakses oleholeh pernyataanpernyataan--pernyataanpernyataandalamdalam prosedurprosedur yang yang samasamaSub Procedure1()Sub Procedure1()

Dim Dim pesanpesan‘‘ semuasemua pernyataanpernyataan didi dalamdalam prosedurprosedur iniini‘‘ dapatdapat mengaksesmengakses variabelvariabel ‘‘pesanpesan’’pesanpesan = = ““ SayaSaya dalamdalam lingkuplingkup””MsgBoxMsgBox pesanpesan

End SubEnd SubSub Procedure2()Sub Procedure2()

‘‘ pernyataanpernyataan didi dalamdalam prosedurprosedur iniini‘‘ taktak dapatdapat mengaksesmengakses variabelvariabel ‘‘pesanpesan’’MsgBoxMsgBox pesanpesan ‘‘ variabelvariabel pesanpesan taktak dikenaldikenal dalamdalam

prosedurprosedur iniiniEnd SubEnd Sub

Nizam ©

DeklarasiDeklarasi implisitimplisit dandan eksplisiteksplisitPadaPada contohcontoh 2, 2, variabelvariabel pesanpesan sebetulnyasebetulnyataktak dikenaldikenal, , tetapitetapi ketikaketika dijalankandijalankan tetaptetapmemberimemberi hasilhasil, , dalamdalam halhal iniini <blank>. <blank>. IniInidikarenakandikarenakan VBA VBA mengenalmengenal deklarasideklarasiimplisitimplisit ((semuasemua variabelvariabel otomatisotomatis diberidiberihargaharga <blank>, <blank>, meskimeski taktak dikenaldikenal))KondisiKondisi semacamsemacam iniini kurangkurang baikbaik dalamdalampemrogramanpemrograman, , sebaiknyasebaiknya dinyatakandinyatakanbahwabahwa semuasemua variabelvariabel harusharusdideklarasikandideklarasikan agar agar taktak terjaditerjadi kesalahankesalahanUntukUntuk menghindarimenghindari•• Option ExplicitOption Explicit

Nizam ©

LingkupLingkup modulmodul

Agar Agar variabelvariabel dapatdapat diaksesdiakses oleholehbeberapabeberapa prosedurprosedur harusharus dideklarasidideklarasisebelum/disebelum/di luarluar prosedurprosedur--prosedurproseduryang yang menggunakanmenggunakan variabelvariabel tersebuttersebut

Nizam ©

contohcontohSub CalcMargins1()Sub CalcMargins1()

Range("GrossMarg").Value = GrossMarginCalcRange("GrossMarg").Value = GrossMarginCalcRange("NetMarg").Value = Range("NetMarg").Value =

NetMarginCalc(Range("FixedCosts").Value)NetMarginCalc(Range("FixedCosts").Value)End SubEnd SubFunction GrossMarginCalc()Function GrossMarginCalc()

Dim totSalesDim totSalesDim totExpensesDim totExpensestotSales = Application.Sum(Range("Sales"))totSales = Application.Sum(Range("Sales"))totExpenses = Application.Sum(Range("Expenses"))totExpenses = Application.Sum(Range("Expenses"))GrossMarginCalc = (totSales GrossMarginCalc = (totSales -- totExpenses) / totExpenses) /

totSalestotSalesEnd FunctionEnd FunctionFunction NetMarginCalc(fixedCosts)Function NetMarginCalc(fixedCosts)

Dim totSalesDim totSalesDim totExpensesDim totExpensestotSales = Application.Sum(Range("Sales"))totSales = Application.Sum(Range("Sales"))totExpenses = Application.Sum(Range("Expenses"))totExpenses = Application.Sum(Range("Expenses"))NetMarginCalc = (totSales NetMarginCalc = (totSales -- totExpenses totExpenses --

fixedCosts) fixedCosts) __ totSalestotSalesEnd FunctionEnd Function

Dim totSales2Dim totSales2Dim totExpenses2Dim totExpenses2Sub CalcMargins2()Sub CalcMargins2()

Range("GrossMarg").Value = GrossMarginCalc2Range("GrossMarg").Value = GrossMarginCalc2Range("NetMarg").Value = Range("NetMarg").Value =

NetMarginCalc2(Range("FixedCosts").Value)NetMarginCalc2(Range("FixedCosts").Value)End SubEnd SubFunction GrossMarginCalc2()Function GrossMarginCalc2()

totSales2 = Application.Sum(Range("Sales"))totSales2 = Application.Sum(Range("Sales"))totExpenses2 = totExpenses2 =

Application.Sum(Range("Expenses"))Application.Sum(Range("Expenses"))GrossMarginCalc2 = (totSales2 GrossMarginCalc2 = (totSales2 -- totExpenses2) / totExpenses2) /

totSales2totSales2End FunctionEnd FunctionFunction NetMarginCalc2(fixedCosts)Function NetMarginCalc2(fixedCosts)

NetMarginCalc2 = (totSales2 NetMarginCalc2 = (totSales2 -- totExpenses2 totExpenses2 __-- fixedCosts2) / totSales2fixedCosts2) / totSales2

End FunctionEnd Function

Nizam ©

LingkupLingkup publikpublik

KadangKadang kitakita menginginkanmenginginkan semuasemuamodulmodul dalamdalam proyekproyek kitakita dapatdapatmengaksesmengakses variabelvariabel lingkuplingkup publikpublikCaranyaCaranya: : deklarasikandeklarasikan dengandengan

public public namavariabelnamavariabelUntukUntuk menggantikanmenggantikan dim dim

namavariabelnamavariabel

Nizam ©

MengirimMengirim argumenargumen variabelvariabelBilaBila program program terdiriterdiri daridari banyakbanyak prosedurprosedur, , mendeklarasikanmendeklarasikan variabelvariabel dalamdalam lingkuplingkupmodulmodul dapatdapat berbahayaberbahaya, , karenakarena nilainilaivariabelvariabel dapatdapat diubahdiubah oleholeh setiapsetiap prosedurproseduryang yang mengaksesmengakses variabelvariabel tersebuttersebut atauatauvariabelvariabel yang yang samasama dideklarasikandideklarasikanberbedaberbeda dalamdalam prosedurprosedur lainlainUntukUntuk menghindarimenghindari kesalahankesalahan semacamsemacamituitu, , variabelvariabel dapatdapat dikirimdikirim daridari satusatuprosedurprosedur keke yang lain yang lain sebagaisebagai argumenargumenPengirimanPengiriman argumenargumen variabelvariabel dapatdapatberdasarberdasar referensireferensi atauatau berdasarberdasar nilainilaivariabelvariabel

Page 8: VBALengkap

8

Nizam ©

MengirimMengirim variabelvariabel berdasarberdasar referensireferensi

ContohContoh::Sub procedure3()Sub procedure3()

Dim Dim pesanpesanpesanpesan = "Pesan asli!"= "Pesan asli!"procedure4 procedure4 pesanpesanMsgBox MsgBox pesanpesan

End SubEnd SubSub procedure4(Sub procedure4(kirimankiriman))

MsgBox MsgBox kirimankirimankirimankiriman = "pesan telah sampai!"= "pesan telah sampai!"

End SubEnd SubBilaBila procedure3 procedure3 dijalankandijalankan, , mulamula--mulamula pesanpesan berisiberisi ““PesanPesanasliasli!!”” kemudiankemudian berisiberisi ““pesanpesan telahtelah sampaisampai!!””

Nizam ©

MengirimMengirim variabelvariabel berdasarberdasar nilainilaiContohContoh::

Sub procedure5()Sub procedure5()Dim pesanDim pesanpesan = "Pesan asli!"pesan = "Pesan asli!"procedure6 pesanprocedure6 pesanMsgBox pesanMsgBox pesan

End SubEnd SubSub procedure6(ByVal pesan)Sub procedure6(ByVal pesan)

MsgBox pesanMsgBox pesanpesan = "terimakasih atas kirimannya!"pesan = "terimakasih atas kirimannya!"

End SubEnd SubBilaBila procedure5 procedure5 dijalankandijalankan, , variabelvariabel pesanpesan akanakan tetaptetapberisiberisi ““PesanPesan asliasli!!”” karenakarena yang yang dikirimdikirim hanyahanya nilainyanilainya((ByValByVal))

Nizam ©

VariabelVariabel statisstatis

DalamDalam VBA, VBA, variabelvariabel dalamdalam prosedurprosedursetelahsetelah digunakandigunakan nilainyanilainya akanakandihapusdihapus; ; ketikaketika prosedurprosedur dipanggildipanggillagilagi, , akanakan diisidiisi/ / hitunghitung lagilagiBilaBila inginingin nilainilai variabelvariabel taktak diubahdiubahbisabisa dipakaidipakai variabelvariabel statisstatis (static (static variable)variable)

Nizam ©

ContohContoh variabelvariabel statikstatikSub tesStatik()Sub tesStatik()

ProsedurStatikProsedurStatikProsedurStatikProsedurStatik

End SubEnd SubSub ProsedurStatik()Sub ProsedurStatik()

Static varStatikStatic varStatikDim varRegulerDim varReguler

varStatik = varStatik + 5varStatik = varStatik + 5varReguler = varReguler + 5varReguler = varReguler + 5MsgBox "varStatik = " & varStatik & " dan varReguler = " & MsgBox "varStatik = " & varStatik & " dan varReguler = " & varRegulervarReguler

End SubEnd SubSaatSaat dijalankandijalankan nilainilai varStatikvarStatik mulamula--mulamula 5, 5, lalulalu 10, 10, sedangkansedangkan varRegulervarReguler tetaptetap 55

Nizam ©

MenghindariMenghindari kesalahankesalahan variabelvariabelKadangKadang kitakita salahsalah mengetikmengetik namanamavariabelvariabel, , kesalahankesalahan iniini paling paling seringseringterjaditerjadi padapada pembuatanpembuatan program yang program yang besarbesarUntukUntuk menghidarinyamenghidarinya, , gunakangunakan perintahperintahexplicit, explicit, makamaka VBA VBA akanakan memberimemberi pesarpesarerror error bilabila ketemuketemu variabelvariabel barubaru yang yang belumbelum dideklarasikandideklarasikanCaranyaCaranya::•• DenganDengan mendeklarasikanmendeklarasikan didi bagianbagian atasatas modulmodul

Option ExplicitOption Explicit•• PilihPilih Tools|OptionTools|Option modulmodul general, general,

pilih/contrengpilih/contreng Require Variable DeclarationRequire Variable DeclarationNizam ©

JenisJenis data data variabelvariabelVBA VBA secarasecara otomatisotomatis memberimemberi jenisjenis data data variant (22 byte) variant (22 byte) untukuntuk setiapsetiap variabelvariabelyang yang dideklarasikandideklarasikan tanpatanpa diberidiberi jenisjenisdatadataUntukUntuk menghematmenghemat memorimemori dandanmenambahmenambah efisiensiefisiensi program program jenisjenis data data sebaiknyasebaiknya dinyatakandinyatakan padapada saatsaat deklarasideklarasivariabelvariabelCara:Cara:•• Dim Dim namaVariabelnamaVariabel As As JenisDataJenisDataContohContoh::•• Dim Dim katakata As StringAs String•• Dim Dim noMhsnoMhs As IntegerAs Integer

Page 9: VBALengkap

9

Nizam ©

JenisJenis data data variabelvariabel

DapatDapat untukuntuk sembarangsembarang jenisjenis datadata22 bytes + 22 bytes + 1 byte per 1 byte per charchar

Variant Variant (string)(string)

DapatDapat untukuntuk sembarangsembarang jenisjenis datadata16 byte16 byteVariantVariant

UntukUntuk teksteks, , dapatdapat sampaisampai 64KByte64KByte$$1 byte per 1 byte per charchar

StringString

BilBil pecahanpecahan presisipresisi tunggaltunggal!!4 bytes4 bytesSingleSingle

ReferensiReferensi obyekobyek4 bytes4 bytesObjectObject

BilanganBilangan cacahcacah besarbesar --2,147,483,648 2,147,483,648 sampaisampai2,147,483,64872,147,483,6487

&&4 bytes4 bytesLongLong

UntukUntuk bilbil cacahcacah antaraantara --32,768 32,768 sampaisampai 32,76732,767%%2 bytes2 bytesIntegerInteger

UntukUntuk tanggaltanggal, , antaraantara 1 Jan 1000 1 Jan 1000 hinggahingga 31 31 DesemberDesember 99999999

#date##date#8 bytes8 bytesDateDate

PressiPressi gandaganda, , bilanganbilangan negatifnegatif --1.79769313486232E308 1.79769313486232E308 hinggahingga --4.9406564581247E4.9406564581247E--324; 324; bilanganbilangan positifpositif daridari4.9406564581247E4.9406564581247E--324 324 hinggahingga1.79769313486232E308 1.79769313486232E308

##8 bytes8 bytesDoubleDouble

UntukUntuk matamata uanguang, , nilainilai antaraantara --922,337,203,685,477.5808 922,337,203,685,477.5808 hinggahingga922,337,203,685,477.5808 922,337,203,685,477.5808

@@8 bytes8 bytesCurrencyCurrency

NilaiNilai 0 0 sampaisampai 2552551 byte1 byteByteByte

True & falseTrue & false2 bytes2 bytesBooleanBoolean

CatatanCatatanlambanglambangUkuranUkuranJenisJenis

Nizam ©

default default jenisjenis datadataKita Kita dapatdapat menyatakanmenyatakan jenisjenis data defaultdata defaultContohContoh::DefIntDefInt II--NNBerartiBerarti semuasemua variabelvariabel yang yang mulaimulai dengandengan hurufhuruf

I I hinggahingga N (N (kapitalkapital) ) merupakanmerupakan integeintegeKeywords:Keywords:•• DefBoolDefBool DefDblDefDbl•• DefByteDefByte DefDateDefDate•• DefIntDefInt DefStrDefStr•• DefLngDefLng DefObjDefObj•• DefSngDefSng DefVarDefVar

Nizam ©

UserUser--defined data typesdefined data typesKita Kita dapatdapat mendefinisikanmendefinisikan jenisjenis data data sendirisendiriContohContoh::Type Type MahasiswaMahasiswa

namanama As StringAs Stringnomhsnomhs As IntegerAs Integerangkatanangkatan As IntegerAs IntegertglLhrtglLhr As DateAs Date

End TypeEnd TypeMahasiswa.namaMahasiswa.nama = = ““Ahmad Ahmad MusaMusa””Mahasiswa.nomhsMahasiswa.nomhs = 22718= 22718Mahasiswa.angkatanMahasiswa.angkatan = 2002= 2002Mahasiswa.tglLhrMahasiswa.tglLhr = #01/01/1985#= #01/01/1985#

Nizam ©

VariabelVariabel arrayarrayVariabelVariabel matriksmatriks dandan vektorvektor dapatdapatdideklarasikandideklarasikan dengandengan variabelvariabel arrayarrayCara:Cara:

Dim mhs(200) As StringDim mhs(200) As String

mhs(0) = mhs(0) = ““BambangBambang YuwonoYuwono””mhs(100) = mhs(100) = ““BanowatiBanowati IpitIpit””

CatatanCatatan: : bisabisa Option Base 1 Option Base 1 mulaimulai daridarilariklarik 11

AtauAtau Dim vektor(50 to 100) As DoubleDim vektor(50 to 100) As DoubleDim matriks(1 to 50, 1 to 20)Dim matriks(1 to 50, 1 to 20)

Nizam ©

Array Array dinamisdinamisBilaBila ukuranukuran array array belumbelum diketahuidiketahui, , bisabisadideklarasikandideklarasikan sebagaisebagai array array dinamisdinamisBilaBila dimensinyadimensinya diketahuidiketahui bisabisa dinyatakandinyatakankemudiankemudianDim Dim myArraymyArray() As Double() As Double……ReDimReDim myArray(105)myArray(105)ReDimReDim akanakan meme--reinisialisasireinisialisasi nilainilai variabelvariabel dalamdalamarray array tersebuttersebut, , bilabila nilainilai variabelvariabel inginingin taktak didi--reinisialisasireinisialisasi::ReDimReDim Preserve myArray(105)Preserve myArray(105)DimensiDimensi array array bisabisa diketahuidiketahui dengandengan

LBound(namaArrayLBound(namaArray) ) indeksindeks bawahbawahUBound(namaArrayUBound(namaArray) ) indeksindeks atasatas Nizam ©

contohcontoh

Sub Sub PerformCalculationsPerformCalculations()()

Dim Dim calcValcalcVal() As Double, () As Double, totValtotVal as Integeras Integer......

totValtotVal = = GetTotalValueGetTotalValue()()ReDimReDim calcVal(totValcalcVal(totVal))

..

..End SubEnd Sub

Page 10: VBALengkap

10

Nizam ©

konstantakonstantaKonstantaKonstanta builtbuilt--inin adaada didi dalamdalam Excel Excel untukuntuk properties properties dandan methods methods berbagiberbagiobjectsobjectsContohContoh: : ActiveWIndow.WindowStateActiveWIndow.WindowState==xlMaximizedxlMaximizedUserUser--defined constantsdefined constantsPublic|PrivatePublic|Private Const Const NamaKonstantaNamaKonstanta [ As Type] = expression[ As Type] = expression

ContohContoh::Public Const Public Const gravitasigravitasi As Single As Single = 9.81= 9.81

Nizam ©

BagianBagian 33

EkspresiEkspresi VBAVBA

Nizam ©

ApaApa yang yang dibicarakandibicarakan??

StrukturStruktur ekspresiekspresiOperator VBAOperator VBABekerjaBekerja dengandengan ekspresiekspresi numeriknumerikBekerjaBekerja dengandengan ekspresiekspresi textex/string/stringBekerjaBekerja dengandengan ekspresiekspresi logikalogikaBekerjaBekerja dengandengan ekspresiekspresi tanggaltanggalformatformat

Nizam ©

StrukturStruktur ekspresiekspresi VBAVBA

VariabelVariabel = = statemenstatemen tentangtentang variabelvariabel

contohcontoh: : energy = mass * (energy = mass * (speedOfLightspeedOfLight ^ 2)^ 2)operand <operand <asignmentasignment> operand & > operand &

operatoroperatorOperand Operand harusharus menggunakanmenggunakan jenisjenis variabelvariabel

yang yang kompatibelkompatibelOperator Operator harusharus sesuaisesuai dengandengan jenisjenis datadata

Nizam ©

Operator VBAOperator VBAAritmetikAritmetik++ tambahtambah/plus/plus-- kurangkurang/minus/minus-- negasinegasi** kalikali// bagibagi\\ pembagianpembagian integerinteger^̂ pangkatpangkatModMod modulusmodulus 10 Mod 5 = 010 Mod 5 = 0KonkatenasiKonkatenasi untukuntuk jenisjenis data stringdata string““SoftSoft”” & & ““wareware””

Nizam ©

Operator VBAOperator VBAPembandingPembanding menghasilkanmenghasilkan nilainilai True True atauatau FalseFalse== samasama dengandengan 10=5 10=5 falsefalse>> LebihLebih besarbesar daridari< < LebihLebih kecilkecil daridari>=>= LebihLebih besarbesar atauatau samasama dengandengan<=<= LebihLebih kecilkecil atauatau samasama dengandengan<><> TidakTidak samasama dengandenganLikeLike miripmirip Jo?nJo?n Like John Like John TrueTrue

Page 11: VBALengkap

11

Nizam ©

Operator Operator logikalogikaOperator Operator logikalogika menghasilkanmenghasilkan nilainilai True True atauatauFalseFalseAndAnd e1 And e2e1 And e2 T if both trueT if both trueEqvEqv e1 e1 EqvEqv e2e2 T if both T or both FT if both T or both FImpImp e1 Imp e2e1 Imp e2 F if e1 T and e2 FF if e1 T and e2 FOrOr e1 Or e2e1 Or e2 T if at least one is TT if at least one is TXorXor e1 e1 XorXor e2e2 F if both T or both FF if both T or both FNotNot NotNot exprexpr T if T if exprexpr FF

HierarkiHierarki: ^; (: ^; (negasinegasi) ; * ) ; * dandan /; /; \\; Mod; + ; Mod; + dandan --; ; &; comparison; Logical&; comparison; Logical

Nizam ©

FungsiFungsi matematikmatematikFungsiFungsi matematikamatematika dasardasar::•• Abs(xAbs(x))•• Atn(xAtn(x))•• Cos(xCos(x))•• Exp(xExp(x))•• Fix(xFix(x))•• Hex(xHex(x))•• Hex$(xHex$(x))•• Int(xInt(x))•• Log(xLog(x))•• Oct(xOct(x))•• Oct$(xOct$(x))•• Rnd(xRnd(x))•• Sgn(xSgn(x))•• Sin(xSin(x))•• Sqr(xSqr(x))•• Tan(xTan(x))

Nizam ©

FungsiFungsi finansialfinansial

DepresiasiDepresiasi sumsum--ofof--year digits year digits suatusuatu asetasetSYD(costSYD(cost, salvage, life, period), salvage, life, period)

DepresiasiDepresiasi garisgaris luruslurus suatusuatu asetasetSLN(costSLN(cost, salvage, life), salvage, life)

BungaBunga periodikperiodik pinjamanpinjaman atauatau investasiinvestasiRate(nperRate(nper, pmt, , pmt, pvpv, fv, type, guess), fv, type, guess)

NilaiNilai sekarangsekarang sejumlahsejumlah investasiinvestasiPV(ratePV(rate, , npernper, pmt, fv, type), pmt, fv, type)

PembayaranPembayaran pokokpokok pinjamanpinjaman untukuntuk masamasatertentutertentu

PPmt(ratePPmt(rate, per, , per, npernper, , pvpv, fv, type), fv, type)

PembayaranPembayaran periodikperiodik sejumlahsejumlah pinjamanpinjaman atauatauinvestasiinvestasi

Pmt(rate,nperPmt(rate,nper, , pvpv, fv, type), fv, type)

NettNett present value present value serangkaianserangkaian investasiinvestasiNPV(rateNPV(rate, value1, value2,, value1, value2,……))

JumlahJumlah periodeperiode investasiinvestasi atauatau pinjamanpinjamanNPer(rateNPer(rate, pmt, p, fv, type), pmt, p, fv, type)

IRR yang IRR yang dimodifikasidimodifikasi untukuntuk cash flow cash flow periodikperiodikMIRR(valuesMIRR(values, , finance_ratefinance_rate, , reinvest_ratereinvest_rate))

NilaiNilai internal rate of return internal rate of return serangkaianserangkaian cashcash--flowsflows

IRR(valuesIRR(values, guess), guess)

PembayaranPembayaran bungabunga untukuntuk masamasa pinjamanpinjamantertentutertentu

IPmt(rate,per,nperIPmt(rate,per,nper, , pvpv, fv, type), fv, type)

MenghitungMenghitung nilainilai masamasa depandepan daridari investasiinvestasi atauataupinjamanpinjaman

FV(rateFV(rate, , npernper, pmt, , pmt, pvpv, type), type)

MenghitungMenghitung depresiasidepresiasi asetaset dengandengan metodemetodedouble declining balancedouble declining balance

DDB(costDDB(cost, salvage, life, period, , salvage, life, period, factor)factor)

Nizam ©

FungsiFungsi stringstring

DstDst..

karakterkarakter sepanjangsepanjang length length daridari string string mulaimulai startstartMid(stringMid(string, start, length), start, length)

MenghilangkanMenghilangkan spasispasiLTrim(stringLTrim(string))

PanjangPanjang karakterkarakterLen(stringLen(string))

PosisiPosisi paling paling kirikiri daridari string string sbgsbg stringstringLeft$(stringLeft$(string, length), length)

PosisiPosisi paling paling kirikiri daridari string string sbgsbg varianvarianLeft(stringLeft(string, length), length)

MengubahMengubah keke hurufhuruf kecilkecil sbgsbg stringstringLCase$(stringLCase$(string))

MengubahMengubah keke hurufhuruf kecilkecil sbgsbg varianvarianLCase(stringLCase(string))

PosisiPosisi byte byte kejadiankejadian string1 string1 dalamdalam string2 string2 dihitungdihitung daridari startstart

InStrB(startInStrB(start, string1, string2), string1, string2)

PosisiPosisi karakterkarakter kejadiankejadian string1 string1 dalamdalam string2 string2 dihitungdihitung daridari startstart

InStr(starInStr(star, string1, string2), string1, string2)

KonversiKonversi expression expression keke nilainilai stringstringCStr(expressionCStr(expression))

KarakterKarakter ((sebagaisebagai string) string) untukuntuk kodekode ANSI ANSI charcodecharcode

Chr$(charcodeChr$(charcode))

KarakterKarakter ((sbgsbg varianvarian) ) untukuntuk kodekode ANSI ANSI charcodecharcodeChr(charcodeChr(charcode))

KarakterKarakter ANSI ANSI hurufhuruf pertamapertama stringstringASC(stringASC(string))

Nizam ©

BekerjaBekerja dengandengan ekspresiekspresi logikalogikaOperator AndOperator And•• Expr1 And Expr2Expr1 And Expr2 T T bilabila keduanyakeduanya TT

Operator OrOperator Or•• Expr1 Or Expr2 Expr1 Or Expr2 T T bilabila salahsalah satusatu TT

Operator Operator XOrXOr•• Expr1 Expr1 XOrXOr Expr2 Expr2 T T bilabila satusatu T T dandan lainnyalainnya FF

Operator Operator EqvEqv•• Expr1 Expr1 EqvEqv Expr2 Expr2 T T bilabila keduanyakeduanya T T atauatau

keuanyakeuanya FF

Operator Imp (Operator Imp (ImplikasiImplikasi))•• Expr1 Imp Expr2 Expr1 Imp Expr2 T T bilabila Expr2 T Expr2 T atauatau keduanyakeduanya

FF Nizam ©

BekerjaBekerja dengandengan tanggaltanggalTanggalTanggal dalamdalam VBA VBA disimpandisimpan dalamdalambentukbentuk rangkaianrangkaian angkaangka, , dengandengan 31 31 DesemberDesember 1899 1899 sebagaisebagai awalawal((sembarangsembarang) ) sehinggasehingga 1 1 JanuariJanuari 1900 1900 adalahadalah 1; 366 1; 366 adalahadalah 31 31 DesemberDesember 1900; 1900; 37,980 37,980 adalahadalah 25 25 DesemberDesember 2003; 2003; dstdst..SaatSaat (jam, (jam, menitmenit, , detikdetik) ) dinyatakandinyatakan dalamdalampecahanpecahan, , dengandengan 0 0 adalahadalah tengahtengah malammalam; ; 0.5 0.5 adalahadalah tengahtengah harihari

Page 12: VBALengkap

12

Nizam ©

Format Format UntukUntuk memformatmemformat angkaangka/string yang /string yang munculmuncul bisabisa digunakandigunakan perintahperintahFormat(expresiFormat(expresi, format), format)ContohContoh: : Format(PemasukanFormat(Pemasukan ––

Pengeluaran,Pengeluaran,””currencycurrency””))Format(NowFormat(Now, , ““medium timemedium time””))Format(NoMhsFormat(NoMhs, , ““00000/TS00000/TS””))

Nizam ©

BagianBagian 44

BekerjaBekerja dengandengan ObjectsObjects

Nizam ©

kajiankajianPengertianPengertian ObjectObjectHirakiHiraki objectobjectBekerjaBekerja dengandengan propertiproperti objectobjectBekerjaBekerja dengandengan metodemetode objectobjectMenanganiMenangani kejadiankejadian objectobjectBekerjaBekerja dengandengan koleksikoleksi objectobjectBrowser objectBrowser objectMereferensiMereferensi pustakapustaka object object tambahantambahanMemberikanMemberikan object object padapada variabelvariabelOperator IsOperator IsBekerjaBekerja dengandengan beberapabeberapa properties properties dandanmethodsmethodsObject Object aplikasiaplikasiObject windowsObject windows

Nizam ©

PengertianPengertian objectobject

Object Object adalahadalah segalasegala sesuatusesuatu dalamdalamaplikasiaplikasi Windows yang Windows yang dapatdapat dilihatdilihatdandan dimanipulasi/diubahdimanipulasi/diubahObject Object bisabisa berupaberupa satusatu object object atauataukumpulankumpulan ((collectioncollection) object) objectContohContoh: workbook, worksheet, : workbook, worksheet, window, cell, range, window, cell, range, gambargambar, , grafikgrafik, , dsbdsb..

Nizam ©

caracara memanipulasimemanipulasi ojectoject

Cara Cara memanipulasimemanipulasi object:object:•• MengubahMengubah propertiesproperties•• MengaktivasiMengaktivasi method method yang yang terkaitterkait dengandengan

objectobject•• MendefinisiMendefinisi prosedurprosedur yang yang dijalankandijalankan saatsaat

suatusuatu event event terjaditerjadi

Ilustrasi/analogiIlustrasi/analogi•• KomputerKomputer: : objectobject•• MerekMerek, , jenisjenis prosesorprosesor: : propertyproperty•• MenulisMenulis suratsurat, main game: , main game: methodmethod•• DihidupkanDihidupkan, , dibukadibuka, , dimatikandimatikan: : eventevent Nizam ©

HirarkiHirarki objectobject

Object Object dalamdalam aplikasiaplikasi Office Office memilikimemilikihirarkihirarki daridari yang paling yang paling umumumumhinggahingga yang yang lebihlebih spesifikspesifik;;Object paling Object paling umumumum: Application : Application object object program program ituitu sendirisendiri. . DalamDalamExcel Application object Excel Application object memilikimemiliki > > 15 objects15 objects

Page 13: VBALengkap

13

Nizam ©

Objects Objects didi bawahbawah Application objectApplication object

Container Container untukuntuk fungsifungsi--fungsifungsiworksheet Excelworksheet Excel

WrosheetFunctioWrosheetFunctionn

KoleksiKoleksi daridari semuasemua workbooks yang workbooks yang terbukaterbuka

WorkbooksWorkbooksWorkbookWorkbook

KumpulanKumpulan windows yang windows yang terbukaterbukaWindowsWindowsWindowWindow

KoleksiKoleksi namanama--namanama yang yang adaada dalamdalamsemuasemua workbooks yang workbooks yang terbukaterbuka

NamesNamesNameName

KotakKotak dialog yang builtdialog yang built--in in dalamdalamExcelExcel

DialogsDialogsDialogDialog

SemuaSemua file addfile add--in/in/tambahantambahan yang yang adaada dalamdalam ExcelExcel

AddInsAddInsAddInAddIn

DescriptionDescriptionCollectionCollectionObjectObject

Nizam ©

BekerjaBekerja dengandengan object propertiesobject properties

SintaksSintaks: : Object.PropertyObject.PropertyContohContoh: : Application.ActiveWindowApplication.ActiveWindowMasalahMasalah::•• AdaAda beberapabeberapa propertespropertes yang yang jugajuga

merupakanmerupakan objectobject

Nizam ©

Properties .ActiveMenuBarActiveWindowCalculationEtc. Properties .

ActiveCellCaptionDisplayGridlinesEtc.

Application Object

Window Object

Properties .ColumnWidthFontFormulaEtc.

Range Object

Properties .ItalicNameSizeEtc.

Font Object

Application.ActiveWindow.ActiveCell.Font.Italicsama denganActiveCell.Font.Italic Nizam ©

MenetapkanMenetapkan nilainilai propertyproperty

SintaxSintax: : Object.PropertyObject.Property = = valuevalueValueValue berupaberupa nilainilai pernyataanpernyataan untukuntukmensetmenset property, property, bisabisa berupaberupa ::•• NumerikNumerik: : ActiveCell.Font.SizeActiveCell.Font.Size = 14= 14•• String: String: ActiveCell.Font.NameActiveCell.Font.Name = = ““ArialArial””•• LogikaLogika: : ActiveCell.Font.ItalicActiveCell.Font.Italic = True= True

NilaiNilai property property dapatdapat dicaridicari dengandengan•• variabelvariabel = = Object.PropertyObject.Property

Nizam ©

BekerjaBekerja dengandengan methodsmethods

Method Method menggambarkanmenggambarkan apaapa yang yang dilakukandilakukan object; object; contohcontoh: : metodemetodesort, pivot table, sort, pivot table, simpansimpan, , bukabuka, , dsbdsb..SintaxSintax: : Object.Method(arg1, arg2,Object.Method(arg1, arg2,……))contohcontoh: : ActiveWorkBook.SaveActiveWorkBook.Save

ActiveWorkBook.Close(ActiveWorkBook.Close(SaveChangesSaveChanges, , fileNamefileName, , RouteWBRouteWB))

Nizam ©

MengelolaMengelola object eventsobject events

EventEvent adalahadalah segalasegala sesuatusesuatu yang yang terjaditerjadi padapada object, object, sepertiseperti: : membukamembuka workbook workbook adalahadalah event event padapada workbookworkbookResponsRespons terhadapterhadap eventevent yang yang terjaditerjadidisebutdisebut event handlersevent handlersEvent handlers Event handlers akanakan dijalankandijalankan bilabilaevent event terjaditerjadi padapada suatusuatu objectobject

Page 14: VBALengkap

14

Nizam ©

ContohContoh event handlerevent handler' prosedur pemberian salam saat workbook dibuka' prosedur pemberian salam saat workbook dibuka' meminta nama pengguna' meminta nama penggunaPrivate Sub Workbook_Open()Private Sub Workbook_Open() ‘‘ event event membukamembuka

WorkbookWorkbookDim pesan, judul, Default, MyValueDim pesan, judul, Default, MyValuepesan = "Hi, siapa nama anda? " ' minta input pesan = "Hi, siapa nama anda? " ' minta input nama.nama.judul = "Salam pembuka" ' Set judul.judul = "Salam pembuka" ' Set judul.Default = "tanpa nama" ' Set default.Default = "tanpa nama" ' Set default.

' Display pesan, judul, dan nilai default.' Display pesan, judul, dan nilai default.MyValue = InputBox(pesan, judul, Default)MyValue = InputBox(pesan, judul, Default)MsgBox ("Assalamu'alaikum " + MyValue)MsgBox ("Assalamu'alaikum " + MyValue)

End SubEnd Sub Nizam ©

MengelolaMengelola eventeventContohContoh::' prosedur pemberian salam saat workbook dibuka' prosedur pemberian salam saat workbook dibuka' meminta nama pengguna' meminta nama penggunaPrivate Sub Workbook_Open()Private Sub Workbook_Open() ‘‘event event

membukamembuka wbwbDim pesan, judul, Default, MyValueDim pesan, judul, Default, MyValuepesan = "Hi, siapa nama anda? " pesan = "Hi, siapa nama anda? " ' minta ' minta input nama.input nama.judul = "Salam pembuka" judul = "Salam pembuka" ' Set ' Set judul.judul.Default = "tanpa nama" Default = "tanpa nama" ' Set default.' Set default.

' Display pesan, judul, dan nilai default.' Display pesan, judul, dan nilai default.MyValue = InputBox(pesan, judul, Default)MyValue = InputBox(pesan, judul, Default)MsgBox ("Assalamu'alaikum " + MyValue)MsgBox ("Assalamu'alaikum " + MyValue)

End SuEnd Subb

Nizam ©

BekerjaBekerja dengandengan koleksikoleksi objectobjectCollection Collection adalahadalah himpunanhimpunan objects yang objects yang serupaserupa; ; sepertiseperti WorkBooksWorkBooks Collection Collection merupakanmerupakan koleksikoleksiworkbook yang workbook yang terbukaterbukaCollection Collection jugajuga merupakanmerupakan object object sehinggasehinggamemilikimemiliki properties properties dandan methods methods yang yang bisabisadimanipulasidimanipulasiAnggotaAnggota collectioncollection disebutdisebut elementelement yang yang bisabisadiaksesdiakses dengandengan namanyanamanya atauatau dengandengan indexindexContohContoh::Workbooks(Workbooks(““Budget.xlsBudget.xls””).Close).CloseActiveSheet.Picture(1).CopyActiveSheet.Picture(1).Copy

KalauKalau taktak diberidiberi index, index, diasumsikandiasumsikan semuasemuakoleksikoleksi diperlakukandiperlakukan dengandengan method yang method yang samasama

Nizam ©

Object browserObject browserLibrariesdan Project

TemplateCode

Properties

Methods

Events

Nizam ©

BekerjaBekerja dengandengan object browserobject browser

MenunjukkanMenunjukkanobjectsobjects yang yang adaadapadapada satusatu library, library, properties, properties, methods methods dandanevents events yang yang terkaitterkaitdengandengan objectobject

Pencari object

Nizam ©

MemasukkanMemasukkan object object dalamdalam variabelvariabel

SintaxSintax: : variableNamevariableName = = ObjectNameObjectNameDim Dim budgetSheetbudgetSheet As ObjectAs ObjectSet Set budgetSheetbudgetSheet =_ =_

Workbooks(Workbooks(““Budget.xlsBudget.xls””).Worksheets().Worksheets(““2003 2003 Budget)Budget)

LebihLebih baikbaik::Dim Dim budgetSheetbudgetSheet As WorksheetAs WorksheetSet Set budgetSheetbudgetSheet =_ =_

Workbooks(Workbooks(““Budget.xlsBudget.xls””).Worksheets().Worksheets(““2003 2003 Budget)Budget)

Page 15: VBALengkap

15

Nizam ©

Operator IsOperator Is

Kita Kita kadangkadang perluperlu membandingkanmembandingkanbeberapabeberapa objects, VBA objects, VBA menyediakanmenyediakanoperator Is operator Is untukuntuk membandingkanmembandingkanduadua objectsobjectsHasilHasil = = Object1 Object1 Is Is Object2Object2•• Object1 Object1 dandan Object2Object2 adalahadalah object object atauatau

variabelvariabel, , bilabila samasama, , hasilhasil akanakan TrueTrue, , bilabilabedabeda akanakan FalseFalse

Nizam ©

BekerjaBekerja dengandengan properties properties dandan methods methods yang yang banyakbanyak (1/3)(1/3)

ContohContoh::Sub Sub FormatRangeFormatRange()()

Worksheets(Worksheets(““Sheet1Sheet1””).Range().Range(““B2:B5B2:B5””).Style = ).Style = ““CurrencyCurrency””Worksheets(Worksheets(““Sheet1Sheet1””).Range().Range(““B2:B5B2:B5””).WrapText= True).WrapText= TrueWorksheets(Worksheets(““Sheet1Sheet1””).Range().Range(““B2:B5B2:B5””).Font.Size = 16).Font.Size = 16Worksheets(Worksheets(““Sheet1Sheet1””).Range().Range(““B2:B5B2:B5””).Font.Bold = True).Font.Bold = TrueWorksheets(Worksheets(““Sheet1Sheet1””).Range().Range(““B2:B5B2:B5””).Font.Color = RGB(255, ).Font.Color = RGB(255, 0, 0)0, 0)

Worksheets(Worksheets(““Sheet1Sheet1””).Range().Range(““B2:B5B2:B5””).Font.Name = ).Font.Name = ““ArialArial””

End SubEnd Sub

Nizam ©

BekerjaBekerja dengandengan properties properties dandan methods methods yang yang banyakbanyak (2/3)(2/3)

ContohContoh yang yang lebihlebih baikbaik::Sub FormatRange2()Sub FormatRange2()

With Worksheets(With Worksheets(““Sheet1Sheet1””).Range().Range(““B2:B5B2:B5””)).Style = .Style = ““CurrencyCurrency””.WrapText= True.WrapText= True.Font.Size = 16.Font.Size = 16.Font.Bold = True.Font.Bold = True.Font.Color = RGB(255, 0, 0).Font.Color = RGB(255, 0, 0)

.Font.Name = .Font.Name = ““ArialArial””End WithEnd With

End SubEnd Sub

Nizam ©

BekerjaBekerja dengandengan properties properties dandan methods methods yang yang banyakbanyak (3/3)(3/3)

ContohContoh yang yang lebihlebih baikbaik lagilagi::Sub FormatRange3()Sub FormatRange3()

With Worksheets(With Worksheets(““Sheet1Sheet1””).Range().Range(““B2:B5B2:B5””)).Style = .Style = ““CurrencyCurrency””.WrapText= True.WrapText= TrueWith .FontWith .Font

.Size = 16.Size = 16

.Bold = True.Bold = True

.Color = RGB(255, 0, 0).Color = RGB(255, 0, 0)

.Name = .Name = ““ArialArial””End WithEnd With

End WithEnd WithEnd SubEnd Sub

Nizam ©

Object Object aplikasiaplikasiApplication Object Application Object merupakanmerupakan container container yang yang berisiberisi semuasemua ojectoject dalamdalam aplikasiaplikasi yang yang dijalankandijalankan; object ; object iniini memilikimemiliki beberapabeberapaproperties properties dandan methods methods yang yang banyakbanyak gunanyagunanyaBeberapaBeberapa contohcontoh•• Application.ActivePrinterApplication.ActivePrinter: : mengembalikanmengembalikan himpunanhimpunan

printer driver yang printer driver yang tersediatersedia•• Application.ActiveWindowApplication.ActiveWindow: : mengembalikanmengembalikan window yang window yang

sedangsedang aktifaktif•• Application.CaptionApplication.Caption: : mengembalikanmengembalikan juduljudul aplikasiaplikasi•• Application.DialogsApplication.Dialogs: built: built--in dialog yang in dialog yang adaada dlmdlm aplikasiaplikasi•• Application.VisibleApplication.Visible: : mengaturmengatur aplikasiaplikasi terlihat/tidakterlihat/tidak•• Application.WidthApplication.Width: : lebarlebar window window aplikasiaplikasi•• Application.WindowsApplication.Windows: : kumpulankumpulan window window aplikasiaplikasi yang yang

aktifaktif

Nizam ©

Methods Methods padapada Application ObjectApplication Object

Application object Application object memilikimemiliki beberapabeberapamethods, methods, diantaranyadiantaranya•• Application.HelpApplication.Help: : mendisplaymendisplay sistemsistem

Help Help aplikasiaplikasi•• Application.QuitApplication.Quit: : keluarkeluar daridari aplikasiaplikasi•• Application.RepeatApplication.Repeat: : mengulangmengulang kegiatankegiatan

yang yang barubaru sajasaja dilakukandilakukan•• Application.EnableCancelKeyApplication.EnableCancelKey

Page 16: VBALengkap

16

Nizam ©

Object WindowObject Window

MenspesifikasiMenspesifikasi object windowobject window•• DenganDengan indeksindeks, , atauatau dengandengan

menuliskanmenuliskan namanyanamanyaWindows(1)Windows(1)Windows(Windows(““Nilai.xlsNilai.xls””), ), atauatauActiveWindowActiveWindow window yang window yang saatsaat iniinisedangsedang aktifaktif

MembukaMembuka window window barubaru•• Window.NewWindowWindow.NewWindow

Nizam ©

Object WindowObject WindowBeberapaBeberapa properties object windowproperties object window•• Window.CaptionWindow.Caption Window.VisibleWindow.Visible•• Window.HeightWindow.Height Window.WidthWindow.Width•• Window.LeftWindow.Left Window.WindowNumberWindow.WindowNumber•• Window.TopWindow.Top Window.WindowStateWindow.WindowState•• Window.UsableHeightWindow.UsableHeight•• Window.UsableWidthWindow.UsableWidthBeberapaBeberapa methods object windowmethods object window•• Window.ActivateWindow.Activate

Windows(Windows(““Nilai.xlsNilai.xls””).Activate).Activate•• Window.CloseWindow.Close•• Window.LargeScroll(Down,Up,ToRight,ToLeftWindow.LargeScroll(Down,Up,ToRight,ToLeft))•• Window.SmallScroll(Down,Up,ToRight,ToLeftWindow.SmallScroll(Down,Up,ToRight,ToLeft))

Nizam ©

BagianBagian 55

MengendalikanMengendalikan aluralur programprogram

Nizam ©

ApaApa yang yang akanakan dibahasdibahas??PengendalianPengendalian aluralur programprogramIfIf……ThenThenIfIf……ThenThen……ElseElseMembuatMembuat keputusankeputusan gandagandaFungsiFungsi yang yang mengambilmengambil keputusankeputusanLoopsLoopsDoDo……LoopLoopForFor……NextNextFor EachFor Each……NextNextExitExit

Nizam ©

PengendalianPengendalian aluralur programprogram

AlurAlur program program dikendalikandikendalikan dengandenganlogikalogika pengambilanpengambilan keputusankeputusan (True (True atauatau False)False)If..ThenIf..Then•• Langsung/sebarisLangsung/sebaris

If If conditioncondition Then Then statementstatement•• DenganDengan blokblok

If If condition condition ThenThen[[statementsstatements]]

End IfEnd IfNizam ©

PengendalianPengendalian aluralur programprogramIfIf……ThenThen……ElseElse•• SintaksSintaks

If If condition condition ThenThen[[TrueStatementsTrueStatements]]

ElseElse[[FalseStatementsFalseStatements]]

End IfEnd IfContohContoh::Function Function FutureValue(RateFutureValue(Rate, , NperNper, Pmt, Frequency), Pmt, Frequency)

If Frequency = If Frequency = ““MonthlyMonthly”” ThenThenFutureValueFutureValue = = FV(RateFV(Rate / 12, / 12, NperNper * 12, Pmt / 12) * 12, Pmt / 12) ‘‘ freq freq

monthlymonthlyElseElse

FutureValueFutureValue = = FV(RateFV(Rate / 4, / 4, NPerNPer * 4, Pmt / 4)* 4, Pmt / 4) ‘‘ freq freq quarterlyquarterlyEnd IfEnd If

End FunctionEnd Function

Page 17: VBALengkap

17

Nizam ©

KeputusanKeputusan gandagandaPenggunaanPenggunaan operator And operator And dandan OrOr

If If condition1 condition1 And And condition2 condition2 ThenThen[[TrueStatementsTrueStatements]]

ElseElse[[FalseStatementsFalseStatements]]

End IfEnd IfContohContoh::Function FutureValue2(Rate, Function FutureValue2(Rate, NperNper, Pmt, Frequency), Pmt, Frequency)

If Frequency <> If Frequency <> ““MonthlyMonthly”” And Frequency <> And Frequency <> ““QuarterlyQuarterly”” ThenThenMsgBoxMsgBox ““The The FrequenyFrequeny argument must be either argument must be either ““ & & “””“””MonthlyMonthly””””

or_or_“”“”QuarterlyQuarterly””””!!””

Exit FunctionExit FunctionEnd IfEnd IfIf Frequency = If Frequency = ““MonthlyMonthly”” ThenThen

FutureValue2 = FutureValue2 = FV(RateFV(Rate / 12, / 12, NperNper * 12, Pmt / 12) * 12, Pmt / 12) ‘‘ freq monthlyfreq monthlyElseElse

FutureValue2 = FutureValue2 = FV(RateFV(Rate / 4, / 4, NPerNPer * 4, Pmt / 4)* 4, Pmt / 4) ‘‘ freq quarterlyfreq quarterlyEnd IfEnd If

End FunctionEnd Function Nizam ©

KeputusanKeputusan gandagandaPenggunaanPenggunaan statement multi Ifstatement multi If……ThenThen……ElseElse

If If condition1 condition1 ThenThen[[condition1 condition1 TrueStatementsTrueStatements]]

ElseIfElseIf condition2condition2[[condition2 condition2 TrueStatementsTrueStatements]]

<etc.><etc.>ElseElse

[[FalseStatementsFalseStatements]]End IfEnd If

ContohContoh::Function FutureValue3(Rate, Function FutureValue3(Rate, NperNper, Pmt, Frequency), Pmt, Frequency)

If Frequency = If Frequency = ““MonthlyMonthly”” ThenThenFutureValue3 = FutureValue3 = FV(RateFV(Rate / 12, / 12, NperNper * 12, Pmt / 12) * 12, Pmt / 12) ‘‘ freq monthlyfreq monthly

ElseIfElseIf Frequency = Frequency = ““QuarterlyQuarterly”” ThenThenFutureValue3 = FutureValue3 = FV(RateFV(Rate / 4, / 4, NPerNPer * 4, Pmt / 4)* 4, Pmt / 4) ‘‘ freq quarterlyfreq quarterly

ElseElseMsgBoxMsgBox ““The Frequency argument must be either The Frequency argument must be either ““ & _& _

“””“””MonthlyMonthly”””” or or “”“”QuarterlyQuarterly””””!!””End IfEnd If

End FunctionEnd Function

Nizam ©

KeputusanKeputusan gandagandaPenggunaanPenggunaan Select CaseSelect Case

Select Case Select Case TestExpressionTestExpressionCase Case FirstCaseListFirstCaseList

[[FirstStatementsFirstStatements]]Case Case SecondCaseListSecondCaseList

[[SecondStatementsSecondStatements]]<etc.><etc.>Case Case ElseElse

[[ElseStatementsElseStatements]]End SelectEnd Select

ContohContoh::Function FutureValue4(Rate, Function FutureValue4(Rate, NperNper, Pmt, Frequency), Pmt, Frequency)

Select Case FrequencySelect Case FrequencyCase Case ““MonthlyMonthly””

FutureValue4 = FutureValue4 = FV(RateFV(Rate / 12, / 12, NperNper * 12, Pmt / 12) * 12, Pmt / 12) ‘‘ freq freq monthlymonthly

Case Case ““QuarterlyQuarterly””FutureValue3 = FutureValue3 = FV(RateFV(Rate / 4, / 4, NPerNPer * 4, Pmt / 4)* 4, Pmt / 4) ‘‘ freq freq

quarterlyquarterlyCase ElseCase Else

MsgBoxMsgBox ““The Frequency argument must be either The Frequency argument must be either ““ & _& _“””“””MonthlyMonthly”””” or or “”“”QuarterlyQuarterly””””!!””

End SelectEnd SelectEnd FunctionEnd Function

Nizam ©

KeputusanKeputusan gandagandaContohContoh lain: lain: mengubahmengubah nilainilai angkaangka keke hurufhuruf

Function Function nilHuruf(nilAngkanilHuruf(nilAngka As Integer) As StringAs Integer) As StringSelect Case Select Case nilAngkanilAngka

Case Is < 0Case Is < 0nilHurufnilHuruf = = ““SalahSalah data data nilainilai kurangkurang daridari 0!0!””

Case Is < 50Case Is < 50nilHurufnilHuruf = = ““FF””

Case Is < 60Case Is < 60nilHurufnilHuruf = = ““DD””

Case Is < 70Case Is < 70nilHurufnilHuruf = = ““CC””

Case Is < 80Case Is < 80nilHurufnilHuruf = = ““BB””

Case Is <= 100Case Is <= 100nilHurufnilHuruf = = ““AA””

Case ElseCase ElsenilHurufnilHuruf = = ““SalahSalah! ! NilaiNilai lebihlebih daridari 100!100!””

End SelectEnd SelectEnd FunctionEnd Function

Nizam ©

FungsiFungsi pengambilpengambil keputusankeputusanStatement Statement IIfIIf (Inline If)(Inline If)•• SintaksSintaks: : IIfIIf ((conditioncondition, , TrueResultTrueResult, , FalseResultFalseResult))Function Function ProsesorCacatProsesorCacat() As Boolean() As Boolean

ProsesorCacatProsesorCacat = IIf((4195835 = IIf((4195835 –– (4195835/3145727) * 3145727), (4195835/3145727) * 3145727), True, False)True, False)

End FunctionEnd Function

FungsiFungsi ChooseChoose•• SintaksSintaks: : Choose(indexChoose(index, value1, value2, , value1, value2, ……))Function Function NamaHari(noHariNamaHari(noHari As Integer) As StringAs Integer) As StringNamaHariNamaHari = = Choose(noHariChoose(noHari, , ““AhadAhad””, , ““SeninSenin””, , ““SelasaSelasa””, , ““RabuRabu””, , ““KamisKamis””, ,

““JumatJumat””,_ ,_ ““SabtuSabtu””))End FunctionEnd Function

Nizam ©

FungsiFungsi pengambilpengambil keputusankeputusanFungsiFungsi SwitchSwitch•• SintaksSintaks: Switch(: Switch(expr1, value1, value2expr1, value1, value2, , ……))Function NilHuruf2(nilAngka As Integer) As StringFunction NilHuruf2(nilAngka As Integer) As StringNilHuruf2 = NilHuruf2 = Switch(nilAngkaSwitch(nilAngka < 0 < 0 ““Error <0Error <0””,_,_

nilAngkanilAngka < 50, < 50, ““FF””,_,_nilAngkanilAngka < 60, < 60, ““DD””,_,_nilAngkanilAngka < 70, < 70, ““CC””,_,_nilAngkanilAngka < 80, < 80, ““BB””,_,_nilAngkanilAngka <= 100, <= 100, ““AA””,_,_nilAngkanilAngka > 100, > 100, ““Error > 100Error > 100””))

End FunctionEnd Function

Page 18: VBALengkap

18

Nizam ©

PengulanganPengulangan -- looploop

StrukturStruktur DoDo……LoopLoopSintaksSintaks::•• Do While Do While conditioncondition ‘‘ check check duludulu barubaru looploop

[statement][statement] ‘‘ dilakukandilakukan selamaselama kondisikondisi TTLoopLoop

•• DoDo ‘‘ lakukanlakukan duludulu barubaru checkcheck[statement][statement]Loop While Loop While conditioncondition ‘‘ diulangdiulang bilabila kondisikondisi TT

•• Do Until Do Until conditioncondition ‘‘ check check duludulu barubaru looploop[[statemntstatemnt]] ‘‘ dilakukandilakukan selamaselama kondisikondisi FFLoopLoop

•• DoDo ‘‘ dilakukandilakukan duludulu barubaru checkcheck[statement][statement]Loop Until Loop Until conditioncondition ‘‘ diulangdiulang bilabila kondisikondisi masihmasih FF

Nizam ©

PengulanganPengulangan -- looploopContohContohSub Sub BigNumbersBigNumbers()()

Dim Dim rowNumrowNum As Integer, As Integer, colNumcolNum As Integer, As Integer, currCellcurrCell As As RangeRangerowNumrowNum = = ActiveCell.RowActiveCell.RowcolNumcolNum = = ActiveCell.ColumnActiveCell.ColumnSet Set currCellcurrCell = = ActiveSheet.Cells(rowNumActiveSheet.Cells(rowNum, , ColNumColNum))Do While Do While currCell.ValuecurrCell.Value <> <> “”“”If If IsNumeric(currCell.ValueIsNumeric(currCell.Value) Then) Then

If If currCell.ValuecurrCell.Value >= 1000 Then>= 1000 ThencurrCell.Font.ColorcurrCell.Font.Color = = VBAColor(VBAColor(““magentamagenta””))

End IfEnd IfrowNumrowNum = = rowNumrowNum + 1+ 1Set Set currCellcurrCell = = ActiveSheet.Cells(rowNumActiveSheet.Cells(rowNum, , colNumcolNum))

LoopLoopEnd SubEnd Sub

Nizam ©

For For …… NextNextLoop Loop dengandengan For For …… NextNextSintaksSintaks: For : For counter = start counter = start To To end [end [inkremeninkremen]]

[statement][statement]Next [Next [countercounter]]

Sub Sub LoopTestLoopTest()()Dim counter As IntegerDim counter As IntegerFor counter = 1 To 10For counter = 1 To 10

Application.StatusBarApplication.StatusBar = = ““Counter value: Counter value: ““ & & countercounter

Application.WaitApplication.Wait Now + Now + TimeValue(TimeValue(““00:00:0100:00:01””))Next counterNext counterApplication.StatusBarApplication.StatusBar = False= False

End SubEnd Sub Nizam ©

For Each For Each …… NextNext

Loop Loop dengandengan For Each For Each …… NextNextSintaksSintaks: For Each : For Each element element In In groupgroup

[statement][statement]Next [Next [elementelement]]

Sub Sub convertProperconvertProper()()Dim Dim cellObjectcellObject As ObjectAs ObjectFor Each For Each cellObjectcellObject In SelectionIn Selection

cellObject.FormulacellObject.Formula = = Application.Proper(cellObjectApplication.Proper(cellObject))NextNext

End SubEnd Sub

Nizam ©

PenggunaanPenggunaan Exit For Exit For atauatau Exit DoExit DoKadangKadang kitakita perluperlu keluarkeluar daridari LoopLoopCaranyaCaranya: : gunakangunakan Exit For Exit For atauatau Exit DoExit DoSub BigNumbers2()Sub BigNumbers2()

Dim Dim rowNumrowNum As Integer, As Integer, colNumcolNum As Integer, As Integer, currCellcurrCell As RangeAs RangerowNumrowNum = = ActiveCell.RowActiveCell.RowcolNumcolNum = = ActiveCell.ColumnActiveCell.ColumnSet Set currCellcurrCell = = ActiveSheet.Cells(rowNumActiveSheet.Cells(rowNum, , ColNumColNum))Do While Do While currCell.ValuecurrCell.Value <> <> ““ ””

If If IsNumeric(currCell.ValueIsNumeric(currCell.Value) Then) ThenIf If currCell.ValuecurrCell.Value >= 1000 Then>= 1000 Then

currCell.Font.ColorcurrCell.Font.Color = = VBAColor(VBAColor(““magentamagenta””))End IfEnd If

ElseElseExit DoExit Do ‘‘ bilabila bukanbukan angkaangka keluarkeluar daridari

Do loopDo loopEnd IfEnd IfrowNumrowNum = = rowNumrowNum + 1+ 1Set Set currCellcurrCell = = ActiveSheet.Cells(rowNumActiveSheet.Cells(rowNum, , colNumcolNum))

LoopLoopEnd SubEnd Sub

Nizam ©

TugasTugas -- 11SalahSalah satusatu caracara untukuntuk mencarimencari akarakarpersamaanpersamaan f f adalahadalah dengandengan metodemetodeNewtonNewton•• BilaBila f(xf(x) = ) = 0 0 adalahadalah fungsifungsi yang yang akanakan dicaridicari

akarnyaakarnya, , dandan xxnn adalahadalah perkiraanperkiraan akarakar f(xf(x) ) makamaka pendekatanpendekatan nilainilai akarakar persamaanpersamaanberikutnyaberikutnya dapatdapat dicaridicari dengandengan rumusrumus

xxn+1n+1 = = xxnn –– f(xf(xnn )/)/ff’’(x(xnn))DiDi manamana ff’’(x(xnn) ) adalahadalah nilainilai turunanturunan fungsifungsi didi xxnn

TuliskanTuliskan prosedurprosedur dalamdalam VBA VBA untukuntukmencarimencari akarakar fungsifungsi f(xf(x) = 0 ) = 0 yang yang merupakanmerupakan fungsifungsi yang yang dapatdapatdidefinisikandidefinisikan dalamdalam program (userprogram (user--defined)defined)

Page 19: VBALengkap

19

Nizam ©

TugasTugas -- 22

BuatBuat sekumpulansekumpulan program program dandanfungsifungsi untukuntuk melakukanmelakukan operasioperasibilanganbilangan komplexkomplex: : penjumlahanpenjumlahan, , penguranganpengurangan, , perkalianperkalian, , pembagianpembagian

Nizam ©

TugasTugas 33

BuatBuat satusatu program program aplikasiaplikasi VBA excel VBA excel untukuntuk bidangbidang tekniktekniksipil/fisika/mekanikasipil/fisika/mekanika