Upload
anthony-hardin
View
11
Download
0
Embed Size (px)
DESCRIPTION
vba
Citation preview
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
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
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
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
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
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
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
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
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
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
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
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
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
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)
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
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
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
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)
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