14/08/2013 - IrDarmadiMM
1
PEMROGRAMANKOMPUTER
TEKNIK SIPIL
IrDarmadiMM ©
PEMROGRAMAN KOMPUTER (PM)PM= adalah proses menulis, menguji dan memperbaiki (debug), danmemelihara kode yang membangun sebuah program komputer.
Kode atau Script atau Syntax ini ditulis dalam berbagai bahasapemrograman, sehingga memungkinkan manusia dapatberkomunikasi dengan komputer
Tujuan dari pemrograman adalah untuk memuat suatu susunan codeyang dapat melakukan suatu perhitungan atau 'pekerjaan' sesuaidengan keinginan si pemrogram. Untuk dapat melakukan pemrograman,diperlukan keterampilan dalam algoritma, logika, bahasa pemrograman,dan di banyak kasus, pengetahuan-pengetahuan lain seperti matematika.
Pemrograman adalah sebuah seni dalam menggunakan satu atau lebihalgoritma yang saling berhubungan dengan menggunakan sebuahbahasa pemrograman tertentu sehingga menjadi sebuah program.
IrDarmadiMM ©
BAHASA PEMROGRAMANBahasa pemrograman adalah suatu perintah yang dibuat manusiauntuk membuat komputer menjadi memiliki fungsi tertentu. Bahasapemrograman ini adalah suatu susunan aturan penulisan (sintaks)yang membentuk kode kode yang kemudian akan diterjemahkan olehprogram kompiler menjadi bahasa rakitan (assembly) dan terus diolahhingga dimengerti oleh mesin komputer (bahasa mesin=mati/hidup/0/1)
Bahasa pemrograman yang berbeda mendukung gaya pemrogramanyang berbeda (disebut paradigma pemrograman). Pilihan bahasa yangdigunakan adalah tunduk pada banyak pertimbangan, seperti kebijakanperusahaan, kesesuaian untuk tugas, ketersediaan pihak ketiga paket,atau keinginan individunya. Idealnya, bahasa pemrograman dipilih yangpaling cocok untuk tugas yang dihadapi akan dipilih. Trade-off dari idealini melibatkan cukup menemukan programmer yang tahu bahasa untukmembangun sebuah tim, ketersediaan compiler untuk bahasa, danefisiensi dengan program-program yang ditulis dalam bahasa tertentuuntuk mengeksekusi program.
IrDarmadiMM ©
BAHASA PEMROGRAMANBeberapa bahasa pemrograman pada saat ini adalah:Assembly (C atau C++ atau C#) BasicCobol HTMLJava FortranClipper PascalVisual Basic DbaseFoxpro dan masih banyak lagi yg lain
Dalam kuliah Teknik Sipil Jayabaya ini akan digunakanbahasa pemrograman VISUAL BASIC
Dalam aplikasinya nanti menngunakan VBE atau VBA, yaituVisual Basic Editor atau Visual Basic Aplication, yang padaprinsipnya tidak beda jauh dengan bahasa Visual Basic
IrDarmadiMM ©
14/08/2013 - IrDarmadiMM
2
BAHASA PEMROGRAMANKeuntungan Penggunaan Visual BasicPertama, waktu pembelajaran dan pengembangan yang lebihsingkat/mudah dibanding dengan bahasa pemrograman lain, sepertiC/C++, Delphi atau PowerBuilder sekalipun. Meskipun pernyataan inimasih bisa diperdebatkan. Tetapi yang jelas, VB merupakan bahasapemrograman yang sangat populer dan banyak penggunanya. Cukupbanyak literatur, kursus, situs internet ataupun komunitas yang siapmembantu. Yang perlu disiapkan hanya tinggal kemauan dan kerja keras,dan pengaturan waktu yang baik untuk mempelajarinya.
Kedua, Visual Basic for Application (VBA) digunakan oleh keluargaMicrosoft Office (Word, Excel, Access, PowerPoint, Project). VBAdikembangkan dari aplikasi yang sebelumnya dikenal dengan istilahmacro, otomasi langkah-langkah berulang. Dengan adanya VBA,kemampuan macro dapat ditingkatkan menjadi seperti bahasapemrograman lain. Bagi yang ingin mengoptimalkan kemampuan Autocadpun, dapat digunakan macro yang menggunakan VBA, bukan Fortran dll.
IrDarmadiMM ©IrDarmadiMM ©
EXCEL OBJECT
Dalam graphical user interface (GUI),aplikasi dan bagian-bagiannya dikenal dengansebutan OBJECT
OBJECT dalam excel meliputi sbb:a. File excel itu sendirib. Workbook atau keseluruahan file excel
yang dibukac. Sheet / worksheetd.Ranga yang ada di worksheete. Cells yang ada di worksheetf. Listbook yang ada di Developerg. Chartsheet dalam Worksheeth.Dan sebagainya
Object utama dalam EXCEL
Workbooks merupakan
"file excel yang telah dibuka“ yang berisi:- Worksheets- Chart sheets- Macro sheets (2007xlsx.xlm , 2003xls.xla)- Dialog sheets
Worksheets merupakan lembar kerja,standar excel ada 3 buah sheets yang terbuka
Worksheet terdiri dari- 256 kolom dan- 65,536 baris (16,777,216 sel !!!!!)
ATAU setara dengan 36,000 halaman cetak A4 !!!!IrDarmadiMM ©
14/08/2013 - IrDarmadiMM
3
- VBA Object Based Programming Language
KONSEP
object-oriented programming (1)
Automobile Excel
ObjectsClasses
EngineDoor
Wheels( Collections )
ApplicationWorkbook
Worksheets( Collections )
PropertiesModelColorPrice
VersionSheetsVisible
MethodsStartClose
Change
QuitSave
Activate
EventsOn_Start
Before_CloseAfter_Change
WorkbookBeforeCloseBeforeSave
Activate
OBJECT IN EXCEL
IrDarmadiMM ©worksheetchartsheet dialogsheet Property ProjectExplorer VB Editor / VBA
TOOL Menu BAR TOOL BAR
14/08/2013 - IrDarmadiMM
4
IrDarmadiMM ©
Excel GUI (graphical user interface)
Antarmuka excel bisa dilakukandengan beberapa cara:
• Menu
Dialog box
Toolbars
Drag-and-drop
Keyboard shortcuts ( copy=Ctrl-C, paste=Ctrl-V)
IrDarmadiMM ©
IrDarmadiMM ©
Beberapa kemampuan excel
Formatting (bold, Italics,number etc)
Formulas (stat, financ, math, etc)
Names Range
Functions
Shapes
Charts
Macros
etcIrDarmadiMM ©
Analysis tools
Outline
Automatic subtotal
Scenario management
Analysis toolpak
Pivot table
Auditing
Solver
Addins
14/08/2013 - IrDarmadiMM
5
IrDarmadiMM ©
RANGERange(A1:B10) artinya kita sorot/blok
dari cell A1 sampai dengan cell B10
Range(“A” & 3) artinya kita pilih
kolom A dan baris 3
Referensi dengan nama :
Range(A1,B10) insert - name " create
nama=baduartinya kita pilih cell A1 sampai cell B10
dan diberi identifikas sebagai “badu”
Relative A1 Absolute $A$1
Row absolute A$1 Column absolute $A1
Cells(“A” & 3) artinya kita pilih kolom A dan baris 3
Cells(2,3) artinya kita pilih kolom 2(B) dan baris 3
Referencing other sheets/workbooks
=[data.xls]Sheet2[A2]+1
CELLS A1 style
Formulae in Excel (R1C1 style - Row,Column)R1C1 = absolute address – it does not change under copy / paste
R[1]C[1] = relative address – it does change under copy /paste
And we can use mixed mode:
R1C[1] – R1 is absolute, C[1] is relative
In VBA, can use either or both A1 and R1C1 styles
A1 style tends to be absolute
A1 style used with the “Range” propertyRange(“A4”)
So, we can refer to individual cells with the “Cells” Property,which uses an R1C1 style
Cells(4,1)
Keduanya menghasilkan nilai yang sama saja, baris 4 kolom-A
Contoh
Private Sub CommandButton1_Click()Dim x As IntegerDim y As IntegerDim z As IntegerDim result As Integerx = Cells(1, 2).Valuey = Cells(2, 2).Valuez = Cells(3, 2).Valueresult = x * y + zCells(4, 2).Value = resultEnd Sub
IrDarmadiMM ©
Bagian 1
Dasar- dasar pemrograman VBA
14/08/2013 - IrDarmadiMM
6
IrDarmadiMM ©
Apa yang dibicarakan?
01. Mengenal VBA (apa dan kenapa)
02. IDE
03. Pemrograman berbasis object
04. Cara membuat program VBA
05. Makro dan Makro Developer
06. Editor program
07. Menjalankan program
08. Membuat fungsi sendiri
09. Membuat prosedur
10. Mengatur editor
11. Melindungi programIrDarmadiMM ©
01.Apa dan kenapa VBA
VBA merupakan bahasa pemrograman bagisemua aplikasi Microsoft Office (Excel, Word,Access, Powerpoint) dan beberapa yang lain(Outlook, Visio, AutoCAD, Map-Info, dsb.)
Dapat berfungsi sebagai macro ataubahasa pemrograman
Merupakan bahasa program beorientasiobject, semua object office dapat denganmudah dimanipulasi dengan VBA
Belajar satu bahasa dapat di-aplikasikandalam banyak aplikasi Windows
Apa VBA ??????
IrDarmadiMM ©
Kenapa VBA?????
Mendukung aplikasi internet dan intranet
Mendukung ActiveX controls
Code editor dengan bantuan yang
lengkap dan juga ada debugger
Form building tools
Object browser
Dll yang memudahkan pembuatan Program
IrDarmadiMM ©
Module windowObjectlist
Procedurelist
Projectexplorer
Propertieswindow
02. IDE –– integrated development environment
• Untuk menulis /edit program VBA digunakan IDE
14/08/2013 - IrDarmadiMM
7
IrDarmadiMM ©
03. Prinsip prmrograman berbasis object
Object
Workbook, worksheet, chart, cell, dsb.
Properties Setiap object memiliki properties:
color, font, italic, dsb.
Method & procedure Cara/ perintah untuk melakukan sesuatu:
pindah worksheet, pindah baris,pindah kolom dsb.
Events Setiap peristiwa yang dilakukan oleh object:
Click mouse, enter, dsb.
OBYEK, PROPERTI,EVENT DAN METHOD
1. ObjekObjek dapat diartikan kepada sebuah benda dalam hal ini anggapsaja objek ada lah textbox, label dan comman button.
2. PropertiesProperties adalah sesuatu yang dipunyai oleh objek.Mis: textbox mempunyai property “nama” atau property “text”
3. EventEvent adalah suatu kejadian terhadap objek pada saat tertentu.Misal: Objek command button dapat menerima event klik pada saatpemakai software kita nanti mengklik nya.
4. MethodMethod adalah sesuatu yang dapat dilakukan oleh objek.Misal: Objek combo dapat menambahkan Item nama-nama haridengan method AddItemcontoh: combo1.AddItem “Senin” dst.
Visual Basic Aplications
Objects / Properties / Methods
Property Adjective
Object Noun Part of the application
Attribute
Method Verb Action to dosomething
IrDarmadiMM @
04. Cara membuat program VBA (programming)
Program dalam VBA disebut prosedur (dan/atau function)
Tiga jenis prosedur
a. Command macrosmengotomasi prosedur-prosedur, fungsi- fungsiyang ada (built-in)dalam aplikasi, memformat,menyimpan, dsb.
b. User-defined function (function procedure)program yang berisi rumus dan perintah yangkita susun sendiri .
c. Property procedure menunjukkan dan/atau
mengubah properti dari suatu object
14/08/2013 - IrDarmadiMM
8
IrDarmadiMM ©
Ada 2(dua) cara dalam mebuat program yaitu :
1. Dengan merekam macro (macro recording)
Tools Macro Record Macro
2. Dengan menulis program langsung
a. melalui memanfaatkan Developer - sheet
b. buka IDE/VB Editor - Module
IrDarmadiMM ©
MEMANFAATKAN MENU DEVELOPER
Menu FileOptionsCustomize Ribbons dan centrangbagian developer
VISUAL BASIC EDITOR... USER FORM,MODULE DAN CODECode adalah kumpulan perintah-perintah yang digunakanuntuk menjalankan keinginan pembuat perogramModule adalah tempat menulis CODE yang telah kitasiapkan untuk menjadi program (*.bas)User form adalah form yang dibentuk untuk menampilkanrunning CODE yang telah dibuat (*.frm)
CONTOH CODE MENULISKAN NAMA, ALAMAT DANNO.TELP KE WORKSHEET “Data”Sheets("Data").ActivateTname = "Paijo"Talamat = "Jl. Embuh Raeruh"Tpone = "081280186063"
Cells(1, 2) = TnameCells(1, 3) = TalamatCells(1, 4) = Tpone
14/08/2013 - IrDarmadiMM
9
Contoh USER FORM Modul dan Class ModulStandard Modules
Standard modules (.BAS ) umumnya berfungsi untuk menaruhvariabel global yang bisa diakses sama semua form dari projectkita,juga bisa kita buat Prosedur & Function yang bisa diakses samasemua form.
Class Modules (Kelas)
Class modules (.CLS ) adalah modul yang spesifik dan secara umumkelas mewakili kelompok objek yang serupa. Misalnya seluruhmahasiswa di suatu kampus adalah objek. Kelas nya adalahMahasiswa (contoh: CMahasiswa.cls atau Class1.cls). Atau bahkankita bisa membuat Class khusus tentang penyelesain fungsi kuadrat,jadi dalam MODULE kita tinggal panggil saja Class-nya
OBJECT, PROPERTI,EVENT DAN METHOD
1. ObjekObjek dapat diartikan kepada sebuah benda dalam hal ini anggapsaja objek ada lah textbox, label dan comman button.
2. PropertiesProperties adalah sesuatu yang dipunyai oleh objek.Mis: textbox mempunyai property “nama” atau property “text”
3. EventEvent adalah suatu kejadian terhadap objek pada saat tertentu.Misal: Objek command button dapat menerima event klik pada saatpemakai software kita nanti mengklik nya.
4. MethodMethod adalah sesuatu yang dapat dilakukan oleh objek.Misal: Objek combo dapat menambahkan Item nama-nama haridengan method AddItemcontoh: combo1.AddItem “Senin” dst.
05 Membuat dan menjalankan macro
Tools - macro record macro
1- Lakukan prosedur- prosedur dan perubahan
properties pada worksheet , mis copy, isi sel, dll
2- Stop macro recording
3- Edit macro untuk memberbaiki dan
mengubah hasil rekaman
4. Menjalankan:
Dengan shortcut, atau
Tools - macro run “pilih nama macro”
14/08/2013 - IrDarmadiMM
10
First Step to VBA : Macros
Record Macro
Record all the steps you conduct and write themin VBA code
Jika macros status disabledketika start Excel, ubahsecurity level ke medium
The Macro Language
Operators: +, -, *, /, ^, Mod
Comparison: =, <, >, <=, >=, <>
Logical Operators: And, Eq, Not, Or, Xor
Intrinsic Functions: Abs, Cos, Sin, Tan,Atn (arc tangent), Exp, Log (natural),Sgn, Sqr (square root), Rnd (randomnumber)
06. Menulis / Editor program
1-Tools - macro visual basic editor atau
Click tombol VBE
2- Cara Pindah dari VBE ke aplikasi tekan alt+F11
3- Tuliskan program (function atau procedure)
Sub procedure
......... isi dengan Baris program / CODE-CODE
End sub
IrDarmadiMM © IrDarmadiMM ©
07. Menjalankan program
Program dapat dijalankan dengan dua cara yaitu :
CARA-1 Tools - Macro View
Pilih program vba yang mau dijalankan
CARA-2 Tools - Macro View pilih option run
Misalnya ctrl-a, maka program dapat dijalankan
dengan menekan tombol Ctrl-diikuti dgn huruf-a
OK
14/08/2013 - IrDarmadiMM
11
IrDarmadiMM ©
08. Membuat Fungsi Sendiri
Fungsi adalah rumus yang mengolah argumendan mengembalikan hasil
Struktur fungsiFunction NamaFungsi(argumen1, argumen2, --) _
[Pernyataan/statement VBA]NamaFungsi = hasil yang dikembalikan
End Function
Bagian bagian: Statement Function Nama fungsi Argumen fungsi (parameter) Statement VBA yang melakukan hitungan Hasil yang dikembalikan -- nama fungsi = Statement End Function
Function Procedures
Function Grade (HADIR,TUGAS,UTS,UAS) as String
Sum = HADIR+TUGAS+UTS+UAS
If sum >= 80 thenGrade = “A”
Else ifsum >65Grade = “B”
ElseGrade = “C”
End if
End Function
The function name must be assigned the value to be returned!
IrDarmadiMM ©
Membuat fungsi
Contoh:
Menghitung sisi miring segitiga
Rumus Pythagoras c2 =(a2 + b 2)
Maka sisimiring = sqr(a2 + b 2)
Buka VBA excel , lalu buat program berikut:
Function sisimiring(x , y) ' nama fungsi
sisimiring = sqr(x^2 + y^2) ' nilai hasil
End Function
Pemakaian:
isikan pada sel dengan nama formula sisimiring
misal =sisimiring(3, 4) akan menghasilkan 5
IrDarmadiMM ©
Membuat fungsi
Function akar(A, B, C)
If A <> 0 Thendiskrim = B ^ 2 - 4 * A * CIf diskrim > 0 Then
akar = "dua akar riel"ElseIf diskrim = 0 Then
akar = -B / (2 * A)Else
akar = "akarnya imaginer"End If
Elseakar = "bukan persamaan kuadrat"End If
End Function
14/08/2013 - IrDarmadiMM
12
IrDarmadiMM ©
09. Membuat prosedur
Prosedur adalah unit program dalam VBA yang merupakan blok kode
dalam satu modul
Struktur sebuah prosedur
Sub NamaProsedur (argument, argumen2,...)
...... [pernyataan /statement VBA]
End Sub
CONTOH : Perhitungan bunga
Sub InputDataPinjaman()
Range("bunga") = 0.08Range("lama") = 10Range("pinjaman") = 100000000Range("bayar") =“=PMT(bunga/12,lama*12,pinjaman)"
End subRUNNING Procedure : ToolsMacropilih nama macro
Sub Procedures
Sub Gc()‘ Lines beginning with ‘ are comments / komentar' Gc Macro' Puts gc in active cell & units in adjacent cell to right' Keyboard Shortcut: Ctrl+g'
ActiveCell.FormulaR1C1 = "32.174"ActiveCell.Offset(0, 1).Range("A1").SelectActiveCell.FormulaR1C1 = "ft-lbm/lbf-s^2"
End Sub
This was a recorded macro – macros are “Sub” procedures.
Memanfaatkan intelli-sense
Setiap object dalam excel memiliki properties dan methods, Untuk memanipulasi obyek dalam program VBA,
kita bisa memanfaatkan intelli-sense
Caranya:
Tuliskan nama object lalu diikuti dengan titik (.) atau“(“ akan keluar properties dari obyek tersebut
Contoh : application. -- titik nya activecell.Formula=sum( akan muncul
argumen untuk fungsi sum
Kalau kita tekan <esc> intellisense tak akan muncullagi untuk obyek yang sama, untukmemunculkan lagi - tekan Ctrl+J IrDarmadiMM ©
IrDarmadiMM ©
Menyimpan/export modul
Dari project explorer, pilih modulyang akan disimpan
Pilih File Export File
Pilih lokasi tempat menyimpan file Beri nama file (.BAS)
Tekan Save
Menyimpan/export form
Dari project explorer, pilih Userformyang akan disimpan
Pilih File Export File
Pilih lokasi tempat menyimpan file Beri nama file (.FRM)
Tekan Save
14/08/2013 - IrDarmadiMM
13
IrDarmadiMM ©
Mengimpor/ambil modul
Dari project explorer
Pilih File Import File
Pilih file dari lokasi tempatmenyimpan file.BAS atau file.FRM atau
Tekan Open
10. Mengatur editor• Cara kerja dan tampilan editor
dapat diatur dengan menu ToolslOptions
IrDarmadiMM ©
11. Melindungi program
Program dapat dilindungi dengan password
Tools - ProjectName Properties dialog box VBAProject, pilih Protection
Isikan password untuk melindungi program
OK
IrDarmadiMM ©
Bagian 2
Variabel dan konstanta
14/08/2013 - IrDarmadiMM
14
IrDarmadiMM ©
Apa yang dibicarakan disini?
01. Cara Mendeklarasikan Variabel
02. Memahami lingkup variabel
03. Mengirim variabel sbg referensi dan sbg argumen
04. Variabel statik dan Variabel dinamik
05. Menghindari kesalahan pendefisian variabel
06 Jenis data variabel
07. Jenis Variable Array
08. Konstanta
IrDarmadiMM ©
01. Deklarasi variabel Variabel dalam VBA sebaiknya dideklarasikan untuk
menyatakan nama dan jenis data (data type) Pendeklrasian variabel ini akan menghindari kesalahan
dan lebih mengefisienkan program
Caranya adalah dengan pernyataan Dim
Dim namavar As jenisdata
Namavar harus dimulai dengan huruf , max 255 karakter,tidak mengandung spasi dan titk
JenisData dapat berupa
String A sequence of bytes containing charactersInteger 2 byte integer, tanpa desimalLong 4 byte integerSingle 4 byte real numberDouble 8 byte real number
Data typesInteger 2 byte integerDecimal 16-byte(128-bit) (+/-7.9228162514264337593543950335E+28)
Long 4 byte integer +/-9,223,372,036,854,775,808Single 4 byte floating point +/ -3.4028235E+38Double 8 byte floating point +/ -4.94065645841246544E-324Currency 8 byte real Rp, US$String upto 64K characters 0 through 65535 hurufByte 1 byte, angka dari 0 sampai 255Boolean 2 byte true (1) or false (0)Date 8 bytes 12dec2014Object 4 bytes – an object referenceVariant 16 bytes + 1 byte / character
Byte atau 2-bit adalah satuan memory komputer dalam menyimpan data
AE6382
JENIS DATA
Data types
Integer 2 byte integer
Long 4 byte integer
Single 4 byte floating point
Double 8 byte floating point
Currency 8 byte real
String upto 64K characters
Byte 1 byte, angka dari 0 sampai 255
Boolean 2 byte true or false
Date 8 bytes
Object 4 bytes – an object reference
Variant 16 bytes + 1 byte / character
14/08/2013 - IrDarmadiMM
15
Declare by DimDim amount As DoubleDim year As IntegerDim name As String
Other data types: Boolean, Byte, Currency, DateDefault (no type) is Variant
Kalau diberi akhiran dengan tanda ini , berarti datanya% - integer & - long integer ! – single# - double @ currency $ - stringCONTOH : anIntegerValue% =3, aString$ = "hallo"
Can modify with scope (outside procedure)Private Iam As IntegerPublic billsPaid As Currency
Make values permanentStatic yourName As String
Multiple variablesPrivate test, amount, J As Integer
IrDarmadiMM ©
02 - Lingkup/scope variabel
Dalam VBA lingkup variabel dapat
berada pada posisi 3 hal sebagai
berikut ini :
Lingkup prosedur
Lingkup modul
Lingkup publik
IrDarmadiMM ©
Posisi Lingkup prosedur
• Variabel hanya bisa diakses oleh pernyataan-pernyataan dalam prosedur yang sama ,
misalnya : vaiabel “pesan” berikutSub Procedure1()
Dim pesan‘semua pernyataan di dalam prosedur ini dapat‘mengakses variabel variabel ' pesan'
pesan = " Saya dalam lingkup"MsgBox pesan
End Sub
Sub Procedure2()‘pernyataan di dalam prosedur ini
‘tak dapat mengakses variabel ' pesan'MsgBox pesan “ variabel pesan tak
dikenal dalam prosedur ini”End Sub
'
'
'
IrDarmadiMM ©
Deklarasi implisit dan eksplisit
Pada contoh 2, variabel pesan sebetulnyatak dikenal, tetapi ketika dijalankan tetap
memberi hasil, dalam hal ini <blank>.Ini dikarenakan VBA mengenal deklarasi
implisit ( semua variabel otomatis diberiharga <blank>, meski tak dikenal)
Kondisi semacam ini kurang baik dalampemrograman, sebaiknya dinyatakanbahwa semua variabel harusdideklarasikan agar tak terjadi kesalahan
Untuk menghindari hal tersebut da[at dideklarasikan Option Explicit
14/08/2013 - IrDarmadiMM
16
IrDarmadiMM ©
Lingkup modul
Agar variabel dapat diakses oleh
beberapa prosedur harus
dideklarasikan sebelum atau di
luar prosedur- prosedur yang
menggunakan variabel tersebut
IrDarmadiMM ©
Sub CalcMarginsl()Range("GrossMarg") =GrossMarginCalcRange("NetMarg") =NetMarginCalc(Range("FixedCosts"))
End Sub
Function GrossMarginCalc()Dim totSalesDim totExpensestotSales =Application.Sum(Range("Sales"))
totExpenses=Application.Sum(Range("Expens"))
GrossMarginCalc=(totSales - totExpenses) /totSales
End Function
FunctionNetMarginCalc(fixedCosts)
Dim totSalesDim totExpensestotSales = Application.Sum(Range("Sales"))totExpenses =Application.Sum(Range("Expens"))
NetMarginCalc = (totSales - totExpenses _- fixedCosts) / totSales
Dim totSales2 , totExpenses2Sub CalcMargins2()
Range("GrossMarg").value =GrossMarginCalc2Range("NetMarg”).value =NetMarginCalc2(Range("FixedCosts"))
End Sub
Function GrossMarginCalc2()
totSales2=Application.Sum(Range("Sales"))totExpenses2= Application.Sum(Range("Expens"))GrossMarginCalc2 = (totSales2 -totExpenses2) /totSales2
End Function
Function NetMarginCalc2(fixedCosts)
NetMarginCalc2 = (totSales2 - totExpenses2 _- fixedCosts2) / totSales2
End Function
Variabel SAMA ada di setiap MODULLEBIH BAIK SEPERTI INI :
...RASAKAN BEDANYA ....!!!!!
IrDarmadiMM ©
Lingkup publik
Kadang kita menginginkansemua modul dalam proyek kitadapat mengakses variabel
Unruk itu gunakan deklarasidengan lingkup publik
Caranya: deklarasikan dengan
public namavariabel
Untuk menggantikan
Dim namavariabel
Mengirim argumen variabel
Bila program terdiri dari banyak prosedur,mendeklarasikan variabel dalam lingkup moduldapat berbahaya, karena nilai variabel dapat diubaholeh setiap prosedur yangmengakses variabel tersebutatau variabel yang sama dideklarasikan berbeda
Untuk menghindari kesalahan semacam itu,variabel dapat dikirim dari satu prosedur ke yang lainsebagai argumen
Pengiriman argumen variabel dapat berdasar referensiatau berdasar nilai Variabel
14/08/2013 - IrDarmadiMM
17
IrDarmadiMM ©
Mengirim variabel berdasar referensi Contoh:Sub procedure3()
Dim pesanpesan= "Pesan asli!“
procedure4 pesanMsgBox pesan
End Sub
Sub procedure4(kiriman)
MsgBox kirimankiriman = "pesan telah sampai!“
End Sub
Bila procedure3 dijalankan, mula- mula pesan berisi" Pesanasli! kemudian berisi "pesan telah sampai!"
Mengirim variabel berdasar nilai (ByValue) Contoh:Sub procedure5()
Dim pesanpesan = "Pesan asli!"procedure6 pesanMsgBox pesan
End Sub
Sub procedure6(ByVal pesan)
MsgBox pesanpesan = "terimakasih atas kirimannya!“
End Sub•
Bila procedure5 dijalankan, variabel pesan akan tetapberisi " Pesan asli! karena yang dikirim hanyanilainya( ByVal)
IrDarmadiMM ©
Variabel statis
Dalam VBA, variabel dalam prosedur
setelah digunakan nilainya akan
dihapus; ketika prosedur dipanggil
lagi, akan diisi/ dihitung lagi
Bila ingin nilai variabel tak diubah
bisa dipakai variabel statis (static variable)
IrDarmadiMM ©
Sub tesStatik()ProsedurStatik
ProsedurStatik
End Sub
Sub ProsedurStatik()Static varStatikDim varReguler
varStatik = varStatik + 5varReguler = varReguler + 5MsgBox "varStatik = " & varStatik & " dan varReguler = "&varReguler
End Sub
• Saat dijalankan nilai varStatik mula- mula 5, lalu 10,sedangkan varReguler tetap 5
Contoh variabel statik
14/08/2013 - IrDarmadiMM
18
Menghindari kesalahan variabel Kadang kita salah mengetik nama variabel,
kesalahan ini paling sering terjadi pada pembuatanprogram yang besar dan kompleks
Untuk menghidarinya, gunakan perintah explicit,
maka VBA akan memberi pesan error
bila ketemu variabel baru yang belum dideklarasikan
Caranya: Dengan mendeklarasikan di bagian atas modul
- Option Explicit
Pilih ToolsOption modul general,pilih/contreng Require Variable Declaration
rDarmadiMM ©
Jenis data variabel
VBA secara otomatis akan memberikan
jenis data variant (22 byte) untuk setiap variabel
yang dideklarasikan atau tanpa diberi jenis Data
Untuk menghemat memori dan menambah efisiensi
program jenis data sebaiknya dinyatakan pada saat
di deklarasi kan
CONTOH :
Dim katamu as string ‘ 4 bytes
Dim noMhs As Integer ‘ 2 bytes
Dim Jawaban as Boolean
rDarmadiMM ©
Data typesInteger 2 byte integer +/- 32727Decimal 16-byte(128-bit) (+/-7.9228162514264337593543950335E+28)
Long 4 byte integer +/- 9,223,372,036,854,775,808Single 4 byte floating point +/- 3.4028235E+38Double 8 byte floating point +/- 4.94065645841246544E-324Currency 8 byte real Rp, US$String upto 64K characters 0 through 65535 hurufByte 1 byte, angka dari 0 sampai 255Boolean 2 byte true (1) or false (0)Date 8 bytes 12dec2014Object 4 bytes – an object referenceVariant 16 bytes + 1 byte / character
Byte atau 2-bit adalah satuan memory komputer dalam menyimpan data
IrDarmadiMM ©
Kita dapat menyatakan jenis data default Def(jenis data) [karakter] adalah default jenis data
Contoh:
Deflnt I-N , Semua Variabel yang dimulai/Awal dengan
huruf besar I s.d N adalah Integer
Keywords:
- DefBool DefDbl
- DefByte DefDate
- Deflnt DefStr
- DefObj DefSng
14/08/2013 - IrDarmadiMM
19
IrDarmadiMM @
User-defined data types Kita dapat mendefinisikan jenis data sendiri
Contoh:TypeMahasiswa
Nama As Stringnomhs As Integerangkatan As IntegertglLhr As Date
End Type
Mahasiswa.nama= " Ahmad Musa"
Mahasiswa.nomhs = 22718Mahasiswa.angkatan = 2002Mahasiswa.tglLhr= #01/01/1985#
IrDarmadiMM ©
Deklarasi Variabel array Variabel matriks dan vektor dapat dideklarasikan
dengan variabel array Deklarasi ini diperlukan untuk menyediakan memeori
menyimpan variabel dengan nama sama
Cara:Dim mhs(200) As String
Mhs(0) = Darmadimhs(100) = " Banowati Ipit "
Atau
Dim vektor(50 to 100) As Double
Dim matriks(1 to 50, 1 to 20)
! Bila ukuran array belum diketahui, bisadideklarasikan sebagai array dinamis
! Bila dimensinya diketahui bisa dinyatakankemudian sebagai statis
Dim myArray () As Double...........................
ReDim myArray(105)
! ReDim akan me- reinisialisasi nilai variabel dalamArray tersebut ,tetapi
Jika kita tidak ingin re-initialisasi makaReDim Preserve myArray(105)
Dimensi Array dapat diketahui dengan
UBound(namaArray) indeks atas
LBound(namaArray) indeks bawah
Array dinamis konstanta Konstanta built-in ada di dalam Excel
Contoh:
ActiveWIndow.WindowState=xlMaximized
User- defined constants
PubliciPrivate Const NamaKonstanta [ As Type] = expression
Contoh:
Public Constgravitasi As Single = 9.81
[Public|Private] Const constantName [As type] = expression
Public Const PI = 3.1, NumPLANETS = 9Const PI2 = PI * 2Const RELEASE = #1/1/99/#
14/08/2013 - IrDarmadiMM
20
IrDarmadiMM @
Bagian 3
Ekspresi VBA
IrDarmadiMM @
Apa yang dibicarakan?
Struktur ekspresi
Operator VBA
Bekerja dengan ekspresi numerik
Bekerja dengan ekspresi tex/string
Bekerja dengan ekspresi logika
Bekerja dengan ekspresi tanggal
format
IrDarmadiMM @
Struktur ekspresi VBA• Variabel = statemen tentang variabel
operand <asignment> operand & operator
Operand harus menggunakan jenis variabel
yangkompatibel
Operator harus sesuai dengan jenis data
contoh:
energY = mass * (speedOfLight ^ 2)
OPERATOR VBA
Operators: +, -, *, /, ^, Mod
Comparison: =, <, >, <=, >=, <>
Logical Operators: And, Eq, Not, Or, Xor
Intrinsic Functions: Abs, Cos, Sin, Tan,Atn (arc tangent), Exp, Log (natural),Sgn, Sqr (square root), Rnd (randomnumber)
14/08/2013 - IrDarmadiMM
21
Bekerja dengan ekspresi logika Operator And Expr1 And Expr2 True bila keduanya True
Operator Or Expr1 Or Expr2 True bila salah satu True
Operator XOr Exprl XOr Expr2 T bila satu T dan lainnya F
Operator Eqv Expri Eqv Expr2 T bila keduanya T atau
keuanya F
Operator Imp (Implikasi) Expri Imp Expr2 T bila Expr2 T atau keduanya
IrDarmadiMM ©IrDarmadiMM ©
Bekerja dengan tanggal
• Tanggal dalam VBA disimpan dalam bentuk rangkaian
angka, dengan 31 Desember1899 sebagai awal
sembarang) sehingga
1 Januari 1900 adalah1;
366 adalah 31 Desember 1900;
37,980 adalah 25 Desember 2003; dst.
Waktu (jam, menit, detik) dinyatakan dalam pecahan,
dengan 0 adalah tengah malam; 0.5 adalah tengah hari
IrDarmadiMM ©
Format• Untuk memformat angka /string yang
muncul bisa digunakan perintah
Format(expresi, format)
Contoh:
Format(Pemasukan Pengeluaran,"
currencyFormat(Now, " medium time")
Format(NoMhs, "00000/TS")
IrDarmadiMM ©
Bagian 4
Bekerja dengan Objects
14/08/2013 - IrDarmadiMM
22
IrDarmadiMM @
Apa yang dibahas di sini
Pengertian Object Hiraki object Bekerja dengan properti object Bekerja dengan metode object Menangani kejadian object Bekerja dengan koleksi object Browser object Mereferensi pustaka object tambahan Memberikan object pada variabel
Operator IS
Bekerja dengan beberapa properties dan methods
Object aplikasi Object windows
IrDarmadiMM ©
Pengertian object
Object adalah segala sesuatu dalam aplikasi
Windows yang dapat dilihat dan dimanipulasi/diubah
Object bisa berupa satu object ataukumpulan (collection) object
Contoh : workbook, worksheet,
window, cell, range, gambar, grafik, dsb.
IrDarmadiMM ©
cara memanipulasi oject
Cara memanipulasi object: Mengubah properties Mengaktivasi method yang terkait dengan object
Mendefinisi prosedur yang dijalankan saatsuatu event terjadi
Ilustrasi/analogi / jembatan keledai Komputer: object
Merek, jenis prosesor: property
Menulis surat , main game: method
Dihidupkan, dibuka, dimatikan: event
IrDarmadiMM ©
Hirarki object
Object dalam aplikasi Office memiliki
hirarki dari yang paling umum
hingga yang lebih spesifik;
Object paling umum : Application
object program itu sendiri.
Dalam Excel Application object memiliki >15 objects
14/08/2013 - IrDarmadiMM
23
Object Collection Description
AddIn AddIns Semua file add-in/ tambahanyang ada dalam Excel
Dialog Dialogs Kotak dialog yang built-in dalamExcel
Name Names Koleksi nama- nama yang adadalam semua workbooks yangterbukaObjects di bawah Application object
Window Windows Kumpulan windows yang terbuka
Workbook Workbooks Koleksi dari semua workbooksyangterbuka
WrosheetFunction Container untuk fungsi-fungsiworksheet Excel
IrDarmadiMM @
IrDarmadiMM ©
Bekerja dengan object properties
Sintaks: Object . Property Contoh: Application . ActiveWindow
Sintax: Object . Property = value Value berupa nilai pernyataan untuk
menset property, bisa berupa :
Numerik: ActiveCell.Font.Size = 14
String : ActiveCell.Font.Name = "Arial" Logika : ActiveCell.Font.Italic = True
Nilai property dapat dicari dengan
variabel = Object . Property
IrDarmadiMM ©
Bekerja dengan methods Method menggambarkan apa yang dilakukan
object; contoh: metode sort, simpan, buka, dsb.
Sintax: Object . Method (arg1, arg2,...)
contoh: ActiveWorkBook.Save
ActiveWorkBook.Close(SaveChanges, fileName, RouteWB)
Mengelola object events Event adalah segala sesuatu yangterjadi pada object,
seperti:
membuka workbook adalah event pada workbook
Respons terhadap event yang terjadi disebut event handlers
Event handlers akan dijalankan bila event terjadi pda object
' prosedur pemberian salam saat workbook dibuka' meminta nama penggunaPrivate Sub Workbook_Open() ' event membuka Workbook
Dim pesan, judul, Default, MyValue
pesan = "Hi, siapa nama anda? " ' minta input nama.
judul = "Salam pembuka" ' Set judul.Default = "tanpa nama" ' Set default.
' Display pesan, judul, dan nilai default.MyValue = InputBox(pesan, judul, Default)MsgBox ("Assalamu'alaikum " + MyValue)
End Sub
14/08/2013 - IrDarmadiMM
24
IrDarmadiMM @
Bekerja dengan koleksi object Collection adalah himpunan objects yang serupa;
seperti WorkBooks Collection merupakan koleksiworkbook yang terbuka
Collection juga merupakan object sehingga memilikiproperties dan methods yang bisa dimanipulasi
Anggota collection disebut element yang bisadiakses dengan namanya atau dengan index
Contoh:Workbooks("Budget.xls" ).CloseActiveSheet.Picture(1).Copy
Kalau tak diberi index, diasumsikan semuakoleksi diperlakukan dengan method yang sama
Object browser
Librariesdan Project
Properties
Events
Methods
TemplateCode
IrDarmadiMM ©
IrDarmadiMM ©
Memasukkan object dalam variabel• Sintax: variableName = ObjectName
Dim budgetSheet As Object
Set budgetSheet=_Workbooks("Budget.xls").Worksheets(" 2003
Budget)
Lebih baik:
DimbudgetSheet As WorksheetSet budgetSheet
_=_Workbooks("Budget.xls").Worksheets(" 2003Budget)
IrDarmadiMM @
Kita kadang perlu membandingkan beberapa objects, VBA menyediakanoperator Is. Untuk membandingkan
dua object
CONTOH Hasil = Objects Is Object2
Objectl dan Object2 adalah object atau variabel,bila sama, hasil akan True, bila tidak hasil akan False
Operator Is
14/08/2013 - IrDarmadiMM
25
IrDarmadiMM @
Bekerja dengan properties dan methods yang banyak (1/2)
SubFormatRange()Worksheets(" Sheet1").Range("B2:B5").Style = "Currency”Worksheets(" Sheet1").Range("B2:B5").WrapText= TrueWorksheets(" Sheet1").Range("B2:B5").Font.Size = 16Worksheets(" Sheet1").Range("B2:B5").Font.Bold = TrueWorksheets(" Sheet1").Range("B2:B5").Font.Color = RGB(255,0, 0)Worksheets(" Sheet1").Range("B2:B5").Font.Name = Arial
End sub
AKAN lebih baik jika ditulis sbb:Sub FormatRange2()
With Worksheets(" Sheet1").Range(" B2:B5" ) Style = "Currency" WrapText= True Font.Size = 16 Font.Bold = True Font.Color = RGB(255, 0, 0 Font.Name ="Arial“
End WithEnd Sub
Bekerja dengan properties dan methodsyang banyak (2/2)
IrDarmadiMM @
Contoh yang lebih baik lagi:
Sub FormatRange3()
With Worksheets(" Sheet1" ).Range(" B2:B5" )
Style = "Currency"WrapText= True
With .Font
Size = 16
Bold = True
Color = RGB(255, 0, 0)Name ="Arial"
End With
End With
End Sub
IrDarmadiMM ©
Object aplikasi
Application Object merupakan container yangberisisemua oject dalam aplikasi yang dijalankan; objectini memiliki beberapa properties dan method yangbanyak manfaatnya
Beberapa contoh Application.ActivePrinter: mengembalikan himpunan
printer driver yang tersedia
Application.ActiveWindow: mengembalikan window
yang sedang aktif Application.Caption: mengembalikan judul aplikasi Application.Dialogs : built-in dialog yg ada dlm aplikasi
Application.Visible: mengatur aplikasi terlihat/tidak Application.Width: lebar window aplikasi Application.Windows: kumpulan window aplikasi ygaktif
IrDarmadiMM ©
Methods pada ApplicationObject
Application object memiliki beberapamethods, diantaranya
Application.Help: mendisplay sistemHelp aplikasi
Application.Quit: keluar dari aplikasi
Application.Repeat: mengulang kegiatanyang baru saja dilakukan
Application.EnableCancelKey
14/08/2013 - IrDarmadiMM
26
IrDarmadiMM ©
Object Window
Menspesifikasi object window dengan indeks,
atau dengan menuliskan namanya
- Windows(1)
- Windows(dataku.xls)
- ActiveWindows menyatakana window yang
sedang aktif saat ini
Membuka window baru
Window.NewWindow
Object Window
Beberapa properties object window Window.Caption Window.Visible Window.Height Window.Width Window.Left Window.WindowNumber Window.Top Window.WindowState Window.UsableHeight
Window.UsableWidth
Beberapa methods object window Window.Activate 4
Windows(" Nilai.xls" ).Activate Window.Close Window.LargeScroll(Down,Up,ToRight,ToLeft) Window.SmallScroll(Down,Up,ToRight,toLeft)
IrDarmadiMM ©IrDarmadiMM ©IrDarmadiMM ©
Bagian 5
Mengendalikan alur program
IrDarmadiMM ©
Apa yang akan dibahas?
Pengendalian alur program If...Then If ... Then ... Else Membuat keputusan Ganda Fungsi yang mengambil keputusan Loops Do... Loop For... Next For Each... Next
Selest .... Case
Exit
14/08/2013 - IrDarmadiMM
27
IF... THEN dan IF THEN ELSE
Logical statementsThe If Then Else statement is the basic logic test
If a>10 Then…
End If
If a>10 Then…
ElseIf a<0 Then…
Else…
End If
If a>10 Then…
Else…
End If
SELECT CASE
Logical statementsThe Select statement can be used to replace a multi-way if statement
Select Case expressionCase expr1
…Case expr2
…Case Else
…End Select
14/08/2013 - IrDarmadiMM
28
DO LOOP
Loop statementsVarious Do loop forms
Do While expr…
Loop
Do Until expr…
Loop
Do…
Loop While expr
Do…
Loop Until expr
FOR NEXT
Loop statementsA common For loop
For i=1 To 10Debug.print i
Next i
For i=1 To 10 Step 2Debug.print i
Next i
FOR EACH
Loop statementsAnother For loop
Commonly used to iterate through collections
For Each element In group…
Next element
For Each ws In WorksheetsDebug.Print ws.Name
Next
PROCEDURE – MACRO -FUNCTION
ProceduresProcedures in VBA are either Macros or Functionsa macro does not return a value
a function will return a value
Property functions (Get and Let) are used in Class Modules to provide access to privateproperties
Sub Name()…End Sub
Function Name() As Double…End Sub
14/08/2013 - IrDarmadiMM
29
ON ERROR GOTO
Dealing with runtime errorsThe On Error statement will trap errors
The error name is a label in the code
In the error code a Resume statement will cause the statement that
caused the error to be executed againIn the error code a Resume Next statement will restart execution on the
statement after the one that caused the error
…On Error GoTo label
…On Error GoTo check…check:…
IrDarmadiMM ©
Keputusan ganda
IrDarmadiMM ©
Fungsi pengambil keputusan
Statement IIf (Inline If)
Sintaks: IIf (condition, TrueResult, FalseResult)
Function ProsesorCacat () As BooleanProsesorCacat = IIf((4195835 - (4195835/3145727) *3145727),True, False)
End Function
Fungsi Choose
Sintaks: Choose(index , value1, value2, ...)Function NamaHari(noHari As Integer) As String
NamaHari = Choose(noHari, " Ahad" , " Senin" , "Selasa" , " Rabu" , " Kamis" ,"Jumat",_ " Sabtu" )
End Function
IrDarmadiMM @
14/08/2013 - IrDarmadiMM
30
Pengulangan - loop
Struktur Do... Loop Sintaks:
Do While condition check dulu baru loop
[statement] dilakukan selama kondisi T
Loop
Do lakukan dulu baru check
[statement]
Loop While conditiondiulang bila kondisi T
Do Until condition check dulu baru loop
[statemnt] dilakukan selama kondisi F
Loop
Do dilakukan dulu baru check
[statement]
Loop Until conditiondiulang bila kondisi masih F
Pengulangan - loop• Contoh
SubBigNumbers()Dim rowNum As Integer, colNum As Integer, currCell As RangerowNum= ActiveCell.Row
colNum = ActiveCell.Column
Set currCell = ActiveSheet.Cells(rowNum, ColNum)
Do While currCell <> " "
IfIsNumeric(currCell) ThenIfcurrCell >= 1000 Then
currCell.Font.Color = VBAColor(" magenta" )
End If
rowNum= rowNum + 1
Set currCell = ActiveSheet.Cells(rowNum, colNum)
LoopEnd Sub
Error Handling Contoh (28)
Sub ErrorHandler1()
'On Error Resume NextOn Error GoTo ErrorHandler
Dim jCounter As Byte
For jCounter = 1 To 20'ProtectVBAProject.Sheet1.Cells(jCounter, 2).Value = jCounter
Next jCounter
Exit Sub
ErrorHandler:'If Err.Number = 1004 ThenMsgBox Err.Number & " : " & Err.DescriptionResume Next
End Sub