SlideShare a Scribd company logo
1 of 19
Download to read offline
1
Nizam ©
Excel in a nutshellExcel in a nutshell
Nizam ©
Excel as objectExcel as object
DalamDalam graphical user interface,graphical user interface, aplikasiaplikasi
dandan bagianbagian--bagiannyabagiannya dikenaldikenal sebagaisebagai
objectobject
Object excelObject excel
•• ExcelExcel
•• WorkbookWorkbook
•• WorksheetWorksheet
•• RangeRange dalamdalam worksheetworksheet
•• ListboxListbox
•• Chart sheetChart sheet
•• ChartChart
•• DsbDsb..
Nizam ©
ObjectObject utamautama
WorkbooksWorkbooks merupakanmerupakan ““folderfolder””
yangyang berisiberisi::
•• WorksheetsWorksheets
•• Chart sheetsChart sheets
•• Macro sheets (.Macro sheets (.xlmxlm obsolete)obsolete)
•• Dialog sheets (obsolete)Dialog sheets (obsolete)
WorksheetsWorksheets merupakanmerupakan lembarlembar
kerjakerja
•• 1 worksheet1 worksheet terdiriterdiri daridari 256256 kolomkolom dandan
65,53665,536 barisbaris (16,777,216(16,777,216 selsel!!)!!)
setarasetara dengandengan 36,00036,000 halamanhalaman cetakcetak!!!!!! Nizam ©
Excel user interfaceExcel user interface
AntarmukaAntarmuka excelexcel bisabisa dilakukandilakukan
dengandengan beberapabeberapa caracara::
•• MenuMenu
•• Dialog boxDialog box
•• ToolbarsToolbars
•• DragDrag--andand--dropdrop
•• Keyboard shortcutsKeyboard shortcuts
Nizam ©
Entry dataEntry data
NilaiNilai ((angkaangka,, tanggaltanggal,, waktuwaktu))
TextText
RumusRumus
NilaiNilai logikalogika ((booleanboolean –– truetrue--false)false)
BeberapaBeberapa tipstips
•• MengisiMengisi datadata padapada range:range: isikanisikan datadata padapada active cell,active cell,
tekantekan ctrl+Enterctrl+Enter
•• MengcopyMengcopy keke bawahbawah: drag: drag pojokpojok selectionselection
•• MengcopyMengcopy keke bawahbawah dgndgn increment: dragincrement: drag pojokpojok
selectionselection sambilsambil tekantekan ctrlctrl
•• UntukUntuk penulisanpenulisan teksteks yangyang panjangpanjang,, gantiganti barisbaris dengandengan
alt+enteralt+enter
•• UntukUntuk menulismenulis pecahanpecahan tulistulis 0 <0 <spasispasi>> pecahanpecahan
•• TanggalTanggal harihari iniini: ctrl+;: ctrl+;
•• JamJam saatsaat iniini:: ctrl+shiftctrl+shift+;+;
Nizam ©
BeberapaBeberapa kemampuankemampuan excelexcel
FormattingFormatting
FormulasFormulas
NamesNames
FunctionsFunctions
ShapesShapes
ChartsCharts
MacrosMacros
Database accessDatabase access filterfilter
2
Nizam ©
Analysis toolsAnalysis tools
OutlineOutline
Automatic subtotalsAutomatic subtotals
Scenario managementScenario management
AnalysisAnalysis toolpaktoolpak
Pivot tablePivot table
AuditingAuditing
SolverSolver
AddAdd--insins
Nizam ©
cellcell
Relative A1Relative A1
Absolute $A$1Absolute $A$1
row absolute A$1row absolute A$1
Column absolute $A1Column absolute $A1
Referencing other sheets/workbooksReferencing other sheets/workbooks
=[data.xls]Sheet2[A2]+1=[data.xls]Sheet2[A2]+1
ReferensiReferensi dengandengan namanama : insert: insert
namename createcreate
Nizam ©
VBAVBA -- Visual Basic forVisual Basic for
ApplicationApplication
BahasaBahasa pemrogramanpemrograman untukuntuk
aplikasiaplikasi WindowsWindows
Nizam ©
BagianBagian 11
DasarDasar--dasardasar pemrogramanpemrograman VBAVBA
Nizam ©
ApaApa yangyang dibicarakandibicarakan??
MengenalMengenal VBAVBA
IDEIDE
PemrogramanPemrograman berbasisberbasis objectobject
CaraCara membuatmembuat program VBAprogram VBA
MakroMakro
Editor programEditor program
MenjalankanMenjalankan programprogram
MembuatMembuat fungsisendirifungsisendiri
MembuatMembuat prosedurprosedur
MengaturMengatur editoreditor
MelindungiMelindungi programprogram
Nizam ©
ApaApa dandan kenapakenapa VBAVBA
MerupakanMerupakan bahasabahasa pemrogramanpemrograman bagibagi
semuasemua aplikasiaplikasi Microsoft Office (Microsoft Office (ExelExel,,
Word, Access,Word, Access, PowerpointPowerpoint)) dandan beberapabeberapa
yang lain (Outlook, Visio, AutoCAD,yang lain (Outlook, Visio, AutoCAD,
MapInfo,MapInfo, dsbdsb.).)
DapatDapat berfungsiberfungsi sebagaisebagai macromacro atauatau
bahasabahasa pemrogramanpemrograman
MerupakanMerupakan bahasabahasa programprogram beorientasibeorientasi
object,object, semuasemua object officeobject office dapatdapat dengandengan
mudahmudah dimanipulasidimanipulasi dengandengan VBAVBA
BelajarBelajar satusatu bahasabahasa dapatdapat daplikasikandaplikasikan
dalamdalam banyakbanyak aplikasiaplikasi WindowsWindows
3
Nizam ©
kenapakenapa
MendukungMendukung aplikasiaplikasi internetinternet dandan
intranetintranet
MendukungMendukung ActiveX controlsActiveX controls
Code editorCode editor dengandengan bantuanbantuan yangyang
lengkaplengkap dandan debuggerdebugger
Form building toolsForm building tools
Object browserObject browser
DllDll yangyang memudahkanmemudahkan pembuatanpembuatan
programprogram Nizam ©
IDEIDE –– 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 objectobject memilikimemiliki properties: color,properties: color,
font, italic,font, italic, dsbdsb..
Method & procedureMethod & procedure
•• Cara/Cara/perintahperintah untukuntuk melakukanmelakukan
sesuatusesuatu:: pindahpindah worksheet,worksheet, pindahpindah
barisbaris,, dsbdsb..
Nizam ©
VBA programmingVBA programming
ProgramProgram dalamdalam VBAVBA disebutdisebut prosedurprosedur ((dandan
function)function)
TigaTiga jenisjenis prosedurprosedur
•• Command macrosCommand macros mengotomasimengotomasi prosedurprosedur--
prosedurprosedur,, fungsifungsi--fungsifungsi yangyang adaada (built(built--in)in)
dalamdalam aplikasiaplikasi,, memformatmemformat,, menyimpanmenyimpan,, dsbdsb..
•• UserUser--defined function (function procedure)defined function (function procedure)
program yangprogram yang berisiberisi rumusrumus dandan perintahperintah yangyang
kitakita susunsusun sendirisendiri
•• Property procedureProperty procedure menunjukkanmenunjukkan atauatau
mengubahmengubah propertiproperti daridari suausuau object (classobject (class
module)module)
Nizam ©
CaraCara membuatmembuat programprogram
DenganDengan merekammerekam macro (macromacro (macro
recording)recording)
DenganDengan menulismenulis programprogram dalamdalam
IDE/VBA editorIDE/VBA editor
4
Nizam ©
MembuatMembuat dandan menjalankanmenjalankan macromacro
ToolsTools macromacro record macrorecord macro
LakukanLakukan prosedurprosedur--prosedurprosedur dandan
perubahanperubahan propertiesproperties padapada
worksheetworksheet
Stop macro recordingStop macro recording
Edit macroEdit macro untukuntuk memberbaikimemberbaiki dandan
mengubahmengubah hasilhasil rekamanrekaman
MenjalankanMenjalankan::
•• DenganDengan shortcut,shortcut, atauatau
•• ToolsTools macromacro runrun pilihpilih namanama macromacro Nizam ©
MenulisMenulis programprogram
ToolsTools macromacro visualvisual basic editorbasic editor
atauatau
ClickClick tomboltombol VBEVBE
PindahPindah daridari VBEVBE keke aplikasiaplikasi
alt+F11alt+F11
TuliskanTuliskan program (functionprogram (function atauatau
procedure)procedure)
•• SubSub
BarisBaris programprogram
•• End subEnd sub
Nizam ©
FungsiFungsi
FungsiFungsi adalahadalah rumusrumus yangyang mengolahmengolah argumenargumen
dandan mengembalikanmengembalikan hasilhasil
StrukturStruktur fungsifungsi
FunctionFunction NamaFungsi(argumen1, argumen2,NamaFungsi(argumen1, argumen2, ……))
[[PernyataanPernyataan/statement VBA]/statement VBA]
NamaFungsiNamaFungsi == hasilhasil yangyang dikembalikandikembalikan
End FunctionEnd Function
BagianbagianBagianbagian::
•• StatementStatement FunctionFunction
•• NamaNama fungsifungsi
•• ArgumenArgumen fungsifungsi (parameter)(parameter)
•• Statement VBA yangStatement VBA yang melakukanmelakukan hitunganhitungan
•• HasilHasil yangyang dikembalikandikembalikan namanama fungsifungsi ==
•• StatementStatement End FunctionEnd Function
Nizam ©
MembuatMembuat fungsifungsi
ContohContoh:: menghitungmenghitung sisisisi miringmiring
segitigasegitiga
•• SisimiringSisimiring = sqr(x= sqr(x22 + y+ y22))
FunctionFunction sisimiring(xsisimiring(x, y), y) ‘‘ namanama fungifungi
sisimiringsisimiring == sqr(xsqr(x ^ 2 + y ^ 2)^ 2 + y ^ 2) ‘‘ nilainilai
hasilhasil
End FunctionEnd Function
PemakaianPemakaian:: isikanisikan padapada selsel dengandengan
namanama formula,formula, misalmisal =sisimiring(3,=sisimiring(3,
4)4) akanakan menghasilkanmenghasilkan 55
Nizam ©
MembuatMembuat fungsifungsi
Function akar(A, B, C)Function akar(A, B, C)
If A <> 0 ThenIf A <> 0 Then
diskrim = B ^ 2diskrim = B ^ 2 -- 4 * A * C4 * A * C
If 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
ElseElse
akar = "bukan persamaan kuadrat"akar = "bukan persamaan kuadrat"
End IfEnd If
End FunctionEnd Function
Nizam ©
prosedurprosedur
ProsedurProsedur adalahadalah unit programunit program dalamdalam
VBA yangVBA yang merupakanmerupakan blokblok kodekode
dalamdalam satusatu modulmodul
StrukturStruktur sebuahsebuah prosedurprosedur
SubSub NamaProsedurNamaProsedur ((argumen1,argumen1,
argumen2,argumen2,……))
[[pernyataanpernyataan/statement VBA]/statement VBA]
End SubEnd Sub
5
Nizam ©
MembuatMembuat prosedurprosedur
ContohContoh:: perhitunganperhitungan bungabunga
SubSub EnterLoanDataEnterLoanData()()
SubSub InputDataPinjamanInputDataPinjaman()()
Range("bunga").Value = 0.08Range("bunga").Value = 0.08
Range("lama").Value = 10Range("lama").Value = 10
Range("pinjaman").Value = 100000000Range("pinjaman").Value = 100000000
Range("bayar").Value =Range("bayar").Value =
"=PMT(bunga/12,lama*12,pinjaman)""=PMT(bunga/12,lama*12,pinjaman)"
End SubEnd Sub
PenggunaanPenggunaan:: toolstools macromacro pilihpilih namanama
subsub InputDataPinjamanInputDataPinjaman runrun Nizam ©
MemanfaatkanMemanfaatkan intellisenseintellisense
SetiapSetiap ojectoject dalamdalam excelexcel memilikimemiliki
propertiesproperties dandan methods,methods,
UntukUntuk memanipulasimemanipulasi obyekobyek dalamdalam
program VBA,program VBA, kitakita bisabisa memanfaatkanmemanfaatkan
intellisenseintellisense
CaranyaCaranya::
•• TuliskanTuliskan namanama obyekobyek dilanjutkandilanjutkan dengandengan titiktitik
(.)(.) akanakan keluarkeluar propertiesproperties daridari obyekobyek
tersebuttersebut
•• ContohContoh: application.: application.
•• KalauKalau kitakita tekantekan <esc><esc> intellisenseintellisense taktak akanakan
munculmuncul lagilagi untukuntuk obyekobyek yangyang samasama,, untukuntuk
memunculkanmemunculkan lagilagi tekantekan Ctrl+JCtrl+J
Nizam ©
InformasiInformasi parameterparameter
SetiapSetiap fungsifungsi memilikimemiliki satu/beberapasatu/beberapa
parameter, parameterparameter, parameter terebutterebut dapatdapat
dimunculkandimunculkan dengandengan menuliskanmenuliskan
namanama 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 modulmodul
yangyang akanakan disimpandisimpan
PilihPilih File|ExportFile|Export FileFile
PilihPilih lokasilokasi tempattempat menyimpanmenyimpan filefile
BeriBeri namanama file.BASfile.BAS
TekanTekan SaveSave
Nizam ©
Mengimpor/ambilMengimpor/ambil modulmodul
Dari project explorerDari project explorer
PilihPilih File|ImportFile|Import FileFile
PilihPilih filefile daridari lokasilokasi tempattempat
menyimpanmenyimpan file.BASfile.BAS
TekanTekan OpenOpen
Nizam ©
MengaturMengatur editoreditor
CaraCara kerjakerja dandan tampilantampilan editoreditor dapatdapat
diaturdiatur dengandengan menumenu Tools|OptionsTools|Options
6
Nizam ©
MelindungiMelindungi programprogram
ProgramProgram dapatdapat dilindungidilindungi dengandengan
passwordpassword
Tools|ProjectNameTools|ProjectName PropertiesProperties
dialog box,dialog box, pilihpilih ProtectionProtection
IsikanIsikan passwordpassword untukuntuk melindungimelindungi
programprogram
OKOK
Nizam ©
BagianBagian 22
VariabelVariabel dandan konstantakonstanta
Nizam ©
ApaApa yangyang dibicarakandibicarakan??
MendeklarasiMendeklarasi variabelvariabel
MemahamiMemahami lingkuplingkup varaibelvaraibel
MengirimMengirim variabelvariabel sbgsbg referensireferensi dandan sbgsbg
argumenargumen
VariabelVariabel statikstatik
MenghindariMenghindari kesalahankesalahan variabelvariabel
JenisJenis datadata variabelvariabel
ArrayArray
KonstantaKonstanta
Nizam ©
DeklarasiDeklarasi variabelvariabel
VariabelVariabel dalamdalam VBAVBA sebaiknyasebaiknya
dideklarasikandideklarasikan untukuntuk menyatakanmenyatakan namanama
dandan jenisjenis data (data type)data (data type)
PendeklrasianPendeklrasian variabelvariabel menghindarimenghindari
kesalahankesalahan dandan mengefisienkanmengefisienkan programprogram
CaranyaCaranya:: dengandengan pernyataanpernyataan DimDim
DimDim namavarnamavar AsAs jenisdatajenisdata
NamavarNamavar harusharus dimulaidimulai dengandengan hurufhuruf, max, max
255255 karakterkarakter,, tidaktidak mengandungmengandung spasispasi
dandan .!@#$%&.!@#$%&
Nizam ©
contohcontoh
FunctionFunction GrossMarginGrossMargin()()
‘‘ deklarasideklarasi variabelvariabel
DimDim totalSalestotalSales
DimDim totalExpensestotalExpenses
‘‘programprogram
totalSalestotalSales == Application.Sum(Range(Application.Sum(Range(““SalesSales””))))
totalExpensestotalExpenses ==
Application.Sum(Range(Application.Sum(Range(““ExpensesExpenses””))))
GrossMarginGrossMargin=(=(totalSalestotalSales ––
totalExpenses)/totalSalestotalExpenses)/totalSales
End FunctionEnd Function
Nizam ©
LingkupLingkup/scope/scope variabelvariabel
DalamDalam VBAVBA lingkuplingkup variabelvariabel
LingkupLingkup prosedurprosedur
LingkupLingkup modulmodul
LingkupLingkup publikpublik
7
Nizam ©
LingkupLingkup prosedurprosedur
VariabelVariabel hanyahanya bisabisa diaksesdiakses oleholeh pernyataanpernyataan--pernyataanpernyataan
dalamdalam prosedurprosedur yangyang samasama
Sub Procedure1()Sub Procedure1()
DimDim pesanpesan
‘‘ semuasemua pernyataanpernyataan didi dalamdalam prosedurprosedur iniini
‘‘ dapatdapat mengaksesmengakses variabelvariabel ‘‘pesanpesan’’
pesanpesan == ““ SayaSaya dalamdalam lingkuplingkup””
MsgBoxMsgBox pesanpesan
End SubEnd Sub
Sub Procedure2()Sub Procedure2()
‘‘ pernyataanpernyataan didi dalamdalam prosedurprosedur iniini
‘‘ taktak dapatdapat mengaksesmengakses variabelvariabel ‘‘pesanpesan’’
MsgBoxMsgBox pesanpesan ‘‘ variabelvariabel pesanpesan taktak dikenaldikenal dalamdalam
prosedurprosedur iniini
End SubEnd Sub
Nizam ©
DeklarasiDeklarasi implisitimplisit dandan eksplisiteksplisit
PadaPada contohcontoh 2,2, variabelvariabel pesanpesan sebetulnyasebetulnya
taktak dikenaldikenal,, tetapitetapi ketikaketika dijalankandijalankan tetaptetap
memberimemberi hasilhasil,, dalamdalam halhal iniini <blank>.<blank>. IniIni
dikarenakandikarenakan VBAVBA mengenalmengenal deklarasideklarasi
implisitimplisit ((semuasemua variabelvariabel otomatisotomatis diberidiberi
hargaharga <blank>,<blank>, meskimeski taktak dikenaldikenal))
KondisiKondisi semacamsemacam iniini kurangkurang baikbaik dalamdalam
pemrogramanpemrograman,, sebaiknyasebaiknya dinyatakandinyatakan
bahwabahwa semuasemua variabelvariabel harusharus
dideklarasikandideklarasikan agaragar taktak terjaditerjadi kesalahankesalahan
UntukUntuk menghindarimenghindari
•• Option ExplicitOption Explicit
Nizam ©
LingkupLingkup modulmodul
AgarAgar variabelvariabel dapatdapat diaksesdiakses oleholeh
beberapabeberapa prosedurprosedur harusharus dideklarasidideklarasi
sebelum/disebelum/di luarluar prosedurprosedur--prosedurprosedur
yangyang menggunakanmenggunakan variabelvariabel tersebuttersebut
Nizam ©
contohcontoh
Sub CalcMargins1()Sub CalcMargins1()
Range("GrossMarg").Value = GrossMarginCalcRange("GrossMarg").Value = GrossMarginCalc
Range("NetMarg").Value =Range("NetMarg").Value =
NetMarginCalc(Range("FixedCosts").Value)NetMarginCalc(Range("FixedCosts").Value)
End SubEnd Sub
Function GrossMarginCalc()Function GrossMarginCalc()
Dim totSalesDim totSales
Dim totExpensesDim totExpenses
totSales = Application.Sum(Range("Sales"))totSales = Application.Sum(Range("Sales"))
totExpenses = Application.Sum(Range("Expenses"))totExpenses = Application.Sum(Range("Expenses"))
GrossMarginCalc = (totSalesGrossMarginCalc = (totSales -- totExpenses) /totExpenses) /
totSalestotSales
End FunctionEnd Function
Function NetMarginCalc(fixedCosts)Function NetMarginCalc(fixedCosts)
Dim totSalesDim totSales
Dim totExpensesDim totExpenses
totSales = Application.Sum(Range("Sales"))totSales = Application.Sum(Range("Sales"))
totExpenses = Application.Sum(Range("Expenses"))totExpenses = Application.Sum(Range("Expenses"))
NetMarginCalc = (totSalesNetMarginCalc = (totSales -- totExpensestotExpenses --
fixedCosts)fixedCosts) __ totSalestotSales
End FunctionEnd Function
Dim totSales2Dim totSales2
Dim totExpenses2Dim totExpenses2
Sub CalcMargins2()Sub CalcMargins2()
Range("GrossMarg").Value = GrossMarginCalc2Range("GrossMarg").Value = GrossMarginCalc2
Range("NetMarg").Value =Range("NetMarg").Value =
NetMarginCalc2(Range("FixedCosts").Value)NetMarginCalc2(Range("FixedCosts").Value)
End SubEnd Sub
Function GrossMarginCalc2()Function GrossMarginCalc2()
totSales2 = Application.Sum(Range("Sales"))totSales2 = Application.Sum(Range("Sales"))
totExpenses2 =totExpenses2 =
Application.Sum(Range("Expenses"))Application.Sum(Range("Expenses"))
GrossMarginCalc2 = (totSales2GrossMarginCalc2 = (totSales2 -- totExpenses2) /totExpenses2) /
totSales2totSales2
End FunctionEnd Function
Function NetMarginCalc2(fixedCosts)Function NetMarginCalc2(fixedCosts)
NetMarginCalc2 = (totSales2NetMarginCalc2 = (totSales2 -- totExpenses2totExpenses2 __
-- fixedCosts2) / totSales2fixedCosts2) / totSales2
End FunctionEnd Function
Nizam ©
LingkupLingkup publikpublik
KadangKadang kitakita menginginkanmenginginkan semuasemua
modulmodul dalamdalam proyekproyek kitakita dapatdapat
mengaksesmengakses variabelvariabel lingkuplingkup publikpublik
CaranyaCaranya:: deklarasikandeklarasikan dengandengan
publicpublic namavariabelnamavariabel
UntukUntuk menggantikanmenggantikan dimdim
namavariabelnamavariabel
Nizam ©
MengirimMengirim argumenargumen variabelvariabel
BilaBila programprogram terdiriterdiri daridari banyakbanyak prosedurprosedur,,
mendeklarasikanmendeklarasikan variabelvariabel dalamdalam lingkuplingkup
modulmodul dapatdapat berbahayaberbahaya,, karenakarena nilainilai
variabelvariabel dapatdapat diubahdiubah oleholeh setiapsetiap prosedurprosedur
yangyang mengaksesmengakses variabelvariabel tersebuttersebut atauatau
variabelvariabel yangyang samasama dideklarasikandideklarasikan
berbedaberbeda dalamdalam prosedurprosedur lainlain
UntukUntuk menghindarimenghindari kesalahankesalahan semacamsemacam
ituitu,, variabelvariabel dapatdapat dikirimdikirim daridari satusatu
prosedurprosedur keke yang lainyang lain sebagaisebagai argumenargumen
PengirimanPengiriman argumenargumen variabelvariabel dapatdapat
berdasarberdasar referensireferensi atauatau berdasarberdasar nilainilai
variabelvariabel
8
Nizam ©
MengirimMengirim variabelvariabel berdasarberdasar referensireferensi
ContohContoh::
Sub procedure3()Sub procedure3()
DimDim pesanpesan
pesanpesan = "Pesan asli!"= "Pesan asli!"
procedure4procedure4 pesanpesan
MsgBoxMsgBox pesanpesan
End SubEnd Sub
Sub procedure4(Sub procedure4(kirimankiriman))
MsgBoxMsgBox kirimankiriman
kirimankiriman = "pesan telah sampai!"= "pesan telah sampai!"
End SubEnd Sub
BilaBila procedure3procedure3 dijalankandijalankan,, mulamula--mulamula pesanpesan berisiberisi ““PesanPesan
asliasli!!”” kemudiankemudian berisiberisi ““pesanpesan telahtelah sampaisampai!!””
Nizam ©
MengirimMengirim variabelvariabel berdasarberdasar nilainilai
ContohContoh::
Sub procedure5()Sub procedure5()
Dim pesanDim pesan
pesan = "Pesan asli!"pesan = "Pesan asli!"
procedure6 pesanprocedure6 pesan
MsgBox pesanMsgBox pesan
End SubEnd Sub
Sub procedure6(ByVal pesan)Sub procedure6(ByVal pesan)
MsgBox pesanMsgBox pesan
pesan = "terimakasih atas kirimannya!"pesan = "terimakasih atas kirimannya!"
End SubEnd Sub
BilaBila procedure5procedure5 dijalankandijalankan,, variabelvariabel pesanpesan akanakan tetaptetap
berisiberisi ““PesanPesan asliasli!!”” karenakarena yangyang dikirimdikirim hanyahanya nilainyanilainya
((ByValByVal))
Nizam ©
VariabelVariabel statisstatis
DalamDalam VBA,VBA, variabelvariabel dalamdalam prosedurprosedur
setelahsetelah digunakandigunakan nilainyanilainya akanakan
dihapusdihapus;; ketikaketika prosedurprosedur dipanggildipanggil
lagilagi,, akanakan diisidiisi// hitunghitung lagilagi
BilaBila inginingin nilainilai variabelvariabel taktak diubahdiubah
bisabisa dipakaidipakai variabelvariabel statisstatis (static(static
variable)variable)
Nizam ©
ContohContoh variabelvariabel statikstatik
Sub tesStatik()Sub tesStatik()
ProsedurStatikProsedurStatik
ProsedurStatikProsedurStatik
End SubEnd Sub
Sub ProsedurStatik()Sub ProsedurStatik()
Static varStatikStatic varStatik
Dim varRegulerDim varReguler
varStatik = varStatik + 5varStatik = varStatik + 5
varReguler = varReguler + 5varReguler = varReguler + 5
MsgBox "varStatik = " & varStatik & " dan varReguler = " &MsgBox "varStatik = " & varStatik & " dan varReguler = " &
varRegulervarReguler
End SubEnd Sub
SaatSaat dijalankandijalankan nilainilai varStatikvarStatik mulamula--mulamula 5,5, lalulalu 10,10,
sedangkansedangkan varRegulervarReguler tetaptetap 55
Nizam ©
MenghindariMenghindari kesalahankesalahan variabelvariabel
KadangKadang kitakita salahsalah mengetikmengetik namanama
variabelvariabel,, kesalahankesalahan iniini palingpaling seringsering
terjaditerjadi padapada pembuatanpembuatan program yangprogram yang
besarbesar
UntukUntuk menghidarinyamenghidarinya,, gunakangunakan perintahperintah
explicit,explicit, makamaka VBAVBA akanakan memberimemberi pesarpesar
errorerror bilabila ketemuketemu variabelvariabel barubaru yangyang
belumbelum dideklarasikandideklarasikan
CaranyaCaranya::
•• DenganDengan mendeklarasikanmendeklarasikan didi bagianbagian atasatas modulmodul
Option ExplicitOption Explicit
•• PilihPilih Tools|OptionTools|Option modulmodul general,general,
pilih/contrengpilih/contreng Require Variable DeclarationRequire Variable Declaration
Nizam ©
JenisJenis datadata variabelvariabel
VBAVBA secarasecara otomatisotomatis memberimemberi jenisjenis datadata
variant (22 byte)variant (22 byte) untukuntuk setiapsetiap variabelvariabel
yangyang dideklarasikandideklarasikan tanpatanpa diberidiberi jenisjenis
datadata
UntukUntuk menghematmenghemat memorimemori dandan
menambahmenambah efisiensiefisiensi programprogram jenisjenis datadata
sebaiknyasebaiknya dinyatakandinyatakan padapada saatsaat deklarasideklarasi
variabelvariabel
Cara:Cara:
•• DimDim namaVariabelnamaVariabel AsAs JenisDataJenisData
ContohContoh::
•• DimDim katakata As StringAs String
•• DimDim noMhsnoMhs As IntegerAs Integer
9
Nizam ©
JenisJenis datadata variabelvariabel
DapatDapat untukuntuk sembarangsembarang jenisjenis datadata22 bytes +22 bytes +
1 byte per1 byte per
charchar
VariantVariant
(string)(string)
DapatDapat untukuntuk sembarangsembarang jenisjenis datadata16 byte16 byteVariantVariant
UntukUntuk teksteks,, dapatdapat sampaisampai 64KByte64KByte$$1 byte per1 byte per
charchar
StringString
BilBil pecahanpecahan presisipresisi tunggaltunggal!!4 bytes4 bytesSingleSingle
ReferensiReferensi obyekobyek4 bytes4 bytesObjectObject
BilanganBilangan cacahcacah besarbesar --2,147,483,6482,147,483,648 sampaisampai
2,147,483,64872,147,483,6487
&&4 bytes4 bytesLongLong
UntukUntuk bilbil cacahcacah antaraantara --32,76832,768 sampaisampai 32,76732,767%%2 bytes2 bytesIntegerInteger
UntukUntuk tanggaltanggal,, antaraantara 1 Jan 10001 Jan 1000 hinggahingga 3131
DesemberDesember 99999999
#date##date#8 bytes8 bytesDateDate
PressiPressi gandaganda,, bilanganbilangan negatifnegatif --
1.79769313486232E3081.79769313486232E308 hinggahingga --
4.9406564581247E4.9406564581247E--324;324; bilanganbilangan positifpositif daridari
4.9406564581247E4.9406564581247E--324324 hinggahingga
1.79769313486232E3081.79769313486232E308
##8 bytes8 bytesDoubleDouble
UntukUntuk matamata uanguang,, nilainilai antaraantara --
922,337,203,685,477.5808922,337,203,685,477.5808 hinggahingga
922,337,203,685,477.5808922,337,203,685,477.5808
@@8 bytes8 bytesCurrencyCurrency
NilaiNilai 00 sampaisampai 2552551 byte1 byteByteByte
True & falseTrue & false2 bytes2 bytesBooleanBoolean
CatatanCatatanlambanglambangUkuranUkuranJenisJenis
Nizam ©
defaultdefault jenisjenis datadata
KitaKita dapatdapat menyatakanmenyatakan jenisjenis data defaultdata default
ContohContoh::
DefIntDefInt II--NN
BerartiBerarti semuasemua variabelvariabel yangyang mulaimulai dengandengan hurufhuruf
II hinggahingga N (N (kapitalkapital)) merupakanmerupakan integeintege
Keywords:Keywords:
•• DefBoolDefBool DefDblDefDbl
•• DefByteDefByte DefDateDefDate
•• DefIntDefInt DefStrDefStr
•• DefLngDefLng DefObjDefObj
•• DefSngDefSng DefVarDefVar
Nizam ©
UserUser--defined data typesdefined data types
KitaKita dapatdapat mendefinisikanmendefinisikan jenisjenis datadata sendirisendiri
ContohContoh::
TypeType MahasiswaMahasiswa
namanama As StringAs String
nomhsnomhs As IntegerAs Integer
angkatanangkatan As IntegerAs Integer
tglLhrtglLhr As DateAs Date
End TypeEnd Type
Mahasiswa.namaMahasiswa.nama == ““AhmadAhmad MusaMusa””
Mahasiswa.nomhsMahasiswa.nomhs = 22718= 22718
Mahasiswa.angkatanMahasiswa.angkatan = 2002= 2002
Mahasiswa.tglLhrMahasiswa.tglLhr = #01/01/1985#= #01/01/1985#
Nizam ©
VariabelVariabel arrayarray
VariabelVariabel matriksmatriks dandan vektorvektor dapatdapat
dideklarasikandideklarasikan dengandengan variabelvariabel arrayarray
Cara: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 1Option Base 1 mulaimulai daridari
lariklarik 11
AtauAtau Dim vektor(50 to 100) As DoubleDim vektor(50 to 100) As Double
Dim matriks(1 to 50, 1 to 20)Dim matriks(1 to 50, 1 to 20)
Nizam ©
ArrayArray dinamisdinamis
BilaBila ukuranukuran arrayarray belumbelum diketahuidiketahui,, bisabisa
dideklarasikandideklarasikan sebagaisebagai arrayarray dinamisdinamis
BilaBila dimensinyadimensinya diketahuidiketahui bisabisa dinyatakandinyatakan
kemudiankemudian
DimDim myArraymyArray() As Double() As Double
……
ReDimReDim myArray(105)myArray(105)
ReDimReDim akanakan meme--reinisialisasireinisialisasi nilainilai variabelvariabel dalamdalam
arrayarray tersebuttersebut,, bilabila nilainilai variabelvariabel inginingin taktak didi--
reinisialisasireinisialisasi::
ReDimReDim Preserve myArray(105)Preserve myArray(105)
DimensiDimensi arrayarray bisabisa diketahuidiketahui dengandengan
LBound(namaArrayLBound(namaArray)) indeksindeks bawahbawah
UBound(namaArrayUBound(namaArray)) indeksindeks atasatas Nizam ©
contohcontoh
SubSub PerformCalculationsPerformCalculations()()
DimDim calcValcalcVal() As Double,() As Double, totValtotVal as Integeras Integer
..
..
..
totValtotVal == GetTotalValueGetTotalValue()()
ReDimReDim calcVal(totValcalcVal(totVal))
..
..
End SubEnd Sub
10
Nizam ©
konstantakonstanta
KonstantaKonstanta builtbuilt--inin adaada didi dalamdalam ExcelExcel
untukuntuk propertiesproperties dandan methodsmethods berbagiberbagi
objectsobjects
ContohContoh::
ActiveWIndow.WindowStateActiveWIndow.WindowState==xlMaximizedxlMaximized
UserUser--defined constantsdefined constants
Public|PrivatePublic|Private ConstConst NamaKonstantaNamaKonstanta [ As Type] = expression[ As Type] = expression
ContohContoh::
Public ConstPublic Const gravitasigravitasi As SingleAs Single = 9.81= 9.81
Nizam ©
BagianBagian 33
EkspresiEkspresi VBAVBA
Nizam ©
ApaApa yangyang dibicarakandibicarakan??
StrukturStruktur ekspresiekspresi
Operator VBAOperator VBA
BekerjaBekerja dengandengan ekspresiekspresi numeriknumerik
BekerjaBekerja dengandengan ekspresiekspresi textex/string/string
BekerjaBekerja dengandengan ekspresiekspresi logikalogika
BekerjaBekerja dengandengan ekspresiekspresi tanggaltanggal
formatformat
Nizam ©
StrukturStruktur ekspresiekspresi VBAVBA
VariabelVariabel == statemenstatemen tentangtentang variabelvariabel
contohcontoh::
energy = mass * (energy = mass * (speedOfLightspeedOfLight ^ 2)^ 2)
operand <operand <asignmentasignment> operand &> operand &
operatoroperator
OperandOperand harusharus menggunakanmenggunakan jenisjenis variabelvariabel
yangyang kompatibelkompatibel
OperatorOperator harusharus sesuaisesuai dengandengan jenisjenis datadata
Nizam ©
Operator VBAOperator VBA
AritmetikAritmetik
++ tambahtambah/plus/plus
-- kurangkurang/minus/minus
-- negasinegasi
** kalikali
// bagibagi
 pembagianpembagian integerinteger
^^ pangkatpangkat
ModMod modulusmodulus 10 Mod 5 = 010 Mod 5 = 0
KonkatenasiKonkatenasi untukuntuk jenisjenis data stringdata string
““SoftSoft”” && ““wareware””
Nizam ©
Operator VBAOperator VBA
PembandingPembanding menghasilkanmenghasilkan nilainilai TrueTrue atauatau FalseFalse
== samasama dengandengan 10=510=5 falsefalse
>> LebihLebih besarbesar daridari
<< LebihLebih kecilkecil daridari
>=>= LebihLebih besarbesar atauatau samasama dengandengan
<=<= LebihLebih kecilkecil atauatau samasama dengandengan
<><> TidakTidak samasama dengandengan
LikeLike miripmirip Jo?nJo?n Like JohnLike John TrueTrue
11
Nizam ©
OperatorOperator logikalogika
OperatorOperator logikalogika menghasilkanmenghasilkan nilainilai TrueTrue atauatau
FalseFalse
AndAnd e1 And e2e1 And e2 T if both trueT if both true
EqvEqv e1e1 EqvEqv e2e2 T if both T or both FT if both T or both F
ImpImp e1 Imp e2e1 Imp e2 F if e1 T and e2 FF if e1 T and e2 F
OrOr e1 Or e2e1 Or e2 T if at least one is TT if at least one is T
XorXor e1e1 XorXor e2e2 F if both T or both FF if both T or both F
NotNot NotNot exprexpr T ifT if exprexpr FF
HierarkiHierarki: ^; (: ^; (negasinegasi) ; *) ; * dandan /;/; ; Mod; +; Mod; + dandan --;;
&; comparison; Logical&; comparison; Logical
Nizam ©
FungsiFungsi matematikmatematik
FungsiFungsi 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 digitsyear 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 masamasa
tertentutertentu
PPmt(ratePPmt(rate, per,, per, npernper,, pvpv, fv, type), fv, type)
PembayaranPembayaran periodikperiodik sejumlahsejumlah pinjamanpinjaman atauatau
investasiinvestasi
Pmt(rate,nperPmt(rate,nper,, pvpv, fv, type), fv, type)
NettNett present valuepresent 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 yangIRR yang dimodifikasidimodifikasi untukuntuk cash flowcash flow periodikperiodikMIRR(valuesMIRR(values,, finance_ratefinance_rate,,
reinvest_ratereinvest_rate))
NilaiNilai internal rate of returninternal rate of return serangkaianserangkaian cashcash--
flowsflows
IRR(valuesIRR(values, guess), guess)
PembayaranPembayaran bungabunga untukuntuk masamasa pinjamanpinjaman
tertentutertentu
IPmt(rate,per,nperIPmt(rate,per,nper,, pvpv, fv, type), fv, type)
MenghitungMenghitung nilainilai masamasa depandepan daridari investasiinvestasi atauatau
pinjamanpinjaman
FV(rateFV(rate,, npernper, pmt,, pmt, pvpv, type), type)
MenghitungMenghitung depresiasidepresiasi asetaset dengandengan metodemetode
double declining balancedouble declining balance
DDB(costDDB(cost, salvage, life, period,, salvage, life, period,
factor)factor)
Nizam ©
FungsiFungsi stringstring
DstDst..
karakterkarakter sepanjangsepanjang lengthlength daridari stringstring mulaimulai startstartMid(stringMid(string, start, length), start, length)
MenghilangkanMenghilangkan spasispasiLTrim(stringLTrim(string))
PanjangPanjang karakterkarakterLen(stringLen(string))
PosisiPosisi palingpaling kirikiri daridari stringstring sbgsbg stringstringLeft$(stringLeft$(string, length), length)
PosisiPosisi palingpaling kirikiri daridari stringstring sbgsbg varianvarianLeft(stringLeft(string, length), length)
MengubahMengubah keke hurufhuruf kecilkecil sbgsbg stringstringLCase$(stringLCase$(string))
MengubahMengubah keke hurufhuruf kecilkecil sbgsbg varianvarianLCase(stringLCase(string))
PosisiPosisi bytebyte kejadiankejadian string1string1 dalamdalam string2string2
dihitungdihitung daridari startstart
InStrB(startInStrB(start, string1, string2), string1, string2)
PosisiPosisi karakterkarakter kejadiankejadian string1string1 dalamdalam string2string2
dihitungdihitung daridari startstart
InStr(starInStr(star, string1, string2), string1, string2)
KonversiKonversi expressionexpression keke nilainilai stringstringCStr(expressionCStr(expression))
KarakterKarakter ((sebagaisebagai string)string) untukuntuk kodekode ANSIANSI
charcodecharcode
Chr$(charcodeChr$(charcode))
KarakterKarakter ((sbgsbg varianvarian)) untukuntuk kodekode ANSIANSI charcodecharcodeChr(charcodeChr(charcode))
KarakterKarakter ANSIANSI hurufhuruf pertamapertama stringstringASC(stringASC(string))
Nizam ©
BekerjaBekerja dengandengan ekspresiekspresi logikalogika
Operator AndOperator And
•• Expr1 And Expr2Expr1 And Expr2 TT bilabila keduanyakeduanya TT
Operator OrOperator Or
•• Expr1 Or Expr2Expr1 Or Expr2 TT bilabila salahsalah satusatu TT
OperatorOperator XOrXOr
•• Expr1Expr1 XOrXOr Expr2Expr2 TT bilabila satusatu TT dandan lainnyalainnya FF
OperatorOperator EqvEqv
•• Expr1Expr1 EqvEqv Expr2Expr2 TT bilabila keduanyakeduanya TT atauatau
keuanyakeuanya FF
Operator Imp (Operator Imp (ImplikasiImplikasi))
•• Expr1 Imp Expr2Expr1 Imp Expr2 TT bilabila Expr2 TExpr2 T atauatau keduanyakeduanya
FF Nizam ©
BekerjaBekerja dengandengan tanggaltanggal
TanggalTanggal dalamdalam VBAVBA disimpandisimpan dalamdalam
bentukbentuk rangkaianrangkaian angkaangka,, dengandengan 3131
DesemberDesember 18991899 sebagaisebagai awalawal
((sembarangsembarang)) sehinggasehingga 11 JanuariJanuari 19001900
adalahadalah 1; 3661; 366 adalahadalah 3131 DesemberDesember 1900;1900;
37,98037,980 adalahadalah 2525 DesemberDesember 2003;2003; dstdst..
SaatSaat (jam,(jam, menitmenit,, detikdetik)) dinyatakandinyatakan dalamdalam
pecahanpecahan,, dengandengan 00 adalahadalah tengahtengah malammalam;;
0.50.5 adalahadalah tengahtengah harihari
12
Nizam ©
FormatFormat
UntukUntuk memformatmemformat angkaangka/string yang/string yang
munculmuncul bisabisa digunakandigunakan perintahperintah
Format(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 ©
kajiankajian
PengertianPengertian ObjectObject
HirakiHiraki objectobject
BekerjaBekerja dengandengan propertiproperti objectobject
BekerjaBekerja dengandengan metodemetode objectobject
MenanganiMenangani kejadiankejadian objectobject
BekerjaBekerja dengandengan koleksikoleksi objectobject
Browser objectBrowser object
MereferensiMereferensi pustakapustaka objectobject tambahantambahan
MemberikanMemberikan objectobject padapada variabelvariabel
Operator IsOperator Is
BekerjaBekerja dengandengan beberapabeberapa propertiesproperties dandan
methodsmethods
ObjectObject aplikasiaplikasi
Object windowsObject windows Nizam ©
PengertianPengertian objectobject
ObjectObject adalahadalah segalasegala sesuatusesuatu dalamdalam
aplikasiaplikasi Windows yangWindows yang dapatdapat dilihatdilihat
dandan dimanipulasi/diubahdimanipulasi/diubah
ObjectObject bisabisa berupaberupa satusatu objectobject atauatau
kumpulankumpulan ((collectioncollection) object) object
ContohContoh: workbook, worksheet,: workbook, worksheet,
window, cell, range,window, cell, range, gambargambar,, grafikgrafik,,
dsbdsb..
Nizam ©
caracara memanipulasimemanipulasi ojectoject
CaraCara memanipulasimemanipulasi object:object:
•• MengubahMengubah propertiesproperties
•• MengaktivasiMengaktivasi methodmethod yangyang terkaitterkait dengandengan
objectobject
•• MendefinisiMendefinisi prosedurprosedur yangyang dijalankandijalankan saatsaat
suatusuatu eventevent terjaditerjadi
Ilustrasi/analogiIlustrasi/analogi
•• KomputerKomputer:: objectobject
•• MerekMerek,, jenisjenis prosesorprosesor:: propertyproperty
•• MenulisMenulis suratsurat, main game:, main game: methodmethod
•• DihidupkanDihidupkan,, dibukadibuka,, dimatikandimatikan:: eventevent Nizam ©
HirarkiHirarki objectobject
ObjectObject dalamdalam aplikasiaplikasi OfficeOffice memilikimemiliki
hirarkihirarki daridari yang palingyang paling umumumum
hinggahingga yangyang lebihlebih spesifikspesifik;;
Object palingObject paling umumumum: Application: Application
objectobject programprogram ituitu sendirisendiri.. DalamDalam
Excel Application objectExcel Application object memilikimemiliki >>
15 objects15 objects
13
Nizam ©
ObjectsObjects didi bawahbawah Application objectApplication object
ContainerContainer untukuntuk fungsifungsi--fungsifungsi
worksheet Excelworksheet Excel
WrosheetFunctioWrosheetFunctio
nn
KoleksiKoleksi daridari semuasemua workbooks yangworkbooks yang
terbukaterbuka
WorkbooksWorkbooksWorkbookWorkbook
KumpulanKumpulan windows yangwindows yang terbukaterbukaWindowsWindowsWindowWindow
KoleksiKoleksi namanama--namanama yangyang adaada dalamdalam
semuasemua workbooks yangworkbooks yang terbukaterbuka
NamesNamesNameName
KotakKotak dialog yang builtdialog yang built--inin dalamdalam
ExcelExcel
DialogsDialogsDialogDialog
SemuaSemua file addfile add--in/in/tambahantambahan yangyang
adaada dalamdalam ExcelExcel
AddInsAddInsAddInAddIn
DescriptionDescriptionCollectionCollectionObjectObject
Nizam ©
BekerjaBekerja dengandengan object propertiesobject properties
SintaksSintaks:: Object.PropertyObject.Property
ContohContoh:: Application.ActiveWindowApplication.ActiveWindow
MasalahMasalah::
•• AdaAda beberapabeberapa propertespropertes yangyang jugajuga
merupakanmerupakan objectobject
Nizam ©
Properties .
ActiveMenuBar
ActiveWindow
Calculation
Etc. Properties .
ActiveCell
Caption
DisplayGridlines
Etc.
Application Object
Window Object
Properties .
ColumnWidth
Font
Formula
Etc.
Range Object
Properties .
Italic
Name
Size
Etc.
Font Object
Application.ActiveWindow.ActiveCell.Font.Italic
sama dengan
ActiveCell.Font.Italic Nizam ©
MenetapkanMenetapkan nilainilai propertyproperty
SintaxSintax:: Object.PropertyObject.Property == valuevalue
ValueValue berupaberupa nilainilai pernyataanpernyataan untukuntuk
mensetmenset 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 propertyproperty dapatdapat dicaridicari dengandengan
•• variabelvariabel == Object.PropertyObject.Property
Nizam ©
BekerjaBekerja dengandengan methodsmethods
MethodMethod menggambarkanmenggambarkan apaapa yangyang
dilakukandilakukan object;object; contohcontoh:: metodemetode
sort, 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 yangyang
terjaditerjadi padapada object,object, sepertiseperti::
membukamembuka workbookworkbook adalahadalah eventevent
padapada workbookworkbook
ResponsRespons terhadapterhadap eventevent yangyang terjaditerjadi
disebutdisebut event handlersevent handlers
Event handlersEvent handlers akanakan dijalankandijalankan bilabila
eventevent 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 pengguna
Private Sub Workbook_Open()Private Sub Workbook_Open() ‘‘ eventevent membukamembuka
WorkbookWorkbook
Dim pesan, judul, Default, MyValueDim pesan, judul, Default, MyValue
pesan = "Hi, siapa nama anda? " ' minta inputpesan = "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 eventevent
ContohContoh::
' prosedur pemberian salam saat workbook dibuka' prosedur pemberian salam saat workbook dibuka
' meminta nama pengguna' meminta nama pengguna
Private Sub Workbook_Open()Private Sub Workbook_Open() ‘‘eventevent
membukamembuka wbwb
Dim pesan, judul, Default, MyValueDim pesan, judul, Default, MyValue
pesan = "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 objectobject
CollectionCollection adalahadalah himpunanhimpunan objects yangobjects yang serupaserupa;;
sepertiseperti WorkBooksWorkBooks CollectionCollection merupakanmerupakan koleksikoleksi
workbook yangworkbook yang terbukaterbuka
CollectionCollection jugajuga merupakanmerupakan objectobject sehinggasehingga
memilikimemiliki propertiesproperties dandan methodsmethods yangyang bisabisa
dimanipulasidimanipulasi
AnggotaAnggota collectioncollection disebutdisebut elementelement yangyang bisabisa
diaksesdiakses dengandengan namanyanamanya atauatau dengandengan indexindex
ContohContoh::
Workbooks(Workbooks(““Budget.xlsBudget.xls””).Close).Close
ActiveSheet.Picture(1).CopyActiveSheet.Picture(1).Copy
KalauKalau taktak diberidiberi index,index, diasumsikandiasumsikan semuasemua
koleksikoleksi diperlakukandiperlakukan dengandengan method yangmethod yang samasama
Nizam ©
Object browserObject browser
Libraries
dan Project
Template
Code
Properties
Methods
Events
Nizam ©
BekerjaBekerja dengandengan object browserobject browser
MenunjukkanMenunjukkan
objectsobjects yangyang adaada
padapada satusatu library,library,
properties,properties,
methodsmethods dandan
eventsevents yangyang terkaitterkait
dengandengan objectobject
Pencari object
Nizam ©
MemasukkanMemasukkan objectobject dalamdalam variabelvariabel
SintaxSintax:: variableNamevariableName == ObjectNameObjectName
DimDim budgetSheetbudgetSheet As ObjectAs Object
SetSet budgetSheetbudgetSheet =_=_
Workbooks(Workbooks(““Budget.xlsBudget.xls””).Worksheets().Worksheets(““20032003
Budget)Budget)
LebihLebih baikbaik::
DimDim budgetSheetbudgetSheet As WorksheetAs Worksheet
SetSet budgetSheetbudgetSheet =_=_
Workbooks(Workbooks(““Budget.xlsBudget.xls””).Worksheets().Worksheets(““20032003
Budget)Budget)
15
Nizam ©
Operator IsOperator Is
KitaKita kadangkadang perluperlu membandingkanmembandingkan
beberapabeberapa objects, VBAobjects, VBA menyediakanmenyediakan
operator Isoperator Is untukuntuk membandingkanmembandingkan
duadua objectsobjects
HasilHasil == Object1Object1 IsIs Object2Object2
•• Object1Object1 dandan Object2Object2 adalahadalah objectobject atauatau
variabelvariabel,, bilabila samasama,, hasilhasil akanakan TrueTrue,, bilabila
bedabeda akanakan FalseFalse
Nizam ©
BekerjaBekerja dengandengan propertiesproperties dandan methodsmethods
yangyang banyakbanyak (1/3)(1/3)
ContohContoh::
SubSub FormatRangeFormatRange()()
Worksheets(Worksheets(““Sheet1Sheet1””).Range().Range(““B2:B5B2:B5””).Style =).Style = ““CurrencyCurrency””
Worksheets(Worksheets(““Sheet1Sheet1””).Range().Range(““B2:B5B2:B5””).WrapText= True).WrapText= True
Worksheets(Worksheets(““Sheet1Sheet1””).Range().Range(““B2:B5B2:B5””).Font.Size = 16).Font.Size = 16
Worksheets(Worksheets(““Sheet1Sheet1””).Range().Range(““B2:B5B2:B5””).Font.Bold = True).Font.Bold = True
Worksheets(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 propertiesproperties dandan methodsmethods
yangyang banyakbanyak (2/3)(2/3)
ContohContoh yangyang 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 propertiesproperties dandan methodsmethods
yangyang banyakbanyak (3/3)(3/3)
ContohContoh yangyang lebihlebih baikbaik lagilagi::
Sub FormatRange3()Sub FormatRange3()
With Worksheets(With Worksheets(““Sheet1Sheet1””).Range().Range(““B2:B5B2:B5””))
.Style =.Style = ““CurrencyCurrency””
.WrapText= True.WrapText= True
With .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 With
End SubEnd Sub
Nizam ©
ObjectObject aplikasiaplikasi
Application ObjectApplication Object merupakanmerupakan containercontainer yangyang
berisiberisi semuasemua ojectoject dalamdalam aplikasiaplikasi yangyang
dijalankandijalankan; object; object iniini memilikimemiliki beberapabeberapa
propertiesproperties dandan methodsmethods yangyang banyakbanyak gunanyagunanya
BeberapaBeberapa contohcontoh
•• Application.ActivePrinterApplication.ActivePrinter:: mengembalikanmengembalikan himpunanhimpunan
printer driver yangprinter driver yang tersediatersedia
•• Application.ActiveWindowApplication.ActiveWindow:: mengembalikanmengembalikan window yangwindow yang
sedangsedang aktifaktif
•• Application.CaptionApplication.Caption:: mengembalikanmengembalikan juduljudul aplikasiaplikasi
•• Application.DialogsApplication.Dialogs: built: built--in dialog yangin dialog yang adaada dlmdlm aplikasiaplikasi
•• Application.VisibleApplication.Visible:: mengaturmengatur aplikasiaplikasi terlihat/tidakterlihat/tidak
•• Application.WidthApplication.Width:: lebarlebar windowwindow aplikasiaplikasi
•• Application.WindowsApplication.Windows:: kumpulankumpulan windowwindow aplikasiaplikasi yangyang
aktifaktif
Nizam ©
MethodsMethods padapada Application ObjectApplication Object
Application objectApplication object memilikimemiliki beberapabeberapa
methods,methods, diantaranyadiantaranya
•• Application.HelpApplication.Help:: mendisplaymendisplay sistemsistem
HelpHelp aplikasiaplikasi
•• Application.QuitApplication.Quit:: keluarkeluar daridari aplikasiaplikasi
•• Application.RepeatApplication.Repeat:: mengulangmengulang kegiatankegiatan
yangyang barubaru sajasaja dilakukandilakukan
•• Application.EnableCancelKeyApplication.EnableCancelKey
16
Nizam ©
Object WindowObject Window
MenspesifikasiMenspesifikasi object windowobject window
•• DenganDengan indeksindeks,, atauatau dengandengan
menuliskanmenuliskan namanyanamanya
Windows(1)Windows(1)
Windows(Windows(““Nilai.xlsNilai.xls””),), atauatau
ActiveWindowActiveWindow window yangwindow yang saatsaat iniini
sedangsedang aktifaktif
MembukaMembuka windowwindow barubaru
•• Window.NewWindowWindow.NewWindow
Nizam ©
Object WindowObject Window
BeberapaBeberapa 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.UsableWidth
BeberapaBeberapa 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 yangyang akanakan dibahasdibahas??
PengendalianPengendalian aluralur programprogram
IfIf……ThenThen
IfIf……ThenThen……ElseElse
MembuatMembuat keputusankeputusan gandaganda
FungsiFungsi yangyang mengambilmengambil keputusankeputusan
LoopsLoops
DoDo……LoopLoop
ForFor……NextNext
For EachFor Each……NextNext
ExitExit
Nizam ©
PengendalianPengendalian aluralur programprogram
AlurAlur programprogram dikendalikandikendalikan dengandengan
logikalogika pengambilanpengambilan keputusankeputusan (True(True
atauatau False)False)
If..ThenIf..Then
•• Langsung/sebarisLangsung/sebaris
IfIf conditioncondition ThenThen statementstatement
•• DenganDengan blokblok
IfIf conditioncondition ThenThen
[[statementsstatements]]
End IfEnd If
Nizam ©
PengendalianPengendalian aluralur programprogram
IfIf……ThenThen……ElseElse
•• SintaksSintaks
IfIf conditioncondition ThenThen
[[TrueStatementsTrueStatements]]
ElseElse
[[FalseStatementsFalseStatements]]
End IfEnd If
ContohContoh::
FunctionFunction FutureValue(RateFutureValue(Rate,, NperNper, Pmt, Frequency), Pmt, Frequency)
If Frequency =If Frequency = ““MonthlyMonthly”” ThenThen
FutureValueFutureValue == FV(RateFV(Rate / 12,/ 12, NperNper * 12, Pmt / 12)* 12, Pmt / 12) ‘‘ freqfreq
monthlymonthly
ElseElse
FutureValueFutureValue == FV(RateFV(Rate / 4,/ 4, NPerNPer * 4, Pmt / 4)* 4, Pmt / 4) ‘‘ freqfreq
quarterlyquarterly
End IfEnd If
End FunctionEnd Function
17
Nizam ©
KeputusanKeputusan gandaganda
PenggunaanPenggunaan operator Andoperator And dandan OrOr
IfIf condition1condition1 AndAnd condition2condition2 ThenThen
[[TrueStatementsTrueStatements]]
ElseElse
[[FalseStatementsFalseStatements]]
End IfEnd If
ContohContoh::
Function FutureValue2(Rate,Function FutureValue2(Rate, NperNper, Pmt, Frequency), Pmt, Frequency)
If Frequency <>If Frequency <> ““MonthlyMonthly”” And Frequency <>And Frequency <> ““QuarterlyQuarterly”” ThenThen
MsgBoxMsgBox ““TheThe FrequenyFrequeny argument must be eitherargument must be either ““ && “””“””MonthlyMonthly””””
or_or_
“”“”QuarterlyQuarterly””””!!””
Exit FunctionExit Function
End IfEnd If
If Frequency =If Frequency = ““MonthlyMonthly”” ThenThen
FutureValue2 =FutureValue2 = FV(RateFV(Rate / 12,/ 12, NperNper * 12, Pmt / 12)* 12, Pmt / 12) ‘‘ freq monthlyfreq monthly
ElseElse
FutureValue2 =FutureValue2 = FV(RateFV(Rate / 4,/ 4, NPerNPer * 4, Pmt / 4)* 4, Pmt / 4) ‘‘ freq quarterlyfreq quarterly
End IfEnd If
End FunctionEnd Function Nizam ©
KeputusanKeputusan gandaganda
PenggunaanPenggunaan statement multi Ifstatement multi If……ThenThen……ElseElse
IfIf condition1condition1 ThenThen
[[condition1condition1 TrueStatementsTrueStatements]]
ElseIfElseIf condition2condition2
[[condition2condition2 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”” ThenThen
FutureValue3 =FutureValue3 = FV(RateFV(Rate / 12,/ 12, NperNper * 12, Pmt / 12)* 12, Pmt / 12) ‘‘ freq monthlyfreq monthly
ElseIfElseIf Frequency =Frequency = ““QuarterlyQuarterly”” ThenThen
FutureValue3 =FutureValue3 = FV(RateFV(Rate / 4,/ 4, NPerNPer * 4, Pmt / 4)* 4, Pmt / 4) ‘‘ freq quarterlyfreq quarterly
ElseElse
MsgBoxMsgBox ““The Frequency argument must be eitherThe Frequency argument must be either ““ & _& _
“””“””MonthlyMonthly”””” oror “”“”QuarterlyQuarterly””””!!””
End IfEnd If
End FunctionEnd Function
Nizam ©
KeputusanKeputusan gandaganda
PenggunaanPenggunaan Select CaseSelect Case
Select CaseSelect Case TestExpressionTestExpression
CaseCase FirstCaseListFirstCaseList
[[FirstStatementsFirstStatements]]
CaseCase SecondCaseListSecondCaseList
[[SecondStatementsSecondStatements]]
<etc.><etc.>
CaseCase ElseElse
[[ElseStatementsElseStatements]]
End SelectEnd Select
ContohContoh::
Function FutureValue4(Rate,Function FutureValue4(Rate, NperNper, Pmt, Frequency), Pmt, Frequency)
Select Case FrequencySelect Case Frequency
CaseCase ““MonthlyMonthly””
FutureValue4 =FutureValue4 = FV(RateFV(Rate / 12,/ 12, NperNper * 12, Pmt / 12)* 12, Pmt / 12) ‘‘ freqfreq
monthlymonthly
CaseCase ““QuarterlyQuarterly””
FutureValue3 =FutureValue3 = FV(RateFV(Rate / 4,/ 4, NPerNPer * 4, Pmt / 4)* 4, Pmt / 4) ‘‘ freqfreq
quarterlyquarterly
Case ElseCase Else
MsgBoxMsgBox ““The Frequency argument must be eitherThe Frequency argument must be either ““ & _& _
“””“””MonthlyMonthly”””” oror “”“”QuarterlyQuarterly””””!!””
End SelectEnd Select
End FunctionEnd Function
Nizam ©
KeputusanKeputusan gandaganda
ContohContoh lain:lain: mengubahmengubah nilainilai angkaangka keke hurufhuruf
FunctionFunction nilHuruf(nilAngkanilHuruf(nilAngka As Integer) As StringAs Integer) As String
Select CaseSelect Case nilAngkanilAngka
Case Is < 0Case Is < 0
nilHurufnilHuruf == ““SalahSalah datadata nilainilai kurangkurang daridari 0!0!””
Case Is < 50Case Is < 50
nilHurufnilHuruf == ““FF””
Case Is < 60Case Is < 60
nilHurufnilHuruf == ““DD””
Case Is < 70Case Is < 70
nilHurufnilHuruf == ““CC””
Case Is < 80Case Is < 80
nilHurufnilHuruf == ““BB””
Case Is <= 100Case Is <= 100
nilHurufnilHuruf == ““AA””
Case ElseCase Else
nilHurufnilHuruf == ““SalahSalah!! NilaiNilai lebihlebih daridari 100!100!””
End SelectEnd Select
End FunctionEnd Function
Nizam ©
FungsiFungsi pengambilpengambil keputusankeputusan
StatementStatement IIfIIf (Inline If)(Inline If)
•• SintaksSintaks:: IIfIIf ((conditioncondition,, TrueResultTrueResult,, FalseResultFalseResult))
FunctionFunction 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, ……))
FunctionFunction NamaHari(noHariNamaHari(noHari As Integer) As StringAs Integer) As String
NamaHariNamaHari == Choose(noHariChoose(noHari,, ““AhadAhad””,, ““SeninSenin””,, ““SelasaSelasa””,, ““RabuRabu””,, ““KamisKamis””,,
““JumatJumat””,_,_ ““SabtuSabtu””))
End FunctionEnd Function
Nizam ©
FungsiFungsi pengambilpengambil keputusankeputusan
FungsiFungsi SwitchSwitch
•• SintaksSintaks: Switch(: Switch(expr1, value1, value2expr1, value1, value2,, ……))
Function NilHuruf2(nilAngka As Integer) As StringFunction NilHuruf2(nilAngka As Integer) As String
NilHuruf2 =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……LoopLoop
SintaksSintaks::
•• Do WhileDo While conditioncondition ‘‘ checkcheck duludulu barubaru looploop
[statement][statement] ‘‘ dilakukandilakukan selamaselama kondisikondisi TT
LoopLoop
•• DoDo ‘‘ lakukanlakukan duludulu barubaru checkcheck
[statement][statement]
Loop WhileLoop While conditioncondition ‘‘ diulangdiulang bilabila kondisikondisi TT
•• Do UntilDo Until conditioncondition ‘‘ checkcheck duludulu barubaru looploop
[[statemntstatemnt]] ‘‘ dilakukandilakukan selamaselama kondisikondisi FF
LoopLoop
•• DoDo ‘‘ dilakukandilakukan duludulu barubaru checkcheck
[statement][statement]
Loop UntilLoop Until conditioncondition ‘‘ diulangdiulang bilabila kondisikondisi masihmasih FF
Nizam ©
PengulanganPengulangan -- looploop
ContohContoh
SubSub BigNumbersBigNumbers()()
DimDim rowNumrowNum As Integer,As Integer, colNumcolNum As Integer,As Integer, currCellcurrCell AsAs
RangeRange
rowNumrowNum == ActiveCell.RowActiveCell.Row
colNumcolNum == ActiveCell.ColumnActiveCell.Column
SetSet currCellcurrCell == ActiveSheet.Cells(rowNumActiveSheet.Cells(rowNum,, ColNumColNum))
Do WhileDo While currCell.ValuecurrCell.Value <><> “”“”
IfIf IsNumeric(currCell.ValueIsNumeric(currCell.Value) Then) Then
IfIf currCell.ValuecurrCell.Value >= 1000 Then>= 1000 Then
currCell.Font.ColorcurrCell.Font.Color == VBAColor(VBAColor(““magentamagenta””))
End IfEnd If
rowNumrowNum == rowNumrowNum + 1+ 1
SetSet currCellcurrCell == ActiveSheet.Cells(rowNumActiveSheet.Cells(rowNum,, colNumcolNum))
LoopLoop
End SubEnd Sub
Nizam ©
ForFor …… NextNext
LoopLoop dengandengan ForFor …… NextNext
SintaksSintaks: For: For counter = startcounter = start ToTo end [end [inkremeninkremen]]
[statement][statement]
Next [Next [countercounter]]
SubSub LoopTestLoopTest()()
Dim counter As IntegerDim counter As Integer
For 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 counter
Application.StatusBarApplication.StatusBar = False= False
End SubEnd Sub Nizam ©
For EachFor Each …… NextNext
LoopLoop dengandengan For EachFor Each …… NextNext
SintaksSintaks: For Each: For Each elementelement InIn groupgroup
[statement][statement]
Next [Next [elementelement]]
SubSub convertProperconvertProper()()
DimDim cellObjectcellObject As ObjectAs Object
For EachFor Each cellObjectcellObject In SelectionIn Selection
cellObject.FormulacellObject.Formula ==
Application.Proper(cellObjectApplication.Proper(cellObject))
NextNext
End SubEnd Sub
Nizam ©
PenggunaanPenggunaan Exit ForExit For atauatau Exit DoExit Do
KadangKadang kitakita perluperlu keluarkeluar daridari LoopLoop
CaranyaCaranya:: gunakangunakan Exit ForExit For atauatau Exit DoExit Do
Sub BigNumbers2()Sub BigNumbers2()
DimDim rowNumrowNum As Integer,As Integer, colNumcolNum As Integer,As Integer, currCellcurrCell As RangeAs Range
rowNumrowNum == ActiveCell.RowActiveCell.Row
colNumcolNum == ActiveCell.ColumnActiveCell.Column
SetSet currCellcurrCell == ActiveSheet.Cells(rowNumActiveSheet.Cells(rowNum,, ColNumColNum))
Do WhileDo While currCell.ValuecurrCell.Value <><> ““ ””
IfIf IsNumeric(currCell.ValueIsNumeric(currCell.Value) Then) Then
IfIf currCell.ValuecurrCell.Value >= 1000 Then>= 1000 Then
currCell.Font.ColorcurrCell.Font.Color == VBAColor(VBAColor(““magentamagenta””))
End IfEnd If
ElseElse
Exit DoExit Do ‘‘ bilabila bukanbukan angkaangka keluarkeluar daridari
Do loopDo loop
End IfEnd If
rowNumrowNum == rowNumrowNum + 1+ 1
SetSet currCellcurrCell == ActiveSheet.Cells(rowNumActiveSheet.Cells(rowNum,, colNumcolNum))
LoopLoop
End SubEnd Sub
Nizam ©
TugasTugas -- 11
SalahSalah satusatu caracara untukuntuk mencarimencari akarakar
persamaanpersamaan ff adalahadalah dengandengan metodemetode
NewtonNewton
•• BilaBila f(xf(x) =) = 00 adalahadalah fungsifungsi yangyang akanakan dicaridicari
akarnyaakarnya,, dandan xxnn adalahadalah perkiraanperkiraan akarakar f(xf(x))
makamaka pendekatanpendekatan nilainilai akarakar persamaanpersamaan
berikutnyaberikutnya 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 VBAVBA untukuntuk
mencarimencari akarakar fungsifungsi f(xf(x) = 0) = 0 yangyang
merupakanmerupakan fungsifungsi yangyang dapatdapat
didefinisikandidefinisikan dalamdalam program (userprogram (user--
defined)defined)
19
Nizam ©
TugasTugas -- 22
BuatBuat sekumpulansekumpulan programprogram dandan
fungsifungsi untukuntuk melakukanmelakukan operasioperasi
bilanganbilangan komplexkomplex:: penjumlahanpenjumlahan,,
penguranganpengurangan,, perkalianperkalian,, pembagianpembagian
Nizam ©
TugasTugas 33
BuatBuat satusatu programprogram aplikasiaplikasi VBA excelVBA excel
untukuntuk bidangbidang teknikteknik
sipil/fisika/mekanikasipil/fisika/mekanika

More Related Content

Viewers also liked

Viewers also liked (7)

AMprover - Productblad 2015
AMprover - Productblad 2015AMprover - Productblad 2015
AMprover - Productblad 2015
 
Crowdfunding
CrowdfundingCrowdfunding
Crowdfunding
 
Litchfield Schools Welcome New Staff
Litchfield Schools Welcome New StaffLitchfield Schools Welcome New Staff
Litchfield Schools Welcome New Staff
 
SAMSUNG GALAXY S6 EDGE
SAMSUNG GALAXY S6 EDGESAMSUNG GALAXY S6 EDGE
SAMSUNG GALAXY S6 EDGE
 
Economics problems and the PPC
Economics problems and the PPC Economics problems and the PPC
Economics problems and the PPC
 
ErikCVupdate.docx (1)
ErikCVupdate.docx (1)ErikCVupdate.docx (1)
ErikCVupdate.docx (1)
 
Apostila calculo
Apostila calculoApostila calculo
Apostila calculo
 

Similar to Vba lengkap

Bab viii aplikasi perkantoran
Bab viii aplikasi perkantoranBab viii aplikasi perkantoran
Bab viii aplikasi perkantoranZona Computer
 
Modul kuliah-vba-lengkap ok
Modul kuliah-vba-lengkap okModul kuliah-vba-lengkap ok
Modul kuliah-vba-lengkap okAndi Simanjuntak
 
Tugas1 aplikasiniaga 6703151018
Tugas1 aplikasiniaga 6703151018Tugas1 aplikasiniaga 6703151018
Tugas1 aplikasiniaga 6703151018ramdhanfrmsyh
 
Slide 2 pengantar komp
Slide 2   pengantar kompSlide 2   pengantar komp
Slide 2 pengantar kompAska Hamdan
 
Belajar vb pada excel
Belajar vb pada excelBelajar vb pada excel
Belajar vb pada excelEdi Rakhmat
 
funny yuni
funny yunifunny yuni
funny yunimasmardi
 
Pertemuan_5_-_Pengenalan_Excel_dan_fungsi_dasar_Ms.Excel_REV.pptx
Pertemuan_5_-_Pengenalan_Excel_dan_fungsi_dasar_Ms.Excel_REV.pptxPertemuan_5_-_Pengenalan_Excel_dan_fungsi_dasar_Ms.Excel_REV.pptx
Pertemuan_5_-_Pengenalan_Excel_dan_fungsi_dasar_Ms.Excel_REV.pptxgandurejo2004
 
Tugas1 aplikasi niaga_6703151057
Tugas1 aplikasi niaga_6703151057Tugas1 aplikasi niaga_6703151057
Tugas1 aplikasi niaga_6703151057CikkoChang01
 
Pengenalan komputer i
Pengenalan komputer iPengenalan komputer i
Pengenalan komputer iTulus Harefa
 
materi-kelas-8-reguler-bab-11.ppt
materi-kelas-8-reguler-bab-11.pptmateri-kelas-8-reguler-bab-11.ppt
materi-kelas-8-reguler-bab-11.pptFardianFardian4
 
Fungsi pada java script
Fungsi pada java scriptFungsi pada java script
Fungsi pada java scriptrahmadina217
 
Pemrograman Desktop VB
Pemrograman Desktop VBPemrograman Desktop VB
Pemrograman Desktop VBfikri yusuf
 
tugas SIM software
tugas SIM softwaretugas SIM software
tugas SIM software20LMS
 

Similar to Vba lengkap (20)

Bab viii aplikasi perkantoran
Bab viii aplikasi perkantoranBab viii aplikasi perkantoran
Bab viii aplikasi perkantoran
 
Modul kuliah-vba-lengkap ok
Modul kuliah-vba-lengkap okModul kuliah-vba-lengkap ok
Modul kuliah-vba-lengkap ok
 
Tugas1 aplikasiniaga 6703151018
Tugas1 aplikasiniaga 6703151018Tugas1 aplikasiniaga 6703151018
Tugas1 aplikasiniaga 6703151018
 
Slide 2 pengantar komp
Slide 2   pengantar kompSlide 2   pengantar komp
Slide 2 pengantar komp
 
Belajar vb pada excel
Belajar vb pada excelBelajar vb pada excel
Belajar vb pada excel
 
Pert 3.pptx
Pert 3.pptxPert 3.pptx
Pert 3.pptx
 
perangkat lunak lembar sebar
perangkat lunak lembar sebarperangkat lunak lembar sebar
perangkat lunak lembar sebar
 
funny yuni
funny yunifunny yuni
funny yuni
 
Pertemuan_5_-_Pengenalan_Excel_dan_fungsi_dasar_Ms.Excel_REV.pptx
Pertemuan_5_-_Pengenalan_Excel_dan_fungsi_dasar_Ms.Excel_REV.pptxPertemuan_5_-_Pengenalan_Excel_dan_fungsi_dasar_Ms.Excel_REV.pptx
Pertemuan_5_-_Pengenalan_Excel_dan_fungsi_dasar_Ms.Excel_REV.pptx
 
Scilab
ScilabScilab
Scilab
 
Tugas1 aplikasi niaga_6703151057
Tugas1 aplikasi niaga_6703151057Tugas1 aplikasi niaga_6703151057
Tugas1 aplikasi niaga_6703151057
 
Pengenalan komputer i
Pengenalan komputer iPengenalan komputer i
Pengenalan komputer i
 
materi-kelas-8-reguler-bab-11.ppt
materi-kelas-8-reguler-bab-11.pptmateri-kelas-8-reguler-bab-11.ppt
materi-kelas-8-reguler-bab-11.ppt
 
Microsoft Excel 2007
Microsoft Excel 2007Microsoft Excel 2007
Microsoft Excel 2007
 
Fungsi pada java script
Fungsi pada java scriptFungsi pada java script
Fungsi pada java script
 
Matlab Tutorial Chapter 1
Matlab Tutorial Chapter 1Matlab Tutorial Chapter 1
Matlab Tutorial Chapter 1
 
Software computer
Software computerSoftware computer
Software computer
 
Pemrograman Desktop VB
Pemrograman Desktop VBPemrograman Desktop VB
Pemrograman Desktop VB
 
Tugas 2
Tugas 2Tugas 2
Tugas 2
 
tugas SIM software
tugas SIM softwaretugas SIM software
tugas SIM software
 

Recently uploaded

MODUL P5 KEWIRAUSAHAAN SMAN 2 SLAWI 2023.pptx
MODUL P5 KEWIRAUSAHAAN SMAN 2 SLAWI 2023.pptxMODUL P5 KEWIRAUSAHAAN SMAN 2 SLAWI 2023.pptx
MODUL P5 KEWIRAUSAHAAN SMAN 2 SLAWI 2023.pptxSlasiWidasmara1
 
aksi nyata - aksi nyata refleksi diri dalam menyikapi murid.pdf
aksi nyata - aksi nyata refleksi diri dalam menyikapi murid.pdfaksi nyata - aksi nyata refleksi diri dalam menyikapi murid.pdf
aksi nyata - aksi nyata refleksi diri dalam menyikapi murid.pdfwalidumar
 
Kontribusi Islam Dalam Pengembangan Peradaban Dunia - KELOMPOK 1.pptx
Kontribusi Islam Dalam Pengembangan Peradaban Dunia - KELOMPOK 1.pptxKontribusi Islam Dalam Pengembangan Peradaban Dunia - KELOMPOK 1.pptx
Kontribusi Islam Dalam Pengembangan Peradaban Dunia - KELOMPOK 1.pptxssuser50800a
 
Dasar-Dasar Sakramen dalam gereja katolik
Dasar-Dasar Sakramen dalam gereja katolikDasar-Dasar Sakramen dalam gereja katolik
Dasar-Dasar Sakramen dalam gereja katolikThomasAntonWibowo
 
Paparan Refleksi Lokakarya program sekolah penggerak.pptx
Paparan Refleksi Lokakarya program sekolah penggerak.pptxPaparan Refleksi Lokakarya program sekolah penggerak.pptx
Paparan Refleksi Lokakarya program sekolah penggerak.pptxIgitNuryana13
 
Bab 6 Kreatif Mengungap Rasa dan Realitas.pdf
Bab 6 Kreatif Mengungap Rasa dan Realitas.pdfBab 6 Kreatif Mengungap Rasa dan Realitas.pdf
Bab 6 Kreatif Mengungap Rasa dan Realitas.pdfbibizaenab
 
bab 6 ancaman terhadap negara dalam bingkai bhinneka tunggal ika
bab 6 ancaman terhadap negara dalam bingkai bhinneka tunggal ikabab 6 ancaman terhadap negara dalam bingkai bhinneka tunggal ika
bab 6 ancaman terhadap negara dalam bingkai bhinneka tunggal ikaAtiAnggiSupriyati
 
Perumusan Visi dan Prakarsa Perubahan.pptx
Perumusan Visi dan Prakarsa Perubahan.pptxPerumusan Visi dan Prakarsa Perubahan.pptx
Perumusan Visi dan Prakarsa Perubahan.pptxadimulianta1
 
Pendidikan-Bahasa-Indonesia-di-SD MODUL 3 .pptx
Pendidikan-Bahasa-Indonesia-di-SD MODUL 3 .pptxPendidikan-Bahasa-Indonesia-di-SD MODUL 3 .pptx
Pendidikan-Bahasa-Indonesia-di-SD MODUL 3 .pptxdeskaputriani1
 
Diskusi PPT Sistem Pakar Sesi Ke-4 Simple Naïve Bayesian Classifier .pdf
Diskusi PPT Sistem Pakar Sesi Ke-4 Simple Naïve Bayesian Classifier .pdfDiskusi PPT Sistem Pakar Sesi Ke-4 Simple Naïve Bayesian Classifier .pdf
Diskusi PPT Sistem Pakar Sesi Ke-4 Simple Naïve Bayesian Classifier .pdfHendroGunawan8
 
Modul Projek - Batik Ecoprint - Fase B.pdf
Modul Projek  - Batik Ecoprint - Fase B.pdfModul Projek  - Batik Ecoprint - Fase B.pdf
Modul Projek - Batik Ecoprint - Fase B.pdfanitanurhidayah51
 
Sesi 1_PPT Ruang Kolaborasi Modul 1.3 _ ke 1_PGP Angkatan 10.pptx
Sesi 1_PPT Ruang Kolaborasi Modul 1.3 _ ke 1_PGP Angkatan 10.pptxSesi 1_PPT Ruang Kolaborasi Modul 1.3 _ ke 1_PGP Angkatan 10.pptx
Sesi 1_PPT Ruang Kolaborasi Modul 1.3 _ ke 1_PGP Angkatan 10.pptxSovyOktavianti
 
PPT PENELITIAN TINDAKAN KELAS MODUL 5.pptx
PPT PENELITIAN TINDAKAN KELAS MODUL 5.pptxPPT PENELITIAN TINDAKAN KELAS MODUL 5.pptx
PPT PENELITIAN TINDAKAN KELAS MODUL 5.pptxSaefAhmad
 
Keterampilan menyimak kelas bawah tugas UT
Keterampilan menyimak kelas bawah tugas UTKeterampilan menyimak kelas bawah tugas UT
Keterampilan menyimak kelas bawah tugas UTIndraAdm
 
PPT PERUBAHAN LINGKUNGAN MATA PELAJARAN BIOLOGI KELAS X.pptx
PPT PERUBAHAN LINGKUNGAN MATA PELAJARAN BIOLOGI KELAS X.pptxPPT PERUBAHAN LINGKUNGAN MATA PELAJARAN BIOLOGI KELAS X.pptx
PPT PERUBAHAN LINGKUNGAN MATA PELAJARAN BIOLOGI KELAS X.pptxdpp11tya
 
AKSI NYATA BERBAGI PRAKTIK BAIK MELALUI PMM
AKSI NYATA BERBAGI PRAKTIK BAIK MELALUI PMMAKSI NYATA BERBAGI PRAKTIK BAIK MELALUI PMM
AKSI NYATA BERBAGI PRAKTIK BAIK MELALUI PMMIGustiBagusGending
 
AKSI NYATA NARKOBA ATAU OBAT TERLARANG..
AKSI NYATA NARKOBA ATAU OBAT TERLARANG..AKSI NYATA NARKOBA ATAU OBAT TERLARANG..
AKSI NYATA NARKOBA ATAU OBAT TERLARANG..ikayogakinasih12
 
Materi Sosiologi Kelas X Bab 1. Ragam Gejala Sosial dalam Masyarakat (Kurikul...
Materi Sosiologi Kelas X Bab 1. Ragam Gejala Sosial dalam Masyarakat (Kurikul...Materi Sosiologi Kelas X Bab 1. Ragam Gejala Sosial dalam Masyarakat (Kurikul...
Materi Sosiologi Kelas X Bab 1. Ragam Gejala Sosial dalam Masyarakat (Kurikul...asepsaefudin2009
 
contoh penulisan nomor skl pada surat kelulusan .pptx
contoh penulisan nomor skl pada surat kelulusan  .pptxcontoh penulisan nomor skl pada surat kelulusan  .pptx
contoh penulisan nomor skl pada surat kelulusan .pptxHR MUSLIM
 
1.3.a.3. Mulai dari Diri - Modul 1.3 Refleksi 1 Imajinasiku tentang Murid di ...
1.3.a.3. Mulai dari Diri - Modul 1.3 Refleksi 1 Imajinasiku tentang Murid di ...1.3.a.3. Mulai dari Diri - Modul 1.3 Refleksi 1 Imajinasiku tentang Murid di ...
1.3.a.3. Mulai dari Diri - Modul 1.3 Refleksi 1 Imajinasiku tentang Murid di ...MetalinaSimanjuntak1
 

Recently uploaded (20)

MODUL P5 KEWIRAUSAHAAN SMAN 2 SLAWI 2023.pptx
MODUL P5 KEWIRAUSAHAAN SMAN 2 SLAWI 2023.pptxMODUL P5 KEWIRAUSAHAAN SMAN 2 SLAWI 2023.pptx
MODUL P5 KEWIRAUSAHAAN SMAN 2 SLAWI 2023.pptx
 
aksi nyata - aksi nyata refleksi diri dalam menyikapi murid.pdf
aksi nyata - aksi nyata refleksi diri dalam menyikapi murid.pdfaksi nyata - aksi nyata refleksi diri dalam menyikapi murid.pdf
aksi nyata - aksi nyata refleksi diri dalam menyikapi murid.pdf
 
Kontribusi Islam Dalam Pengembangan Peradaban Dunia - KELOMPOK 1.pptx
Kontribusi Islam Dalam Pengembangan Peradaban Dunia - KELOMPOK 1.pptxKontribusi Islam Dalam Pengembangan Peradaban Dunia - KELOMPOK 1.pptx
Kontribusi Islam Dalam Pengembangan Peradaban Dunia - KELOMPOK 1.pptx
 
Dasar-Dasar Sakramen dalam gereja katolik
Dasar-Dasar Sakramen dalam gereja katolikDasar-Dasar Sakramen dalam gereja katolik
Dasar-Dasar Sakramen dalam gereja katolik
 
Paparan Refleksi Lokakarya program sekolah penggerak.pptx
Paparan Refleksi Lokakarya program sekolah penggerak.pptxPaparan Refleksi Lokakarya program sekolah penggerak.pptx
Paparan Refleksi Lokakarya program sekolah penggerak.pptx
 
Bab 6 Kreatif Mengungap Rasa dan Realitas.pdf
Bab 6 Kreatif Mengungap Rasa dan Realitas.pdfBab 6 Kreatif Mengungap Rasa dan Realitas.pdf
Bab 6 Kreatif Mengungap Rasa dan Realitas.pdf
 
bab 6 ancaman terhadap negara dalam bingkai bhinneka tunggal ika
bab 6 ancaman terhadap negara dalam bingkai bhinneka tunggal ikabab 6 ancaman terhadap negara dalam bingkai bhinneka tunggal ika
bab 6 ancaman terhadap negara dalam bingkai bhinneka tunggal ika
 
Perumusan Visi dan Prakarsa Perubahan.pptx
Perumusan Visi dan Prakarsa Perubahan.pptxPerumusan Visi dan Prakarsa Perubahan.pptx
Perumusan Visi dan Prakarsa Perubahan.pptx
 
Pendidikan-Bahasa-Indonesia-di-SD MODUL 3 .pptx
Pendidikan-Bahasa-Indonesia-di-SD MODUL 3 .pptxPendidikan-Bahasa-Indonesia-di-SD MODUL 3 .pptx
Pendidikan-Bahasa-Indonesia-di-SD MODUL 3 .pptx
 
Diskusi PPT Sistem Pakar Sesi Ke-4 Simple Naïve Bayesian Classifier .pdf
Diskusi PPT Sistem Pakar Sesi Ke-4 Simple Naïve Bayesian Classifier .pdfDiskusi PPT Sistem Pakar Sesi Ke-4 Simple Naïve Bayesian Classifier .pdf
Diskusi PPT Sistem Pakar Sesi Ke-4 Simple Naïve Bayesian Classifier .pdf
 
Modul Projek - Batik Ecoprint - Fase B.pdf
Modul Projek  - Batik Ecoprint - Fase B.pdfModul Projek  - Batik Ecoprint - Fase B.pdf
Modul Projek - Batik Ecoprint - Fase B.pdf
 
Sesi 1_PPT Ruang Kolaborasi Modul 1.3 _ ke 1_PGP Angkatan 10.pptx
Sesi 1_PPT Ruang Kolaborasi Modul 1.3 _ ke 1_PGP Angkatan 10.pptxSesi 1_PPT Ruang Kolaborasi Modul 1.3 _ ke 1_PGP Angkatan 10.pptx
Sesi 1_PPT Ruang Kolaborasi Modul 1.3 _ ke 1_PGP Angkatan 10.pptx
 
PPT PENELITIAN TINDAKAN KELAS MODUL 5.pptx
PPT PENELITIAN TINDAKAN KELAS MODUL 5.pptxPPT PENELITIAN TINDAKAN KELAS MODUL 5.pptx
PPT PENELITIAN TINDAKAN KELAS MODUL 5.pptx
 
Keterampilan menyimak kelas bawah tugas UT
Keterampilan menyimak kelas bawah tugas UTKeterampilan menyimak kelas bawah tugas UT
Keterampilan menyimak kelas bawah tugas UT
 
PPT PERUBAHAN LINGKUNGAN MATA PELAJARAN BIOLOGI KELAS X.pptx
PPT PERUBAHAN LINGKUNGAN MATA PELAJARAN BIOLOGI KELAS X.pptxPPT PERUBAHAN LINGKUNGAN MATA PELAJARAN BIOLOGI KELAS X.pptx
PPT PERUBAHAN LINGKUNGAN MATA PELAJARAN BIOLOGI KELAS X.pptx
 
AKSI NYATA BERBAGI PRAKTIK BAIK MELALUI PMM
AKSI NYATA BERBAGI PRAKTIK BAIK MELALUI PMMAKSI NYATA BERBAGI PRAKTIK BAIK MELALUI PMM
AKSI NYATA BERBAGI PRAKTIK BAIK MELALUI PMM
 
AKSI NYATA NARKOBA ATAU OBAT TERLARANG..
AKSI NYATA NARKOBA ATAU OBAT TERLARANG..AKSI NYATA NARKOBA ATAU OBAT TERLARANG..
AKSI NYATA NARKOBA ATAU OBAT TERLARANG..
 
Materi Sosiologi Kelas X Bab 1. Ragam Gejala Sosial dalam Masyarakat (Kurikul...
Materi Sosiologi Kelas X Bab 1. Ragam Gejala Sosial dalam Masyarakat (Kurikul...Materi Sosiologi Kelas X Bab 1. Ragam Gejala Sosial dalam Masyarakat (Kurikul...
Materi Sosiologi Kelas X Bab 1. Ragam Gejala Sosial dalam Masyarakat (Kurikul...
 
contoh penulisan nomor skl pada surat kelulusan .pptx
contoh penulisan nomor skl pada surat kelulusan  .pptxcontoh penulisan nomor skl pada surat kelulusan  .pptx
contoh penulisan nomor skl pada surat kelulusan .pptx
 
1.3.a.3. Mulai dari Diri - Modul 1.3 Refleksi 1 Imajinasiku tentang Murid di ...
1.3.a.3. Mulai dari Diri - Modul 1.3 Refleksi 1 Imajinasiku tentang Murid di ...1.3.a.3. Mulai dari Diri - Modul 1.3 Refleksi 1 Imajinasiku tentang Murid di ...
1.3.a.3. Mulai dari Diri - Modul 1.3 Refleksi 1 Imajinasiku tentang Murid di ...
 

Vba lengkap

  • 1. 1 Nizam © Excel in a nutshellExcel in a nutshell Nizam © Excel as objectExcel as object DalamDalam graphical user interface,graphical user interface, aplikasiaplikasi dandan bagianbagian--bagiannyabagiannya dikenaldikenal sebagaisebagai objectobject Object excelObject excel •• ExcelExcel •• WorkbookWorkbook •• WorksheetWorksheet •• RangeRange dalamdalam worksheetworksheet •• ListboxListbox •• Chart sheetChart sheet •• ChartChart •• DsbDsb.. Nizam © ObjectObject utamautama WorkbooksWorkbooks merupakanmerupakan ““folderfolder”” yangyang berisiberisi:: •• WorksheetsWorksheets •• Chart sheetsChart sheets •• Macro sheets (.Macro sheets (.xlmxlm obsolete)obsolete) •• Dialog sheets (obsolete)Dialog sheets (obsolete) WorksheetsWorksheets merupakanmerupakan lembarlembar kerjakerja •• 1 worksheet1 worksheet terdiriterdiri daridari 256256 kolomkolom dandan 65,53665,536 barisbaris (16,777,216(16,777,216 selsel!!)!!) setarasetara dengandengan 36,00036,000 halamanhalaman cetakcetak!!!!!! Nizam © Excel user interfaceExcel user interface AntarmukaAntarmuka excelexcel bisabisa dilakukandilakukan dengandengan beberapabeberapa caracara:: •• MenuMenu •• Dialog boxDialog box •• ToolbarsToolbars •• DragDrag--andand--dropdrop •• Keyboard shortcutsKeyboard shortcuts Nizam © Entry dataEntry data NilaiNilai ((angkaangka,, tanggaltanggal,, waktuwaktu)) TextText RumusRumus NilaiNilai logikalogika ((booleanboolean –– truetrue--false)false) BeberapaBeberapa tipstips •• MengisiMengisi datadata padapada range:range: isikanisikan datadata padapada active cell,active cell, tekantekan ctrl+Enterctrl+Enter •• MengcopyMengcopy keke bawahbawah: drag: drag pojokpojok selectionselection •• MengcopyMengcopy keke bawahbawah dgndgn increment: dragincrement: drag pojokpojok selectionselection sambilsambil tekantekan ctrlctrl •• UntukUntuk penulisanpenulisan teksteks yangyang panjangpanjang,, gantiganti barisbaris dengandengan alt+enteralt+enter •• UntukUntuk menulismenulis pecahanpecahan tulistulis 0 <0 <spasispasi>> pecahanpecahan •• TanggalTanggal harihari iniini: ctrl+;: ctrl+; •• JamJam saatsaat iniini:: ctrl+shiftctrl+shift+;+; Nizam © BeberapaBeberapa kemampuankemampuan excelexcel FormattingFormatting FormulasFormulas NamesNames FunctionsFunctions ShapesShapes ChartsCharts MacrosMacros Database accessDatabase access filterfilter
  • 2. 2 Nizam © Analysis toolsAnalysis tools OutlineOutline Automatic subtotalsAutomatic subtotals Scenario managementScenario management AnalysisAnalysis toolpaktoolpak Pivot tablePivot table AuditingAuditing SolverSolver AddAdd--insins Nizam © cellcell Relative A1Relative A1 Absolute $A$1Absolute $A$1 row absolute A$1row absolute A$1 Column absolute $A1Column absolute $A1 Referencing other sheets/workbooksReferencing other sheets/workbooks =[data.xls]Sheet2[A2]+1=[data.xls]Sheet2[A2]+1 ReferensiReferensi dengandengan namanama : insert: insert namename createcreate Nizam © VBAVBA -- Visual Basic forVisual Basic for ApplicationApplication BahasaBahasa pemrogramanpemrograman untukuntuk aplikasiaplikasi WindowsWindows Nizam © BagianBagian 11 DasarDasar--dasardasar pemrogramanpemrograman VBAVBA Nizam © ApaApa yangyang dibicarakandibicarakan?? MengenalMengenal VBAVBA IDEIDE PemrogramanPemrograman berbasisberbasis objectobject CaraCara membuatmembuat program VBAprogram VBA MakroMakro Editor programEditor program MenjalankanMenjalankan programprogram MembuatMembuat fungsisendirifungsisendiri MembuatMembuat prosedurprosedur MengaturMengatur editoreditor MelindungiMelindungi programprogram Nizam © ApaApa dandan kenapakenapa VBAVBA MerupakanMerupakan bahasabahasa pemrogramanpemrograman bagibagi semuasemua aplikasiaplikasi Microsoft Office (Microsoft Office (ExelExel,, Word, Access,Word, Access, PowerpointPowerpoint)) dandan beberapabeberapa yang lain (Outlook, Visio, AutoCAD,yang lain (Outlook, Visio, AutoCAD, MapInfo,MapInfo, dsbdsb.).) DapatDapat berfungsiberfungsi sebagaisebagai macromacro atauatau bahasabahasa pemrogramanpemrograman MerupakanMerupakan bahasabahasa programprogram beorientasibeorientasi object,object, semuasemua object officeobject office dapatdapat dengandengan mudahmudah dimanipulasidimanipulasi dengandengan VBAVBA BelajarBelajar satusatu bahasabahasa dapatdapat daplikasikandaplikasikan dalamdalam banyakbanyak aplikasiaplikasi WindowsWindows
  • 3. 3 Nizam © kenapakenapa MendukungMendukung aplikasiaplikasi internetinternet dandan intranetintranet MendukungMendukung ActiveX controlsActiveX controls Code editorCode editor dengandengan bantuanbantuan yangyang lengkaplengkap dandan debuggerdebugger Form building toolsForm building tools Object browserObject browser DllDll yangyang memudahkanmemudahkan pembuatanpembuatan programprogram Nizam © IDEIDE –– 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 objectobject memilikimemiliki properties: color,properties: color, font, italic,font, italic, dsbdsb.. Method & procedureMethod & procedure •• Cara/Cara/perintahperintah untukuntuk melakukanmelakukan sesuatusesuatu:: pindahpindah worksheet,worksheet, pindahpindah barisbaris,, dsbdsb.. Nizam © VBA programmingVBA programming ProgramProgram dalamdalam VBAVBA disebutdisebut prosedurprosedur ((dandan function)function) TigaTiga jenisjenis prosedurprosedur •• Command macrosCommand macros mengotomasimengotomasi prosedurprosedur-- prosedurprosedur,, fungsifungsi--fungsifungsi yangyang adaada (built(built--in)in) dalamdalam aplikasiaplikasi,, memformatmemformat,, menyimpanmenyimpan,, dsbdsb.. •• UserUser--defined function (function procedure)defined function (function procedure) program yangprogram yang berisiberisi rumusrumus dandan perintahperintah yangyang kitakita susunsusun sendirisendiri •• Property procedureProperty procedure menunjukkanmenunjukkan atauatau mengubahmengubah propertiproperti daridari suausuau object (classobject (class module)module) Nizam © CaraCara membuatmembuat programprogram DenganDengan merekammerekam macro (macromacro (macro recording)recording) DenganDengan menulismenulis programprogram dalamdalam IDE/VBA editorIDE/VBA editor
  • 4. 4 Nizam © MembuatMembuat dandan menjalankanmenjalankan macromacro ToolsTools macromacro record macrorecord macro LakukanLakukan prosedurprosedur--prosedurprosedur dandan perubahanperubahan propertiesproperties padapada worksheetworksheet Stop macro recordingStop macro recording Edit macroEdit macro untukuntuk memberbaikimemberbaiki dandan mengubahmengubah hasilhasil rekamanrekaman MenjalankanMenjalankan:: •• DenganDengan shortcut,shortcut, atauatau •• ToolsTools macromacro runrun pilihpilih namanama macromacro Nizam © MenulisMenulis programprogram ToolsTools macromacro visualvisual basic editorbasic editor atauatau ClickClick tomboltombol VBEVBE PindahPindah daridari VBEVBE keke aplikasiaplikasi alt+F11alt+F11 TuliskanTuliskan program (functionprogram (function atauatau procedure)procedure) •• SubSub BarisBaris programprogram •• End subEnd sub Nizam © FungsiFungsi FungsiFungsi adalahadalah rumusrumus yangyang mengolahmengolah argumenargumen dandan mengembalikanmengembalikan hasilhasil StrukturStruktur fungsifungsi FunctionFunction NamaFungsi(argumen1, argumen2,NamaFungsi(argumen1, argumen2, ……)) [[PernyataanPernyataan/statement VBA]/statement VBA] NamaFungsiNamaFungsi == hasilhasil yangyang dikembalikandikembalikan End FunctionEnd Function BagianbagianBagianbagian:: •• StatementStatement FunctionFunction •• NamaNama fungsifungsi •• ArgumenArgumen fungsifungsi (parameter)(parameter) •• Statement VBA yangStatement VBA yang melakukanmelakukan hitunganhitungan •• HasilHasil yangyang dikembalikandikembalikan namanama fungsifungsi == •• StatementStatement End FunctionEnd Function Nizam © MembuatMembuat fungsifungsi ContohContoh:: menghitungmenghitung sisisisi miringmiring segitigasegitiga •• SisimiringSisimiring = sqr(x= sqr(x22 + y+ y22)) FunctionFunction sisimiring(xsisimiring(x, y), y) ‘‘ namanama fungifungi sisimiringsisimiring == sqr(xsqr(x ^ 2 + y ^ 2)^ 2 + y ^ 2) ‘‘ nilainilai hasilhasil End FunctionEnd Function PemakaianPemakaian:: isikanisikan padapada selsel dengandengan namanama formula,formula, misalmisal =sisimiring(3,=sisimiring(3, 4)4) akanakan menghasilkanmenghasilkan 55 Nizam © MembuatMembuat fungsifungsi Function akar(A, B, C)Function akar(A, B, C) If A <> 0 ThenIf A <> 0 Then diskrim = B ^ 2diskrim = B ^ 2 -- 4 * A * C4 * A * C If 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 ElseElse akar = "bukan persamaan kuadrat"akar = "bukan persamaan kuadrat" End IfEnd If End FunctionEnd Function Nizam © prosedurprosedur ProsedurProsedur adalahadalah unit programunit program dalamdalam VBA yangVBA yang merupakanmerupakan blokblok kodekode dalamdalam satusatu modulmodul StrukturStruktur sebuahsebuah prosedurprosedur SubSub NamaProsedurNamaProsedur ((argumen1,argumen1, argumen2,argumen2,……)) [[pernyataanpernyataan/statement VBA]/statement VBA] End SubEnd Sub
  • 5. 5 Nizam © MembuatMembuat prosedurprosedur ContohContoh:: perhitunganperhitungan bungabunga SubSub EnterLoanDataEnterLoanData()() SubSub InputDataPinjamanInputDataPinjaman()() Range("bunga").Value = 0.08Range("bunga").Value = 0.08 Range("lama").Value = 10Range("lama").Value = 10 Range("pinjaman").Value = 100000000Range("pinjaman").Value = 100000000 Range("bayar").Value =Range("bayar").Value = "=PMT(bunga/12,lama*12,pinjaman)""=PMT(bunga/12,lama*12,pinjaman)" End SubEnd Sub PenggunaanPenggunaan:: toolstools macromacro pilihpilih namanama subsub InputDataPinjamanInputDataPinjaman runrun Nizam © MemanfaatkanMemanfaatkan intellisenseintellisense SetiapSetiap ojectoject dalamdalam excelexcel memilikimemiliki propertiesproperties dandan methods,methods, UntukUntuk memanipulasimemanipulasi obyekobyek dalamdalam program VBA,program VBA, kitakita bisabisa memanfaatkanmemanfaatkan intellisenseintellisense CaranyaCaranya:: •• TuliskanTuliskan namanama obyekobyek dilanjutkandilanjutkan dengandengan titiktitik (.)(.) akanakan keluarkeluar propertiesproperties daridari obyekobyek tersebuttersebut •• ContohContoh: application.: application. •• KalauKalau kitakita tekantekan <esc><esc> intellisenseintellisense taktak akanakan munculmuncul lagilagi untukuntuk obyekobyek yangyang samasama,, untukuntuk memunculkanmemunculkan lagilagi tekantekan Ctrl+JCtrl+J Nizam © InformasiInformasi parameterparameter SetiapSetiap fungsifungsi memilikimemiliki satu/beberapasatu/beberapa parameter, parameterparameter, parameter terebutterebut dapatdapat dimunculkandimunculkan dengandengan menuliskanmenuliskan namanama 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 modulmodul yangyang akanakan disimpandisimpan PilihPilih File|ExportFile|Export FileFile PilihPilih lokasilokasi tempattempat menyimpanmenyimpan filefile BeriBeri namanama file.BASfile.BAS TekanTekan SaveSave Nizam © Mengimpor/ambilMengimpor/ambil modulmodul Dari project explorerDari project explorer PilihPilih File|ImportFile|Import FileFile PilihPilih filefile daridari lokasilokasi tempattempat menyimpanmenyimpan file.BASfile.BAS TekanTekan OpenOpen Nizam © MengaturMengatur editoreditor CaraCara kerjakerja dandan tampilantampilan editoreditor dapatdapat diaturdiatur dengandengan menumenu Tools|OptionsTools|Options
  • 6. 6 Nizam © MelindungiMelindungi programprogram ProgramProgram dapatdapat dilindungidilindungi dengandengan passwordpassword Tools|ProjectNameTools|ProjectName PropertiesProperties dialog box,dialog box, pilihpilih ProtectionProtection IsikanIsikan passwordpassword untukuntuk melindungimelindungi programprogram OKOK Nizam © BagianBagian 22 VariabelVariabel dandan konstantakonstanta Nizam © ApaApa yangyang dibicarakandibicarakan?? MendeklarasiMendeklarasi variabelvariabel MemahamiMemahami lingkuplingkup varaibelvaraibel MengirimMengirim variabelvariabel sbgsbg referensireferensi dandan sbgsbg argumenargumen VariabelVariabel statikstatik MenghindariMenghindari kesalahankesalahan variabelvariabel JenisJenis datadata variabelvariabel ArrayArray KonstantaKonstanta Nizam © DeklarasiDeklarasi variabelvariabel VariabelVariabel dalamdalam VBAVBA sebaiknyasebaiknya dideklarasikandideklarasikan untukuntuk menyatakanmenyatakan namanama dandan jenisjenis data (data type)data (data type) PendeklrasianPendeklrasian variabelvariabel menghindarimenghindari kesalahankesalahan dandan mengefisienkanmengefisienkan programprogram CaranyaCaranya:: dengandengan pernyataanpernyataan DimDim DimDim namavarnamavar AsAs jenisdatajenisdata NamavarNamavar harusharus dimulaidimulai dengandengan hurufhuruf, max, max 255255 karakterkarakter,, tidaktidak mengandungmengandung spasispasi dandan .!@#$%&.!@#$%& Nizam © contohcontoh FunctionFunction GrossMarginGrossMargin()() ‘‘ deklarasideklarasi variabelvariabel DimDim totalSalestotalSales DimDim totalExpensestotalExpenses ‘‘programprogram totalSalestotalSales == Application.Sum(Range(Application.Sum(Range(““SalesSales””)))) totalExpensestotalExpenses == Application.Sum(Range(Application.Sum(Range(““ExpensesExpenses””)))) GrossMarginGrossMargin=(=(totalSalestotalSales –– totalExpenses)/totalSalestotalExpenses)/totalSales End FunctionEnd Function Nizam © LingkupLingkup/scope/scope variabelvariabel DalamDalam VBAVBA lingkuplingkup variabelvariabel LingkupLingkup prosedurprosedur LingkupLingkup modulmodul LingkupLingkup publikpublik
  • 7. 7 Nizam © LingkupLingkup prosedurprosedur VariabelVariabel hanyahanya bisabisa diaksesdiakses oleholeh pernyataanpernyataan--pernyataanpernyataan dalamdalam prosedurprosedur yangyang samasama Sub Procedure1()Sub Procedure1() DimDim pesanpesan ‘‘ semuasemua pernyataanpernyataan didi dalamdalam prosedurprosedur iniini ‘‘ dapatdapat mengaksesmengakses variabelvariabel ‘‘pesanpesan’’ pesanpesan == ““ SayaSaya dalamdalam lingkuplingkup”” MsgBoxMsgBox pesanpesan End SubEnd Sub Sub Procedure2()Sub Procedure2() ‘‘ pernyataanpernyataan didi dalamdalam prosedurprosedur iniini ‘‘ taktak dapatdapat mengaksesmengakses variabelvariabel ‘‘pesanpesan’’ MsgBoxMsgBox pesanpesan ‘‘ variabelvariabel pesanpesan taktak dikenaldikenal dalamdalam prosedurprosedur iniini End SubEnd Sub Nizam © DeklarasiDeklarasi implisitimplisit dandan eksplisiteksplisit PadaPada contohcontoh 2,2, variabelvariabel pesanpesan sebetulnyasebetulnya taktak dikenaldikenal,, tetapitetapi ketikaketika dijalankandijalankan tetaptetap memberimemberi hasilhasil,, dalamdalam halhal iniini <blank>.<blank>. IniIni dikarenakandikarenakan VBAVBA mengenalmengenal deklarasideklarasi implisitimplisit ((semuasemua variabelvariabel otomatisotomatis diberidiberi hargaharga <blank>,<blank>, meskimeski taktak dikenaldikenal)) KondisiKondisi semacamsemacam iniini kurangkurang baikbaik dalamdalam pemrogramanpemrograman,, sebaiknyasebaiknya dinyatakandinyatakan bahwabahwa semuasemua variabelvariabel harusharus dideklarasikandideklarasikan agaragar taktak terjaditerjadi kesalahankesalahan UntukUntuk menghindarimenghindari •• Option ExplicitOption Explicit Nizam © LingkupLingkup modulmodul AgarAgar variabelvariabel dapatdapat diaksesdiakses oleholeh beberapabeberapa prosedurprosedur harusharus dideklarasidideklarasi sebelum/disebelum/di luarluar prosedurprosedur--prosedurprosedur yangyang menggunakanmenggunakan variabelvariabel tersebuttersebut Nizam © contohcontoh Sub CalcMargins1()Sub CalcMargins1() Range("GrossMarg").Value = GrossMarginCalcRange("GrossMarg").Value = GrossMarginCalc Range("NetMarg").Value =Range("NetMarg").Value = NetMarginCalc(Range("FixedCosts").Value)NetMarginCalc(Range("FixedCosts").Value) End SubEnd Sub Function GrossMarginCalc()Function GrossMarginCalc() Dim totSalesDim totSales Dim totExpensesDim totExpenses totSales = Application.Sum(Range("Sales"))totSales = Application.Sum(Range("Sales")) totExpenses = Application.Sum(Range("Expenses"))totExpenses = Application.Sum(Range("Expenses")) GrossMarginCalc = (totSalesGrossMarginCalc = (totSales -- totExpenses) /totExpenses) / totSalestotSales End FunctionEnd Function Function NetMarginCalc(fixedCosts)Function NetMarginCalc(fixedCosts) Dim totSalesDim totSales Dim totExpensesDim totExpenses totSales = Application.Sum(Range("Sales"))totSales = Application.Sum(Range("Sales")) totExpenses = Application.Sum(Range("Expenses"))totExpenses = Application.Sum(Range("Expenses")) NetMarginCalc = (totSalesNetMarginCalc = (totSales -- totExpensestotExpenses -- fixedCosts)fixedCosts) __ totSalestotSales End FunctionEnd Function Dim totSales2Dim totSales2 Dim totExpenses2Dim totExpenses2 Sub CalcMargins2()Sub CalcMargins2() Range("GrossMarg").Value = GrossMarginCalc2Range("GrossMarg").Value = GrossMarginCalc2 Range("NetMarg").Value =Range("NetMarg").Value = NetMarginCalc2(Range("FixedCosts").Value)NetMarginCalc2(Range("FixedCosts").Value) End SubEnd Sub Function GrossMarginCalc2()Function GrossMarginCalc2() totSales2 = Application.Sum(Range("Sales"))totSales2 = Application.Sum(Range("Sales")) totExpenses2 =totExpenses2 = Application.Sum(Range("Expenses"))Application.Sum(Range("Expenses")) GrossMarginCalc2 = (totSales2GrossMarginCalc2 = (totSales2 -- totExpenses2) /totExpenses2) / totSales2totSales2 End FunctionEnd Function Function NetMarginCalc2(fixedCosts)Function NetMarginCalc2(fixedCosts) NetMarginCalc2 = (totSales2NetMarginCalc2 = (totSales2 -- totExpenses2totExpenses2 __ -- fixedCosts2) / totSales2fixedCosts2) / totSales2 End FunctionEnd Function Nizam © LingkupLingkup publikpublik KadangKadang kitakita menginginkanmenginginkan semuasemua modulmodul dalamdalam proyekproyek kitakita dapatdapat mengaksesmengakses variabelvariabel lingkuplingkup publikpublik CaranyaCaranya:: deklarasikandeklarasikan dengandengan publicpublic namavariabelnamavariabel UntukUntuk menggantikanmenggantikan dimdim namavariabelnamavariabel Nizam © MengirimMengirim argumenargumen variabelvariabel BilaBila programprogram terdiriterdiri daridari banyakbanyak prosedurprosedur,, mendeklarasikanmendeklarasikan variabelvariabel dalamdalam lingkuplingkup modulmodul dapatdapat berbahayaberbahaya,, karenakarena nilainilai variabelvariabel dapatdapat diubahdiubah oleholeh setiapsetiap prosedurprosedur yangyang mengaksesmengakses variabelvariabel tersebuttersebut atauatau variabelvariabel yangyang samasama dideklarasikandideklarasikan berbedaberbeda dalamdalam prosedurprosedur lainlain UntukUntuk menghindarimenghindari kesalahankesalahan semacamsemacam ituitu,, variabelvariabel dapatdapat dikirimdikirim daridari satusatu prosedurprosedur keke yang lainyang lain sebagaisebagai argumenargumen PengirimanPengiriman argumenargumen variabelvariabel dapatdapat berdasarberdasar referensireferensi atauatau berdasarberdasar nilainilai variabelvariabel
  • 8. 8 Nizam © MengirimMengirim variabelvariabel berdasarberdasar referensireferensi ContohContoh:: Sub procedure3()Sub procedure3() DimDim pesanpesan pesanpesan = "Pesan asli!"= "Pesan asli!" procedure4procedure4 pesanpesan MsgBoxMsgBox pesanpesan End SubEnd Sub Sub procedure4(Sub procedure4(kirimankiriman)) MsgBoxMsgBox kirimankiriman kirimankiriman = "pesan telah sampai!"= "pesan telah sampai!" End SubEnd Sub BilaBila procedure3procedure3 dijalankandijalankan,, mulamula--mulamula pesanpesan berisiberisi ““PesanPesan asliasli!!”” kemudiankemudian berisiberisi ““pesanpesan telahtelah sampaisampai!!”” Nizam © MengirimMengirim variabelvariabel berdasarberdasar nilainilai ContohContoh:: Sub procedure5()Sub procedure5() Dim pesanDim pesan pesan = "Pesan asli!"pesan = "Pesan asli!" procedure6 pesanprocedure6 pesan MsgBox pesanMsgBox pesan End SubEnd Sub Sub procedure6(ByVal pesan)Sub procedure6(ByVal pesan) MsgBox pesanMsgBox pesan pesan = "terimakasih atas kirimannya!"pesan = "terimakasih atas kirimannya!" End SubEnd Sub BilaBila procedure5procedure5 dijalankandijalankan,, variabelvariabel pesanpesan akanakan tetaptetap berisiberisi ““PesanPesan asliasli!!”” karenakarena yangyang dikirimdikirim hanyahanya nilainyanilainya ((ByValByVal)) Nizam © VariabelVariabel statisstatis DalamDalam VBA,VBA, variabelvariabel dalamdalam prosedurprosedur setelahsetelah digunakandigunakan nilainyanilainya akanakan dihapusdihapus;; ketikaketika prosedurprosedur dipanggildipanggil lagilagi,, akanakan diisidiisi// hitunghitung lagilagi BilaBila inginingin nilainilai variabelvariabel taktak diubahdiubah bisabisa dipakaidipakai variabelvariabel statisstatis (static(static variable)variable) Nizam © ContohContoh variabelvariabel statikstatik Sub tesStatik()Sub tesStatik() ProsedurStatikProsedurStatik ProsedurStatikProsedurStatik End SubEnd Sub Sub ProsedurStatik()Sub ProsedurStatik() Static varStatikStatic varStatik Dim varRegulerDim varReguler varStatik = varStatik + 5varStatik = varStatik + 5 varReguler = varReguler + 5varReguler = varReguler + 5 MsgBox "varStatik = " & varStatik & " dan varReguler = " &MsgBox "varStatik = " & varStatik & " dan varReguler = " & varRegulervarReguler End SubEnd Sub SaatSaat dijalankandijalankan nilainilai varStatikvarStatik mulamula--mulamula 5,5, lalulalu 10,10, sedangkansedangkan varRegulervarReguler tetaptetap 55 Nizam © MenghindariMenghindari kesalahankesalahan variabelvariabel KadangKadang kitakita salahsalah mengetikmengetik namanama variabelvariabel,, kesalahankesalahan iniini palingpaling seringsering terjaditerjadi padapada pembuatanpembuatan program yangprogram yang besarbesar UntukUntuk menghidarinyamenghidarinya,, gunakangunakan perintahperintah explicit,explicit, makamaka VBAVBA akanakan memberimemberi pesarpesar errorerror bilabila ketemuketemu variabelvariabel barubaru yangyang belumbelum dideklarasikandideklarasikan CaranyaCaranya:: •• DenganDengan mendeklarasikanmendeklarasikan didi bagianbagian atasatas modulmodul Option ExplicitOption Explicit •• PilihPilih Tools|OptionTools|Option modulmodul general,general, pilih/contrengpilih/contreng Require Variable DeclarationRequire Variable Declaration Nizam © JenisJenis datadata variabelvariabel VBAVBA secarasecara otomatisotomatis memberimemberi jenisjenis datadata variant (22 byte)variant (22 byte) untukuntuk setiapsetiap variabelvariabel yangyang dideklarasikandideklarasikan tanpatanpa diberidiberi jenisjenis datadata UntukUntuk menghematmenghemat memorimemori dandan menambahmenambah efisiensiefisiensi programprogram jenisjenis datadata sebaiknyasebaiknya dinyatakandinyatakan padapada saatsaat deklarasideklarasi variabelvariabel Cara:Cara: •• DimDim namaVariabelnamaVariabel AsAs JenisDataJenisData ContohContoh:: •• DimDim katakata As StringAs String •• DimDim noMhsnoMhs As IntegerAs Integer
  • 9. 9 Nizam © JenisJenis datadata variabelvariabel DapatDapat untukuntuk sembarangsembarang jenisjenis datadata22 bytes +22 bytes + 1 byte per1 byte per charchar VariantVariant (string)(string) DapatDapat untukuntuk sembarangsembarang jenisjenis datadata16 byte16 byteVariantVariant UntukUntuk teksteks,, dapatdapat sampaisampai 64KByte64KByte$$1 byte per1 byte per charchar StringString BilBil pecahanpecahan presisipresisi tunggaltunggal!!4 bytes4 bytesSingleSingle ReferensiReferensi obyekobyek4 bytes4 bytesObjectObject BilanganBilangan cacahcacah besarbesar --2,147,483,6482,147,483,648 sampaisampai 2,147,483,64872,147,483,6487 &&4 bytes4 bytesLongLong UntukUntuk bilbil cacahcacah antaraantara --32,76832,768 sampaisampai 32,76732,767%%2 bytes2 bytesIntegerInteger UntukUntuk tanggaltanggal,, antaraantara 1 Jan 10001 Jan 1000 hinggahingga 3131 DesemberDesember 99999999 #date##date#8 bytes8 bytesDateDate PressiPressi gandaganda,, bilanganbilangan negatifnegatif -- 1.79769313486232E3081.79769313486232E308 hinggahingga -- 4.9406564581247E4.9406564581247E--324;324; bilanganbilangan positifpositif daridari 4.9406564581247E4.9406564581247E--324324 hinggahingga 1.79769313486232E3081.79769313486232E308 ##8 bytes8 bytesDoubleDouble UntukUntuk matamata uanguang,, nilainilai antaraantara -- 922,337,203,685,477.5808922,337,203,685,477.5808 hinggahingga 922,337,203,685,477.5808922,337,203,685,477.5808 @@8 bytes8 bytesCurrencyCurrency NilaiNilai 00 sampaisampai 2552551 byte1 byteByteByte True & falseTrue & false2 bytes2 bytesBooleanBoolean CatatanCatatanlambanglambangUkuranUkuranJenisJenis Nizam © defaultdefault jenisjenis datadata KitaKita dapatdapat menyatakanmenyatakan jenisjenis data defaultdata default ContohContoh:: DefIntDefInt II--NN BerartiBerarti semuasemua variabelvariabel yangyang mulaimulai dengandengan hurufhuruf II hinggahingga N (N (kapitalkapital)) merupakanmerupakan integeintege Keywords:Keywords: •• DefBoolDefBool DefDblDefDbl •• DefByteDefByte DefDateDefDate •• DefIntDefInt DefStrDefStr •• DefLngDefLng DefObjDefObj •• DefSngDefSng DefVarDefVar Nizam © UserUser--defined data typesdefined data types KitaKita dapatdapat mendefinisikanmendefinisikan jenisjenis datadata sendirisendiri ContohContoh:: TypeType MahasiswaMahasiswa namanama As StringAs String nomhsnomhs As IntegerAs Integer angkatanangkatan As IntegerAs Integer tglLhrtglLhr As DateAs Date End TypeEnd Type Mahasiswa.namaMahasiswa.nama == ““AhmadAhmad MusaMusa”” Mahasiswa.nomhsMahasiswa.nomhs = 22718= 22718 Mahasiswa.angkatanMahasiswa.angkatan = 2002= 2002 Mahasiswa.tglLhrMahasiswa.tglLhr = #01/01/1985#= #01/01/1985# Nizam © VariabelVariabel arrayarray VariabelVariabel matriksmatriks dandan vektorvektor dapatdapat dideklarasikandideklarasikan dengandengan variabelvariabel arrayarray Cara: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 1Option Base 1 mulaimulai daridari lariklarik 11 AtauAtau Dim vektor(50 to 100) As DoubleDim vektor(50 to 100) As Double Dim matriks(1 to 50, 1 to 20)Dim matriks(1 to 50, 1 to 20) Nizam © ArrayArray dinamisdinamis BilaBila ukuranukuran arrayarray belumbelum diketahuidiketahui,, bisabisa dideklarasikandideklarasikan sebagaisebagai arrayarray dinamisdinamis BilaBila dimensinyadimensinya diketahuidiketahui bisabisa dinyatakandinyatakan kemudiankemudian DimDim myArraymyArray() As Double() As Double …… ReDimReDim myArray(105)myArray(105) ReDimReDim akanakan meme--reinisialisasireinisialisasi nilainilai variabelvariabel dalamdalam arrayarray tersebuttersebut,, bilabila nilainilai variabelvariabel inginingin taktak didi-- reinisialisasireinisialisasi:: ReDimReDim Preserve myArray(105)Preserve myArray(105) DimensiDimensi arrayarray bisabisa diketahuidiketahui dengandengan LBound(namaArrayLBound(namaArray)) indeksindeks bawahbawah UBound(namaArrayUBound(namaArray)) indeksindeks atasatas Nizam © contohcontoh SubSub PerformCalculationsPerformCalculations()() DimDim calcValcalcVal() As Double,() As Double, totValtotVal as Integeras Integer .. .. .. totValtotVal == GetTotalValueGetTotalValue()() ReDimReDim calcVal(totValcalcVal(totVal)) .. .. End SubEnd Sub
  • 10. 10 Nizam © konstantakonstanta KonstantaKonstanta builtbuilt--inin adaada didi dalamdalam ExcelExcel untukuntuk propertiesproperties dandan methodsmethods berbagiberbagi objectsobjects ContohContoh:: ActiveWIndow.WindowStateActiveWIndow.WindowState==xlMaximizedxlMaximized UserUser--defined constantsdefined constants Public|PrivatePublic|Private ConstConst NamaKonstantaNamaKonstanta [ As Type] = expression[ As Type] = expression ContohContoh:: Public ConstPublic Const gravitasigravitasi As SingleAs Single = 9.81= 9.81 Nizam © BagianBagian 33 EkspresiEkspresi VBAVBA Nizam © ApaApa yangyang dibicarakandibicarakan?? StrukturStruktur ekspresiekspresi Operator VBAOperator VBA BekerjaBekerja dengandengan ekspresiekspresi numeriknumerik BekerjaBekerja dengandengan ekspresiekspresi textex/string/string BekerjaBekerja dengandengan ekspresiekspresi logikalogika BekerjaBekerja dengandengan ekspresiekspresi tanggaltanggal formatformat Nizam © StrukturStruktur ekspresiekspresi VBAVBA VariabelVariabel == statemenstatemen tentangtentang variabelvariabel contohcontoh:: energy = mass * (energy = mass * (speedOfLightspeedOfLight ^ 2)^ 2) operand <operand <asignmentasignment> operand &> operand & operatoroperator OperandOperand harusharus menggunakanmenggunakan jenisjenis variabelvariabel yangyang kompatibelkompatibel OperatorOperator harusharus sesuaisesuai dengandengan jenisjenis datadata Nizam © Operator VBAOperator VBA AritmetikAritmetik ++ tambahtambah/plus/plus -- kurangkurang/minus/minus -- negasinegasi ** kalikali // bagibagi pembagianpembagian integerinteger ^^ pangkatpangkat ModMod modulusmodulus 10 Mod 5 = 010 Mod 5 = 0 KonkatenasiKonkatenasi untukuntuk jenisjenis data stringdata string ““SoftSoft”” && ““wareware”” Nizam © Operator VBAOperator VBA PembandingPembanding menghasilkanmenghasilkan nilainilai TrueTrue atauatau FalseFalse == samasama dengandengan 10=510=5 falsefalse >> LebihLebih besarbesar daridari << LebihLebih kecilkecil daridari >=>= LebihLebih besarbesar atauatau samasama dengandengan <=<= LebihLebih kecilkecil atauatau samasama dengandengan <><> TidakTidak samasama dengandengan LikeLike miripmirip Jo?nJo?n Like JohnLike John TrueTrue
  • 11. 11 Nizam © OperatorOperator logikalogika OperatorOperator logikalogika menghasilkanmenghasilkan nilainilai TrueTrue atauatau FalseFalse AndAnd e1 And e2e1 And e2 T if both trueT if both true EqvEqv e1e1 EqvEqv e2e2 T if both T or both FT if both T or both F ImpImp e1 Imp e2e1 Imp e2 F if e1 T and e2 FF if e1 T and e2 F OrOr e1 Or e2e1 Or e2 T if at least one is TT if at least one is T XorXor e1e1 XorXor e2e2 F if both T or both FF if both T or both F NotNot NotNot exprexpr T ifT if exprexpr FF HierarkiHierarki: ^; (: ^; (negasinegasi) ; *) ; * dandan /;/; ; Mod; +; Mod; + dandan --;; &; comparison; Logical&; comparison; Logical Nizam © FungsiFungsi matematikmatematik FungsiFungsi 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 digitsyear 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 masamasa tertentutertentu PPmt(ratePPmt(rate, per,, per, npernper,, pvpv, fv, type), fv, type) PembayaranPembayaran periodikperiodik sejumlahsejumlah pinjamanpinjaman atauatau investasiinvestasi Pmt(rate,nperPmt(rate,nper,, pvpv, fv, type), fv, type) NettNett present valuepresent 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 yangIRR yang dimodifikasidimodifikasi untukuntuk cash flowcash flow periodikperiodikMIRR(valuesMIRR(values,, finance_ratefinance_rate,, reinvest_ratereinvest_rate)) NilaiNilai internal rate of returninternal rate of return serangkaianserangkaian cashcash-- flowsflows IRR(valuesIRR(values, guess), guess) PembayaranPembayaran bungabunga untukuntuk masamasa pinjamanpinjaman tertentutertentu IPmt(rate,per,nperIPmt(rate,per,nper,, pvpv, fv, type), fv, type) MenghitungMenghitung nilainilai masamasa depandepan daridari investasiinvestasi atauatau pinjamanpinjaman FV(rateFV(rate,, npernper, pmt,, pmt, pvpv, type), type) MenghitungMenghitung depresiasidepresiasi asetaset dengandengan metodemetode double declining balancedouble declining balance DDB(costDDB(cost, salvage, life, period,, salvage, life, period, factor)factor) Nizam © FungsiFungsi stringstring DstDst.. karakterkarakter sepanjangsepanjang lengthlength daridari stringstring mulaimulai startstartMid(stringMid(string, start, length), start, length) MenghilangkanMenghilangkan spasispasiLTrim(stringLTrim(string)) PanjangPanjang karakterkarakterLen(stringLen(string)) PosisiPosisi palingpaling kirikiri daridari stringstring sbgsbg stringstringLeft$(stringLeft$(string, length), length) PosisiPosisi palingpaling kirikiri daridari stringstring sbgsbg varianvarianLeft(stringLeft(string, length), length) MengubahMengubah keke hurufhuruf kecilkecil sbgsbg stringstringLCase$(stringLCase$(string)) MengubahMengubah keke hurufhuruf kecilkecil sbgsbg varianvarianLCase(stringLCase(string)) PosisiPosisi bytebyte kejadiankejadian string1string1 dalamdalam string2string2 dihitungdihitung daridari startstart InStrB(startInStrB(start, string1, string2), string1, string2) PosisiPosisi karakterkarakter kejadiankejadian string1string1 dalamdalam string2string2 dihitungdihitung daridari startstart InStr(starInStr(star, string1, string2), string1, string2) KonversiKonversi expressionexpression keke nilainilai stringstringCStr(expressionCStr(expression)) KarakterKarakter ((sebagaisebagai string)string) untukuntuk kodekode ANSIANSI charcodecharcode Chr$(charcodeChr$(charcode)) KarakterKarakter ((sbgsbg varianvarian)) untukuntuk kodekode ANSIANSI charcodecharcodeChr(charcodeChr(charcode)) KarakterKarakter ANSIANSI hurufhuruf pertamapertama stringstringASC(stringASC(string)) Nizam © BekerjaBekerja dengandengan ekspresiekspresi logikalogika Operator AndOperator And •• Expr1 And Expr2Expr1 And Expr2 TT bilabila keduanyakeduanya TT Operator OrOperator Or •• Expr1 Or Expr2Expr1 Or Expr2 TT bilabila salahsalah satusatu TT OperatorOperator XOrXOr •• Expr1Expr1 XOrXOr Expr2Expr2 TT bilabila satusatu TT dandan lainnyalainnya FF OperatorOperator EqvEqv •• Expr1Expr1 EqvEqv Expr2Expr2 TT bilabila keduanyakeduanya TT atauatau keuanyakeuanya FF Operator Imp (Operator Imp (ImplikasiImplikasi)) •• Expr1 Imp Expr2Expr1 Imp Expr2 TT bilabila Expr2 TExpr2 T atauatau keduanyakeduanya FF Nizam © BekerjaBekerja dengandengan tanggaltanggal TanggalTanggal dalamdalam VBAVBA disimpandisimpan dalamdalam bentukbentuk rangkaianrangkaian angkaangka,, dengandengan 3131 DesemberDesember 18991899 sebagaisebagai awalawal ((sembarangsembarang)) sehinggasehingga 11 JanuariJanuari 19001900 adalahadalah 1; 3661; 366 adalahadalah 3131 DesemberDesember 1900;1900; 37,98037,980 adalahadalah 2525 DesemberDesember 2003;2003; dstdst.. SaatSaat (jam,(jam, menitmenit,, detikdetik)) dinyatakandinyatakan dalamdalam pecahanpecahan,, dengandengan 00 adalahadalah tengahtengah malammalam;; 0.50.5 adalahadalah tengahtengah harihari
  • 12. 12 Nizam © FormatFormat UntukUntuk memformatmemformat angkaangka/string yang/string yang munculmuncul bisabisa digunakandigunakan perintahperintah Format(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 © kajiankajian PengertianPengertian ObjectObject HirakiHiraki objectobject BekerjaBekerja dengandengan propertiproperti objectobject BekerjaBekerja dengandengan metodemetode objectobject MenanganiMenangani kejadiankejadian objectobject BekerjaBekerja dengandengan koleksikoleksi objectobject Browser objectBrowser object MereferensiMereferensi pustakapustaka objectobject tambahantambahan MemberikanMemberikan objectobject padapada variabelvariabel Operator IsOperator Is BekerjaBekerja dengandengan beberapabeberapa propertiesproperties dandan methodsmethods ObjectObject aplikasiaplikasi Object windowsObject windows Nizam © PengertianPengertian objectobject ObjectObject adalahadalah segalasegala sesuatusesuatu dalamdalam aplikasiaplikasi Windows yangWindows yang dapatdapat dilihatdilihat dandan dimanipulasi/diubahdimanipulasi/diubah ObjectObject bisabisa berupaberupa satusatu objectobject atauatau kumpulankumpulan ((collectioncollection) object) object ContohContoh: workbook, worksheet,: workbook, worksheet, window, cell, range,window, cell, range, gambargambar,, grafikgrafik,, dsbdsb.. Nizam © caracara memanipulasimemanipulasi ojectoject CaraCara memanipulasimemanipulasi object:object: •• MengubahMengubah propertiesproperties •• MengaktivasiMengaktivasi methodmethod yangyang terkaitterkait dengandengan objectobject •• MendefinisiMendefinisi prosedurprosedur yangyang dijalankandijalankan saatsaat suatusuatu eventevent terjaditerjadi Ilustrasi/analogiIlustrasi/analogi •• KomputerKomputer:: objectobject •• MerekMerek,, jenisjenis prosesorprosesor:: propertyproperty •• MenulisMenulis suratsurat, main game:, main game: methodmethod •• DihidupkanDihidupkan,, dibukadibuka,, dimatikandimatikan:: eventevent Nizam © HirarkiHirarki objectobject ObjectObject dalamdalam aplikasiaplikasi OfficeOffice memilikimemiliki hirarkihirarki daridari yang palingyang paling umumumum hinggahingga yangyang lebihlebih spesifikspesifik;; Object palingObject paling umumumum: Application: Application objectobject programprogram ituitu sendirisendiri.. DalamDalam Excel Application objectExcel Application object memilikimemiliki >> 15 objects15 objects
  • 13. 13 Nizam © ObjectsObjects didi bawahbawah Application objectApplication object ContainerContainer untukuntuk fungsifungsi--fungsifungsi worksheet Excelworksheet Excel WrosheetFunctioWrosheetFunctio nn KoleksiKoleksi daridari semuasemua workbooks yangworkbooks yang terbukaterbuka WorkbooksWorkbooksWorkbookWorkbook KumpulanKumpulan windows yangwindows yang terbukaterbukaWindowsWindowsWindowWindow KoleksiKoleksi namanama--namanama yangyang adaada dalamdalam semuasemua workbooks yangworkbooks yang terbukaterbuka NamesNamesNameName KotakKotak dialog yang builtdialog yang built--inin dalamdalam ExcelExcel DialogsDialogsDialogDialog SemuaSemua file addfile add--in/in/tambahantambahan yangyang adaada dalamdalam ExcelExcel AddInsAddInsAddInAddIn DescriptionDescriptionCollectionCollectionObjectObject Nizam © BekerjaBekerja dengandengan object propertiesobject properties SintaksSintaks:: Object.PropertyObject.Property ContohContoh:: Application.ActiveWindowApplication.ActiveWindow MasalahMasalah:: •• AdaAda beberapabeberapa propertespropertes yangyang jugajuga merupakanmerupakan objectobject Nizam © Properties . ActiveMenuBar ActiveWindow Calculation Etc. Properties . ActiveCell Caption DisplayGridlines Etc. Application Object Window Object Properties . ColumnWidth Font Formula Etc. Range Object Properties . Italic Name Size Etc. Font Object Application.ActiveWindow.ActiveCell.Font.Italic sama dengan ActiveCell.Font.Italic Nizam © MenetapkanMenetapkan nilainilai propertyproperty SintaxSintax:: Object.PropertyObject.Property == valuevalue ValueValue berupaberupa nilainilai pernyataanpernyataan untukuntuk mensetmenset 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 propertyproperty dapatdapat dicaridicari dengandengan •• variabelvariabel == Object.PropertyObject.Property Nizam © BekerjaBekerja dengandengan methodsmethods MethodMethod menggambarkanmenggambarkan apaapa yangyang dilakukandilakukan object;object; contohcontoh:: metodemetode sort, 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 yangyang terjaditerjadi padapada object,object, sepertiseperti:: membukamembuka workbookworkbook adalahadalah eventevent padapada workbookworkbook ResponsRespons terhadapterhadap eventevent yangyang terjaditerjadi disebutdisebut event handlersevent handlers Event handlersEvent handlers akanakan dijalankandijalankan bilabila eventevent terjaditerjadi padapada suatusuatu objectobject
  • 14. 14 Nizam © ContohContoh event handlerevent handler ' prosedur pemberian salam saat workbook dibuka' prosedur pemberian salam saat workbook dibuka ' meminta nama pengguna' meminta nama pengguna Private Sub Workbook_Open()Private Sub Workbook_Open() ‘‘ eventevent membukamembuka WorkbookWorkbook Dim pesan, judul, Default, MyValueDim pesan, judul, Default, MyValue pesan = "Hi, siapa nama anda? " ' minta inputpesan = "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 eventevent ContohContoh:: ' prosedur pemberian salam saat workbook dibuka' prosedur pemberian salam saat workbook dibuka ' meminta nama pengguna' meminta nama pengguna Private Sub Workbook_Open()Private Sub Workbook_Open() ‘‘eventevent membukamembuka wbwb Dim pesan, judul, Default, MyValueDim pesan, judul, Default, MyValue pesan = "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 objectobject CollectionCollection adalahadalah himpunanhimpunan objects yangobjects yang serupaserupa;; sepertiseperti WorkBooksWorkBooks CollectionCollection merupakanmerupakan koleksikoleksi workbook yangworkbook yang terbukaterbuka CollectionCollection jugajuga merupakanmerupakan objectobject sehinggasehingga memilikimemiliki propertiesproperties dandan methodsmethods yangyang bisabisa dimanipulasidimanipulasi AnggotaAnggota collectioncollection disebutdisebut elementelement yangyang bisabisa diaksesdiakses dengandengan namanyanamanya atauatau dengandengan indexindex ContohContoh:: Workbooks(Workbooks(““Budget.xlsBudget.xls””).Close).Close ActiveSheet.Picture(1).CopyActiveSheet.Picture(1).Copy KalauKalau taktak diberidiberi index,index, diasumsikandiasumsikan semuasemua koleksikoleksi diperlakukandiperlakukan dengandengan method yangmethod yang samasama Nizam © Object browserObject browser Libraries dan Project Template Code Properties Methods Events Nizam © BekerjaBekerja dengandengan object browserobject browser MenunjukkanMenunjukkan objectsobjects yangyang adaada padapada satusatu library,library, properties,properties, methodsmethods dandan eventsevents yangyang terkaitterkait dengandengan objectobject Pencari object Nizam © MemasukkanMemasukkan objectobject dalamdalam variabelvariabel SintaxSintax:: variableNamevariableName == ObjectNameObjectName DimDim budgetSheetbudgetSheet As ObjectAs Object SetSet budgetSheetbudgetSheet =_=_ Workbooks(Workbooks(““Budget.xlsBudget.xls””).Worksheets().Worksheets(““20032003 Budget)Budget) LebihLebih baikbaik:: DimDim budgetSheetbudgetSheet As WorksheetAs Worksheet SetSet budgetSheetbudgetSheet =_=_ Workbooks(Workbooks(““Budget.xlsBudget.xls””).Worksheets().Worksheets(““20032003 Budget)Budget)
  • 15. 15 Nizam © Operator IsOperator Is KitaKita kadangkadang perluperlu membandingkanmembandingkan beberapabeberapa objects, VBAobjects, VBA menyediakanmenyediakan operator Isoperator Is untukuntuk membandingkanmembandingkan duadua objectsobjects HasilHasil == Object1Object1 IsIs Object2Object2 •• Object1Object1 dandan Object2Object2 adalahadalah objectobject atauatau variabelvariabel,, bilabila samasama,, hasilhasil akanakan TrueTrue,, bilabila bedabeda akanakan FalseFalse Nizam © BekerjaBekerja dengandengan propertiesproperties dandan methodsmethods yangyang banyakbanyak (1/3)(1/3) ContohContoh:: SubSub FormatRangeFormatRange()() Worksheets(Worksheets(““Sheet1Sheet1””).Range().Range(““B2:B5B2:B5””).Style =).Style = ““CurrencyCurrency”” Worksheets(Worksheets(““Sheet1Sheet1””).Range().Range(““B2:B5B2:B5””).WrapText= True).WrapText= True Worksheets(Worksheets(““Sheet1Sheet1””).Range().Range(““B2:B5B2:B5””).Font.Size = 16).Font.Size = 16 Worksheets(Worksheets(““Sheet1Sheet1””).Range().Range(““B2:B5B2:B5””).Font.Bold = True).Font.Bold = True Worksheets(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 propertiesproperties dandan methodsmethods yangyang banyakbanyak (2/3)(2/3) ContohContoh yangyang 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 propertiesproperties dandan methodsmethods yangyang banyakbanyak (3/3)(3/3) ContohContoh yangyang lebihlebih baikbaik lagilagi:: Sub FormatRange3()Sub FormatRange3() With Worksheets(With Worksheets(““Sheet1Sheet1””).Range().Range(““B2:B5B2:B5””)) .Style =.Style = ““CurrencyCurrency”” .WrapText= True.WrapText= True With .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 With End SubEnd Sub Nizam © ObjectObject aplikasiaplikasi Application ObjectApplication Object merupakanmerupakan containercontainer yangyang berisiberisi semuasemua ojectoject dalamdalam aplikasiaplikasi yangyang dijalankandijalankan; object; object iniini memilikimemiliki beberapabeberapa propertiesproperties dandan methodsmethods yangyang banyakbanyak gunanyagunanya BeberapaBeberapa contohcontoh •• Application.ActivePrinterApplication.ActivePrinter:: mengembalikanmengembalikan himpunanhimpunan printer driver yangprinter driver yang tersediatersedia •• Application.ActiveWindowApplication.ActiveWindow:: mengembalikanmengembalikan window yangwindow yang sedangsedang aktifaktif •• Application.CaptionApplication.Caption:: mengembalikanmengembalikan juduljudul aplikasiaplikasi •• Application.DialogsApplication.Dialogs: built: built--in dialog yangin dialog yang adaada dlmdlm aplikasiaplikasi •• Application.VisibleApplication.Visible:: mengaturmengatur aplikasiaplikasi terlihat/tidakterlihat/tidak •• Application.WidthApplication.Width:: lebarlebar windowwindow aplikasiaplikasi •• Application.WindowsApplication.Windows:: kumpulankumpulan windowwindow aplikasiaplikasi yangyang aktifaktif Nizam © MethodsMethods padapada Application ObjectApplication Object Application objectApplication object memilikimemiliki beberapabeberapa methods,methods, diantaranyadiantaranya •• Application.HelpApplication.Help:: mendisplaymendisplay sistemsistem HelpHelp aplikasiaplikasi •• Application.QuitApplication.Quit:: keluarkeluar daridari aplikasiaplikasi •• Application.RepeatApplication.Repeat:: mengulangmengulang kegiatankegiatan yangyang barubaru sajasaja dilakukandilakukan •• Application.EnableCancelKeyApplication.EnableCancelKey
  • 16. 16 Nizam © Object WindowObject Window MenspesifikasiMenspesifikasi object windowobject window •• DenganDengan indeksindeks,, atauatau dengandengan menuliskanmenuliskan namanyanamanya Windows(1)Windows(1) Windows(Windows(““Nilai.xlsNilai.xls””),), atauatau ActiveWindowActiveWindow window yangwindow yang saatsaat iniini sedangsedang aktifaktif MembukaMembuka windowwindow barubaru •• Window.NewWindowWindow.NewWindow Nizam © Object WindowObject Window BeberapaBeberapa 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.UsableWidth BeberapaBeberapa 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 yangyang akanakan dibahasdibahas?? PengendalianPengendalian aluralur programprogram IfIf……ThenThen IfIf……ThenThen……ElseElse MembuatMembuat keputusankeputusan gandaganda FungsiFungsi yangyang mengambilmengambil keputusankeputusan LoopsLoops DoDo……LoopLoop ForFor……NextNext For EachFor Each……NextNext ExitExit Nizam © PengendalianPengendalian aluralur programprogram AlurAlur programprogram dikendalikandikendalikan dengandengan logikalogika pengambilanpengambilan keputusankeputusan (True(True atauatau False)False) If..ThenIf..Then •• Langsung/sebarisLangsung/sebaris IfIf conditioncondition ThenThen statementstatement •• DenganDengan blokblok IfIf conditioncondition ThenThen [[statementsstatements]] End IfEnd If Nizam © PengendalianPengendalian aluralur programprogram IfIf……ThenThen……ElseElse •• SintaksSintaks IfIf conditioncondition ThenThen [[TrueStatementsTrueStatements]] ElseElse [[FalseStatementsFalseStatements]] End IfEnd If ContohContoh:: FunctionFunction FutureValue(RateFutureValue(Rate,, NperNper, Pmt, Frequency), Pmt, Frequency) If Frequency =If Frequency = ““MonthlyMonthly”” ThenThen FutureValueFutureValue == FV(RateFV(Rate / 12,/ 12, NperNper * 12, Pmt / 12)* 12, Pmt / 12) ‘‘ freqfreq monthlymonthly ElseElse FutureValueFutureValue == FV(RateFV(Rate / 4,/ 4, NPerNPer * 4, Pmt / 4)* 4, Pmt / 4) ‘‘ freqfreq quarterlyquarterly End IfEnd If End FunctionEnd Function
  • 17. 17 Nizam © KeputusanKeputusan gandaganda PenggunaanPenggunaan operator Andoperator And dandan OrOr IfIf condition1condition1 AndAnd condition2condition2 ThenThen [[TrueStatementsTrueStatements]] ElseElse [[FalseStatementsFalseStatements]] End IfEnd If ContohContoh:: Function FutureValue2(Rate,Function FutureValue2(Rate, NperNper, Pmt, Frequency), Pmt, Frequency) If Frequency <>If Frequency <> ““MonthlyMonthly”” And Frequency <>And Frequency <> ““QuarterlyQuarterly”” ThenThen MsgBoxMsgBox ““TheThe FrequenyFrequeny argument must be eitherargument must be either ““ && “””“””MonthlyMonthly”””” or_or_ “”“”QuarterlyQuarterly””””!!”” Exit FunctionExit Function End IfEnd If If Frequency =If Frequency = ““MonthlyMonthly”” ThenThen FutureValue2 =FutureValue2 = FV(RateFV(Rate / 12,/ 12, NperNper * 12, Pmt / 12)* 12, Pmt / 12) ‘‘ freq monthlyfreq monthly ElseElse FutureValue2 =FutureValue2 = FV(RateFV(Rate / 4,/ 4, NPerNPer * 4, Pmt / 4)* 4, Pmt / 4) ‘‘ freq quarterlyfreq quarterly End IfEnd If End FunctionEnd Function Nizam © KeputusanKeputusan gandaganda PenggunaanPenggunaan statement multi Ifstatement multi If……ThenThen……ElseElse IfIf condition1condition1 ThenThen [[condition1condition1 TrueStatementsTrueStatements]] ElseIfElseIf condition2condition2 [[condition2condition2 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”” ThenThen FutureValue3 =FutureValue3 = FV(RateFV(Rate / 12,/ 12, NperNper * 12, Pmt / 12)* 12, Pmt / 12) ‘‘ freq monthlyfreq monthly ElseIfElseIf Frequency =Frequency = ““QuarterlyQuarterly”” ThenThen FutureValue3 =FutureValue3 = FV(RateFV(Rate / 4,/ 4, NPerNPer * 4, Pmt / 4)* 4, Pmt / 4) ‘‘ freq quarterlyfreq quarterly ElseElse MsgBoxMsgBox ““The Frequency argument must be eitherThe Frequency argument must be either ““ & _& _ “””“””MonthlyMonthly”””” oror “”“”QuarterlyQuarterly””””!!”” End IfEnd If End FunctionEnd Function Nizam © KeputusanKeputusan gandaganda PenggunaanPenggunaan Select CaseSelect Case Select CaseSelect Case TestExpressionTestExpression CaseCase FirstCaseListFirstCaseList [[FirstStatementsFirstStatements]] CaseCase SecondCaseListSecondCaseList [[SecondStatementsSecondStatements]] <etc.><etc.> CaseCase ElseElse [[ElseStatementsElseStatements]] End SelectEnd Select ContohContoh:: Function FutureValue4(Rate,Function FutureValue4(Rate, NperNper, Pmt, Frequency), Pmt, Frequency) Select Case FrequencySelect Case Frequency CaseCase ““MonthlyMonthly”” FutureValue4 =FutureValue4 = FV(RateFV(Rate / 12,/ 12, NperNper * 12, Pmt / 12)* 12, Pmt / 12) ‘‘ freqfreq monthlymonthly CaseCase ““QuarterlyQuarterly”” FutureValue3 =FutureValue3 = FV(RateFV(Rate / 4,/ 4, NPerNPer * 4, Pmt / 4)* 4, Pmt / 4) ‘‘ freqfreq quarterlyquarterly Case ElseCase Else MsgBoxMsgBox ““The Frequency argument must be eitherThe Frequency argument must be either ““ & _& _ “””“””MonthlyMonthly”””” oror “”“”QuarterlyQuarterly””””!!”” End SelectEnd Select End FunctionEnd Function Nizam © KeputusanKeputusan gandaganda ContohContoh lain:lain: mengubahmengubah nilainilai angkaangka keke hurufhuruf FunctionFunction nilHuruf(nilAngkanilHuruf(nilAngka As Integer) As StringAs Integer) As String Select CaseSelect Case nilAngkanilAngka Case Is < 0Case Is < 0 nilHurufnilHuruf == ““SalahSalah datadata nilainilai kurangkurang daridari 0!0!”” Case Is < 50Case Is < 50 nilHurufnilHuruf == ““FF”” Case Is < 60Case Is < 60 nilHurufnilHuruf == ““DD”” Case Is < 70Case Is < 70 nilHurufnilHuruf == ““CC”” Case Is < 80Case Is < 80 nilHurufnilHuruf == ““BB”” Case Is <= 100Case Is <= 100 nilHurufnilHuruf == ““AA”” Case ElseCase Else nilHurufnilHuruf == ““SalahSalah!! NilaiNilai lebihlebih daridari 100!100!”” End SelectEnd Select End FunctionEnd Function Nizam © FungsiFungsi pengambilpengambil keputusankeputusan StatementStatement IIfIIf (Inline If)(Inline If) •• SintaksSintaks:: IIfIIf ((conditioncondition,, TrueResultTrueResult,, FalseResultFalseResult)) FunctionFunction 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, ……)) FunctionFunction NamaHari(noHariNamaHari(noHari As Integer) As StringAs Integer) As String NamaHariNamaHari == Choose(noHariChoose(noHari,, ““AhadAhad””,, ““SeninSenin””,, ““SelasaSelasa””,, ““RabuRabu””,, ““KamisKamis””,, ““JumatJumat””,_,_ ““SabtuSabtu””)) End FunctionEnd Function Nizam © FungsiFungsi pengambilpengambil keputusankeputusan FungsiFungsi SwitchSwitch •• SintaksSintaks: Switch(: Switch(expr1, value1, value2expr1, value1, value2,, ……)) Function NilHuruf2(nilAngka As Integer) As StringFunction NilHuruf2(nilAngka As Integer) As String NilHuruf2 =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. 18 Nizam © PengulanganPengulangan -- looploop StrukturStruktur DoDo……LoopLoop SintaksSintaks:: •• Do WhileDo While conditioncondition ‘‘ checkcheck duludulu barubaru looploop [statement][statement] ‘‘ dilakukandilakukan selamaselama kondisikondisi TT LoopLoop •• DoDo ‘‘ lakukanlakukan duludulu barubaru checkcheck [statement][statement] Loop WhileLoop While conditioncondition ‘‘ diulangdiulang bilabila kondisikondisi TT •• Do UntilDo Until conditioncondition ‘‘ checkcheck duludulu barubaru looploop [[statemntstatemnt]] ‘‘ dilakukandilakukan selamaselama kondisikondisi FF LoopLoop •• DoDo ‘‘ dilakukandilakukan duludulu barubaru checkcheck [statement][statement] Loop UntilLoop Until conditioncondition ‘‘ diulangdiulang bilabila kondisikondisi masihmasih FF Nizam © PengulanganPengulangan -- looploop ContohContoh SubSub BigNumbersBigNumbers()() DimDim rowNumrowNum As Integer,As Integer, colNumcolNum As Integer,As Integer, currCellcurrCell AsAs RangeRange rowNumrowNum == ActiveCell.RowActiveCell.Row colNumcolNum == ActiveCell.ColumnActiveCell.Column SetSet currCellcurrCell == ActiveSheet.Cells(rowNumActiveSheet.Cells(rowNum,, ColNumColNum)) Do WhileDo While currCell.ValuecurrCell.Value <><> “”“” IfIf IsNumeric(currCell.ValueIsNumeric(currCell.Value) Then) Then IfIf currCell.ValuecurrCell.Value >= 1000 Then>= 1000 Then currCell.Font.ColorcurrCell.Font.Color == VBAColor(VBAColor(““magentamagenta””)) End IfEnd If rowNumrowNum == rowNumrowNum + 1+ 1 SetSet currCellcurrCell == ActiveSheet.Cells(rowNumActiveSheet.Cells(rowNum,, colNumcolNum)) LoopLoop End SubEnd Sub Nizam © ForFor …… NextNext LoopLoop dengandengan ForFor …… NextNext SintaksSintaks: For: For counter = startcounter = start ToTo end [end [inkremeninkremen]] [statement][statement] Next [Next [countercounter]] SubSub LoopTestLoopTest()() Dim counter As IntegerDim counter As Integer For 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 counter Application.StatusBarApplication.StatusBar = False= False End SubEnd Sub Nizam © For EachFor Each …… NextNext LoopLoop dengandengan For EachFor Each …… NextNext SintaksSintaks: For Each: For Each elementelement InIn groupgroup [statement][statement] Next [Next [elementelement]] SubSub convertProperconvertProper()() DimDim cellObjectcellObject As ObjectAs Object For EachFor Each cellObjectcellObject In SelectionIn Selection cellObject.FormulacellObject.Formula == Application.Proper(cellObjectApplication.Proper(cellObject)) NextNext End SubEnd Sub Nizam © PenggunaanPenggunaan Exit ForExit For atauatau Exit DoExit Do KadangKadang kitakita perluperlu keluarkeluar daridari LoopLoop CaranyaCaranya:: gunakangunakan Exit ForExit For atauatau Exit DoExit Do Sub BigNumbers2()Sub BigNumbers2() DimDim rowNumrowNum As Integer,As Integer, colNumcolNum As Integer,As Integer, currCellcurrCell As RangeAs Range rowNumrowNum == ActiveCell.RowActiveCell.Row colNumcolNum == ActiveCell.ColumnActiveCell.Column SetSet currCellcurrCell == ActiveSheet.Cells(rowNumActiveSheet.Cells(rowNum,, ColNumColNum)) Do WhileDo While currCell.ValuecurrCell.Value <><> ““ ”” IfIf IsNumeric(currCell.ValueIsNumeric(currCell.Value) Then) Then IfIf currCell.ValuecurrCell.Value >= 1000 Then>= 1000 Then currCell.Font.ColorcurrCell.Font.Color == VBAColor(VBAColor(““magentamagenta””)) End IfEnd If ElseElse Exit DoExit Do ‘‘ bilabila bukanbukan angkaangka keluarkeluar daridari Do loopDo loop End IfEnd If rowNumrowNum == rowNumrowNum + 1+ 1 SetSet currCellcurrCell == ActiveSheet.Cells(rowNumActiveSheet.Cells(rowNum,, colNumcolNum)) LoopLoop End SubEnd Sub Nizam © TugasTugas -- 11 SalahSalah satusatu caracara untukuntuk mencarimencari akarakar persamaanpersamaan ff adalahadalah dengandengan metodemetode NewtonNewton •• BilaBila f(xf(x) =) = 00 adalahadalah fungsifungsi yangyang akanakan dicaridicari akarnyaakarnya,, dandan xxnn adalahadalah perkiraanperkiraan akarakar f(xf(x)) makamaka pendekatanpendekatan nilainilai akarakar persamaanpersamaan berikutnyaberikutnya 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 VBAVBA untukuntuk mencarimencari akarakar fungsifungsi f(xf(x) = 0) = 0 yangyang merupakanmerupakan fungsifungsi yangyang dapatdapat didefinisikandidefinisikan dalamdalam program (userprogram (user-- defined)defined)
  • 19. 19 Nizam © TugasTugas -- 22 BuatBuat sekumpulansekumpulan programprogram dandan fungsifungsi untukuntuk melakukanmelakukan operasioperasi bilanganbilangan komplexkomplex:: penjumlahanpenjumlahan,, penguranganpengurangan,, perkalianperkalian,, pembagianpembagian Nizam © TugasTugas 33 BuatBuat satusatu programprogram aplikasiaplikasi VBA excelVBA excel untukuntuk bidangbidang teknikteknik sipil/fisika/mekanikasipil/fisika/mekanika