14/08/2013 - IrDarmadiMM
PEMROGRAMAN KOMPUTER (PM) PM= adalah proses menulis, menguji dan memperbaiki (debug), dan memelihara kode yang membangun sebuah program komputer.
PEMROGRAMAN KOMPUTER TEKNIK SIPIL
Kode atau Script atau Syntax ini ditulis dalam berbagai bahasa pemrograman, sehingga memungkinkan manusia dapat berkomunikasi dengan komputer Tujuan dari pemrograman adalah untuk memuat suatu susunan code yang dapat melakukan suatu perhitungan atau 'pekerjaan' sesuai dengan 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 lebih algoritma yang saling berhubungan dengan menggunakan sebuah bahasa pemrograman tertentu sehingga menjadi sebuah program.
IrDarmadiMM ©
IrDarmadiMM ©
BAH AS A PEM ROGRAM AN Bahasa pemrograman adalah suatu perintah yang dibuat manusia untuk membuat komputer menjadi memiliki fungsi tertentu. Bahasa pemrograman ini adalah suatu susunan aturan penulisan (sintaks) yang membentuk kode kode yang kemudian akan diterjemahkan oleh program kompiler menjadi bahasa rakitan (assembly) dan terus diolah hingga dimengerti oleh mesin komputer (bahasa mesin=mati/hidup/0/1) Bahasa pemrograman yang berbeda mendukung gaya pemrograman yang berbeda (disebut paradigma pemrograman). Pilihan bahasa yang digunakan adalah tunduk pada banyak pertimbangan, seperti kebijakan perusahaan, kesesuaian untuk tugas, ketersediaan pihak ketiga paket, atau keinginan individunya. Idealnya, bahasa pemrograman dipilih yang paling cocok untuk tugas yang dihadapi akan dipilih. Trade-off dari ideal ini melibatkan cukup menemukan programmer yang tahu bahasa untuk membangun sebuah tim, ketersediaan compiler untuk bahasa, dan efisiensi dengan program-program yang ditulis dalam bahasa tertentu untuk mengeksekusi program. IrDarmadiMM ©
BAH AS A PEM ROGRAM AN Beberapa bahasa pemrograman pada saat ini adalah: Assembly (C atau C++ atau C#) Basic Cobol HTML Java Fortran Clipper Pascal Visual Basic Dbase Foxpro dan masih banyak lagi yg lain
Dalam kuliah Teknik Sipil Jayabaya ini akan digunakan bahasa pemrograman VISUAL BASIC Dalam aplikasinya nanti menngunakan VBE atau VBA, yaitu Visual Basic Editor atau Visual Basic Aplication, yang pada prinsipnya tidak beda jauh dengan bahasa Visual Basic IrDarmadiMM ©
1
14/08/2013 - IrDarmadiMM
EXCEL OBJECT
BAH AS A PEM ROGRAM AN Keuntungan Penggunaan Visual Basic Pertama, waktu pembelajaran dan pengembangan yang lebih singkat/mudah dibanding dengan bahasa pemrograman lain, seperti C/C++, Delphi atau PowerBuilder sekalipun. Meskipun pernyataan ini masih bisa diperdebatkan. Tetapi yang jelas, VB merupakan bahasa pemrograman yang sangat populer dan banyak penggunanya. Cukup banyak literatur, kursus, situs internet ataupun komunitas yang siap membantu. Yang perlu disiapkan hanya tinggal kemauan dan kerja keras, dan pengaturan waktu yang baik untuk mempelajarinya. Kedua, Visual Basic for Application (VBA) digunakan oleh keluarga Microsoft Office (Word, Excel, Access, PowerPoint, Project). VBA dikembangkan dari aplikasi yang sebelumnya dikenal dengan istilah macro, otomasi langkah-langkah berulang. Dengan adanya VBA, kemampuan macro dapat ditingkatkan menjadi seperti bahasa pemrograman lain. Bagi yang ingin mengoptimalkan kemampuan Autocad pun, dapat digunakan macro yang menggunakan VBA, bukan Fortran dll. IrDarmadiMM ©
Dalam graphical user interface (GUI), aplikasi dan bagian-bagiannya dikenal dengan sebutan OBJECT
OBJECT dalam excel meliputi sbb: a. File excel itu sendiri b. Workbook atau keseluruahan file excel yang dibuka c. Sheet / worksheet d. Ranga yang ada di worksheet e. Cells yang ada di worksheet f. Listbook yang ada di Developer g. Chartsheet dalam Worksheet h. Dan sebagainya IrDarmadiMM ©
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 ©
2
14/08/2013 - IrDarmadiMM
- VBA Object Based Programming Language
KONSEP
object-oriented programming (1) Automobile
Excel
Objects Classes
Engine Door Wheels ( Collections )
Application Workbook Worksheets ( Collections )
Properties
Model Color Price
Version Sheets Visible
Methods
Start Close Change
Quit Save Activate
Events
On_Start Before_Close After_Change
WorkbookBeforeClose BeforeSave Activate
OBJECT IN EXCEL
chartsheet
worksheet
dialogsheet
TOOL Menu BAR
Property
TOOL BAR
ProjectExplorer
VB Editor / VBA IrDarmadiMM ©
3
14/08/2013 - IrDarmadiMM
Excel GUI (graphical user interface) Antarmuka excel bisa dilakukan dengan beberapa cara: • Menu Dialog box Toolbars Drag-and-drop Keyboard shortcuts ( copy=Ctrl-C, paste=Ctrl-V)
IrDarmadiMM ©
IrDarmadiMM ©
Analysis tools
Beberapa kemampuan excel Formatting (bold, Italics,number etc)
Outline Automatic subtotal
Formulas (stat, financ, math, etc)
Scenario management
Names Range
Analysis toolpak
Functions
Pivot table
Shapes Charts
Auditing
Macros
Solver
etc
Addins IrDarmadiMM © IrDarmadiMM ©
4
14/08/2013 - IrDarmadiMM
RANGE
Formulae in Excel (R1C1 style - Row,Column) R1C1 = absolute address – it does not change under copy / paste
Range(A1:B10) artinya kita sorot/blok dari cell A1 sampai dengan cell B10 Range(“A” & 3) artinya kita pilih kolom A dan baris 3
R[1]C[1] = relative address – it does change under copy /paste And we can use mixed mode:
Referensi dengan nama : Range(A1,B10) insert - name create nama=badu
R1C[1] – R1 is absolute,
C[1] is relative
"
In VBA, can use either or both A1 and R1C1 styles
artinya kita pilih cell A1 sampai cell B10 dan diberi identifikas sebagai “badu”
A1 style tends to be absolute
CELLS A1 style
A1 style used with the “Range” property Range(“A4”)
R elative 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
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 IrDarmadiMM ©
Contoh Private Sub CommandButton1_Click() Dim x As Integer Dim y As Integer Dim z As Integer Dim result As Integer x = Cells(1, 2).Value y = Cells(2, 2).Value z = Cells(3, 2).Value result = x * y + z Cells(4, 2).Value = result End Sub
Bagian 1 Dasar- dasar pemrograman VBA
IrDarmadiMM ©
5
14/08/2013 - IrDarmadiMM
Apa yang dibicarakan?
01.Apa dan kenapa VBA
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 program
Apa VBA ?????? VBA merupakan bahasa pemrograman bagi semua aplikasi Microsoft Office (Excel, Word, Access, Powerpoint) dan beberapa yang lain (Outlook, Visio, AutoCAD, Map-Info, dsb.) Dapat berfungsi sebagai macro atau bahasa pemrograman Merupakan bahasa program beorientasi object, semua object office dapat dengan mudah dimanipulasi dengan VBA Belajar satu bahasa dapat di-aplikasikan dalam banyak aplikasi Windows IrDarmadiMM ©
IrDarmadiMM ©
Kenapa VBA?????
02. IDE –– integrated development environment
Mendukung aplikasi internet dan intranet
• Untuk menulis /edit program VBA digunakan IDE
Mendukung ActiveX controls
Module window Procedure list
Object list
Code editor dengan bantuan yang lengkap dan juga ada debugger Project explorer
Form building tools Object browser Dll yang memudahkan pembuatan Program
Properties window IrDarmadiMM ©
IrDarmadiMM ©
6
14/08/2013 - IrDarmadiMM
03. Prinsip prmrograman berbasis object Object Workbook, worksheet, chart, cell, dsb.
OBYEK, PROPERTI,EVENT DAN METHOD 1. Objek Objek dapat diartikan kepada sebuah benda dalam hal ini anggap saja objek ada lah textbox, label dan comman button.
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. IrDarmadiMM ©
2. Properties Properties adalah sesuatu yang dipunyai oleh objek. Mis: textbox mempunyai property “nama” atau property “text” 3. Event Event adalah suatu kejadian terhadap objek pada saat tertentu. Misal: Objek command button dapat menerima event klik pada saat pemakai software kita nanti mengklik nya. 4. Method Method adalah sesuatu yang dapat dilakukan oleh objek. Misal: Objek combo dapat menambahkan Item nama-nama hari dengan method AddItem contoh: combo1.AddItem “Senin” dst.
04. Cara membuat program VBA (programming)
Visual Basic Aplications Program dalam VBA disebut prosedur (dan/atau function) Tiga jenis prosedur
Objects / Properties / Methods Object
Property
Method
Noun Adjective Verb
Part of the application
Attribute Action to do something
a. Command macros mengotomasi prosedur-prosedur, fungsi- fungsi yang ada (built-in)dalam aplikasi, memformat, menyimpan, dsb. b. User-defined function (function procedure) program yang berisi rumus dan perintah yang kita susun sendiri . c. Property procedure menunjukkan dan/atau mengubah properti dari suatu object IrDarmadiMM @
7
14/08/2013 - IrDarmadiMM
MEMANFAATKAN MENU DEVELOPER
Ada 2(dua) cara dalam mebuat program yaitu :
Menu File Options Customize Ribbons dan centrang bagian developer
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 ©
IrDarmadiMM ©
VISUAL BASIC EDITOR...
USER FORM,MODULE DAN CODE Code adalah kumpulan perintah-perintah yang digunakan untuk menjalankan keinginan pembuat perogram Module adalah tempat menulis CODE yang telah kita siapkan untuk menjadi program (*.bas) User form adalah form yang dibentuk untuk menampilkan running CODE yang telah dibuat (*.frm) CONTOH CODE MENULISKAN NAMA, ALAMAT DAN NO.TELP KE WORKSHEET “Data” Sheets("Data").Activate Tname = "Paijo" Talamat = "Jl. Embuh Raeruh" Tpone = "081280186063" Cells(1, 2) = Tname Cells(1, 3) = Talamat Cells(1, 4) = Tpone
8
14/08/2013 - IrDarmadiMM
Contoh USER FORM
Modul dan Class Modul Standard Modules Standard modules (.BAS ) umumnya berfungsi untuk menaruh variabel global yang bisa diakses sama semua form dari project kita,juga bisa kita buat Prosedur & Function yang bisa diakses sama semua form. Class Modules (Kelas) Class modules (.CLS ) adalah modul yang spesifik dan secara umum kelas mewakili kelompok objek yang serupa. Misalnya seluruh mahasiswa di suatu kampus adalah objek. Kelas nya adalah Mahasiswa (contoh: CMahasiswa.cls atau Class1.cls). Atau bahkan kita bisa membuat Class khusus tentang penyelesain fungsi kuadrat, jadi dalam MODULE kita tinggal panggil saja Class-nya
OBJECT, PROPERTI,EVENT DAN METHOD 1. Objek Objek dapat diartikan kepada sebuah benda dalam hal ini anggap saja objek ada lah textbox, label dan comman button. 2. Properties Properties adalah sesuatu yang dipunyai oleh objek. Mis: textbox mempunyai property “nama” atau property “text” 3. Event Event adalah suatu kejadian terhadap objek pada saat tertentu. Misal: Objek command button dapat menerima event klik pada saat pemakai software kita nanti mengklik nya. 4. Method Method adalah sesuatu yang dapat dilakukan oleh objek. Misal: Objek combo dapat menambahkan Item nama-nama hari dengan method AddItem contoh: 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 T ools - m a c r o r un “pilih nam a m acr o”
9
14/08/2013 - IrDarmadiMM
The Macro Language
First Step to VBA : Macros
Record Macro
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 (random number)
Record all the steps you conduct and write them in VBA code
Jika macros status disabled ketika start Excel, ubah security level ke medium
07. Menjalankan program
06. Menulis / Editor program
Program dapat dijalankan dengan dua cara yaitu :
1 - T o o l s - m a c r o visual basic editor atau
CARA-1
Click tombol VBE 2 - Cara Pindah dari VBE ke aplikasi tekan alt+F11
Tools - Macro View Pilih program vba yang mau dijalankan
3 - Tuliskan program (function atau procedure)
CARA-2 Tools - Macro View pilih option run Misalnya ctrl-a, maka program dapat dijalankan dengan menekan tombol Ctrl-diikuti dgn huruf-a OK
Sub procedure ......... isi dengan Baris program / CODE-CODE
End sub IrDarmadiMM ©
IrDarmadiMM ©
10
14/08/2013 - IrDarmadiMM
Function Procedures
08. Membuat Fungsi Sendiri
Function Grade (HADIR,TUGAS,UTS,UAS) as String
Fungsi adalah rumus yang mengolah argumen dan mengembalikan hasil
Sum = HADIR+TUGAS+UTS+UAS If sum >= 80 then Grade = “A” Else if sum >65 Grade = “B” Else Grade = “C” End if
Struktur fungsi Function 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
End Function The function name must be assigned the value to be returned!
IrDarmadiMM ©
Membuat fungsi Function akar(A, B, C)
Membuat fungsi
If A <> 0 Then diskrim = B ^ 2 - 4 * A * C If diskrim > 0 Then akar = "dua akar riel" ElseIf diskrim = 0 Then akar = -B / (2 * A) Else akar = "akarnya imaginer" End If Else akar = "bukan persamaan kuadrat" End If
Contoh: Menghitung sisi miring segitiga Rumus Pythagoras c 2 =(a2 + b 2) Maka sisimiring = sqr(a 2 + 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
End Function IrDarmadiMM ©
IrDarmadiMM ©
11
14/08/2013 - IrDarmadiMM
09. Membuat prosedur
Sub Procedures
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.08 Range("lama") = 10 Range("pinjaman") = 100000000 Range("bayar") = “=PMT(bunga/12,lama*12,pinjaman)" End sub RUNNING Procedure : Tools Macro pilih nama macro
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").Select ActiveCell.FormulaR1C1 = "ft-lbm/lbf-s^2" End Sub This was a recorded macro – macros are “Sub” procedures.
IrDarmadiMM ©
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 muncul lagi untuk obyek yang sama, untukmemunculkan lagi IrDarmadiMM © tekan Ctrl+J
Menyimpan/export modul Dari project explorer, pilih modul yang akan disimpan Pilih File Export File Pilih lokasi tempat menyimpan file Beri nama file (.BAS) Tekan Save
Menyimpan/export form Dari project explorer, pilih Userform yang akan disimpan Pilih File Export File Pilih lokasi tempat menyimpan file Beri nama file (.FRM) IrDarmadiMM © Tekan Save
12
14/08/2013 - IrDarmadiMM
10. Mengatur editor
Mengimpor/ambil modul Dari project explorer Pilih File Import File Pilih file dari lokasi tempat menyimpan file.BAS atau file.FRM Tekan Open
• Cara kerja dan tampilan editor dapat diatur dengan menu ToolslOptions
a ta u
IrDarmadiMM ©
11. Melindungi program Program dapat dilindungi dengan password Tools - ProjectName Properties dialog box VBAProject, pilih Protection Isikan password untuk melindungi program OK
Bagian 2 Variabel dan konstanta
IrDarmadiMM ©
IrDarma diMM ©
13
14/08/2013 - IrDarmadiMM
01. Deklarasi variabel
Apa yang dibicarakan disini?
Variabel dalam VBA sebaiknya dideklarasikan untuk menyatakan nama dan jenis data (data type) Pendeklrasian variabel ini akan menghindari kesalahan dan lebih mengefisienkan program
01. Cara Mendeklarasikan Variabel 02. Memahami lingkup variabel
Caranya adalah dengan pernyataan Dim
03. Mengirim variabel sbg referensi dan sbg argumen
Dim namavar As jenisdata
04. Variabel statik dan Variabel dinamik
Namavar harus dimulai dengan huruf , max 255 karakter,
tidak mengandung spasi dan titk
05. Menghindari kesalahan pendefisian variabel
JenisData dapat berupa
06 Jenis data variabel 07. Jenis Variable Array
String Integer Long Single Double
08. Konstanta
A sequence of bytes containing characters 2 byte integer, tanpa desimal 4 byte integer 4 byte real number 8 byte real number
IrDarmadiMM © IrDarmadiMM ©
Integer Decimal Long Single Double Currency String Byte Boolean Date Object Variant
Data types 2 byte integer 16-byte(128-bit) (+/-7.9228162514264337593543950335E+28) 4 byte integer +/-9,223,372,036,854,775,808 4 byte floating point +/ -3.4028235E+38 8 byte floating point +/ -4.94065645841246544E-324 8 byte real Rp, US$ upto 64K characters 0 through 65535 huruf 1 byte, angka dari 0 sampai 255 2 byte true (1) or false (0) 8 bytes 12dec2014 4 bytes – an object reference 16 bytes + 1 byte / character
Byte atau 2-bit adalah satuan memory komputer dalam menyimpan data
JENIS DATA
Data types
Integer Long Single Double Currency String Byte Boolean Date Object Variant
2 byte integer 4 byte integer 4 byte floating point 8 byte floating point 8 byte real upto 64K characters 1 byte, angka dari 0 sampai 255 2 byte true or false 8 bytes 4 bytes – an object reference 16 bytes + 1 byte / character
AE6382
14
14/08/2013 - IrDarmadiMM
Declare by Dim Dim amount As Double Dim year As Integer Dim name As String Other data types: Boolean, Byte, Currency, Date Default (no type) is Variant
02 - Lingkup/scope variabel Dalam VBA lingkup variabel dapat
Kalau diberi akhiran dengan tanda ini , berarti datanya % - integer & - long integer ! – single # - double @ currency $ - string CONTOH : anIntegerValue% =3, aString$ = "hallo" Can modify with scope (outside procedure) Private Iam As Integer Public billsPaid As Currency Make values permanent Static yourName As String Multiple variables Private test, amount, J As Integer
berada pada posisi 3 hal sebagai berikut ini : Lingkup prosedur Lingkup modul Lingkup publik
IrDarmadiMM ©
Posisi Lingkup prosedur •
Deklarasi implisit dan eksplisit
Variabel hanya bisa diakses oleh pernyataanpernyataan dalam prosedur yang sama , misalnya : vaiabel “pesan” berikut Sub 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
Pada contoh 2, variabel pesan sebetulnya tak dikenal, tetapi ketika dijalankan tetap memberi hasil, dalam hal ini
. Ini dikarenakan VBA mengenal deklarasi implisit ( semua variabel otomatis diberi harga , meski tak dikenal) Kondisi semacam ini kurang baik dalam pemrograman, sebaiknya dinyatakan bahwa semua variabel harus dideklarasikan agar tak terjadi kesalahan Untuk menghindari hal tersebut da[at dideklarasikan Option Explicit
IrDarmadiMM ©
IrDarmadiMM ©
15
14/08/2013 - IrDarmadiMM
Variabel SAMA ada di setiap MODUL Sub CalcMarginsl() Range("GrossMarg") =GrossMarginCalc Range("NetMarg") = NetMarginCalc(Range("FixedCosts")) End Sub
Lingkup modul
LEBIH BAIK SEPERTI INI : Dim totSales2 , totExpenses2 Sub CalcMargins2()
Range("GrossMarg").value = GrossMarginCalc2 Range("NetMarg”).value = NetMarginCalc2(Range("FixedCosts"))
End Sub Function GrossMarginCalc() Dim totSales Function GrossMarginCalc2() Dim totExpenses totSales2=Application.Sum(Range("Sales")) totSales =Application.Sum(Range("Sales")) totExpenses2= Application.Sum totExpenses=Application.Sum(Range("Expens")) (Range("Expens")) GrossMarginCalc=(totSales - totExpenses) / GrossMarginCalc2 = (totSales2 totSales totExpenses2) /totSales2 End Function End Function
Agar variabel dapat diakses oleh beberapa prosedur harus dideklarasikan sebelum atau di luar prosedur- prosedur yang menggunakan variabel tersebut
Function Function NetMarginCalc2(fixedCosts) NetMarginCalc(fixedCosts) NetMarginCalc2 = (totSales2 - totExpenses2 _ Dim totSales - fixedCosts2) / totSales2 Dim totExpenses End Function totSales = Application.Sum(Range("Sales")) totExpenses =Application.Sum(Range("Expens")) ...RASAKAN BEDANYA ....!!!!! NetMarginCalc = (totSales - totExpenses _ - fixedCosts) / totSales IrDarmadiMM ©
IrDarmadiMM ©
Mengirim argumen variabel
Lingkup publik Kadang kita menginginkan semua modul dalam proyek kita dapat mengakses variabel
Bila program terdiri dari banyak prosedur, mendeklarasikan variabel dalam lingkup modul dapat berbahaya, karena nilai variabel dapat diubah oleh setiap prosedur yangmengakses variabel tersebut atau variabel yang sama dideklarasikan berbeda
Unruk itu gunakan deklarasi dengan lingkup publik
Untuk menghindari kesalahan semacam itu, variabel dapat dikirim dari satu prosedur ke yang lain sebagai argumen
Caranya: deklarasikan dengan public namavariabel Untuk menggantikan Dim namavariabel
Pengiriman argumen variabel dapat berdasar referensi atau berdasar nilai Variabel
IrDarmadiMM ©
16
14/08/2013 - IrDarmadiMM
Mengirim variabel berdasar referensi Contoh: Sub procedure3() Dim pesan pesan= "Pesan asli!“ procedure4 pesan MsgBox pesan End Sub Sub procedure4(kiriman) MsgBox kiriman kiriman = "pesan telah sampai!“ End Sub
Mengirim variabel berdasar nilai (ByValue) Contoh: Sub procedure5() Dim pesan pesan = "Pesan asli!" procedure6 pesan MsgBox pesan End Sub Sub procedure6(ByVal pesan) MsgBox pesan pesan = "terimakasih atas kirimannya!“ End Sub
Bila procedure3 dijalankan, mula- mula pesan berisi " Pesanasli! kemudian berisi "pesan telah sampai!"
•
Bila procedure5 dijalankan, variabel pesan akan tetap berisi " Pesan asli! karena yang dikirim hanya nilainya( ByVal)
IrDarmadiMM ©
Variabel statis
Sub tesStatik() ProsedurStatik ProsedurStatik End Sub
Dalam VBA, variabel dalam prosedur setelah digunakan nilainya akan dihapus; ketika prosedur dipanggil
Contoh variabel statik
Sub ProsedurStatik() Static varStatik Dim varReguler
lagi, akan diisi/ dihitung lagi Bila ingin nilai variabel tak diubah bisa dipakai variabel statis (static variable)
IrDarmadiMM ©
varStatik = varStatik + 5 varReguler = varReguler + 5 MsgBox "varStatik = " & varStatik & " dan varReguler = " &varReguler End Sub • Saat dijalankan nilai varStatik mula- mula 5, lalu 10, sedangkan varReguler tetap 5
IrDarmadiMM ©
17
14/08/2013 - IrDarmadiMM
Jenis data variabel Menghindari kesalahan variabel Kadang kita salah mengetik nama variabel, kesalahan ini paling sering terjadi pada pembuatan program 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
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 ©
Integer Decimal Long Single Double Currency String Byte Boolean Date Object Variant
Data types 2 byte integer +/- 32727 16-byte(128-bit) (+/-7.9228162514264337593543950335E+28) 4 byte integer +/- 9,223,372,036,854,775,808 4 byte floating point +/- 3.4028235E+38 8 byte floating point +/- 4.94065645841246544E-324 8 byte real Rp, US$ upto 64K characters 0 through 65535 huruf 1 byte, angka dari 0 sampai 255 2 byte true (1) or false (0) 8 bytes 12dec2014 4 bytes – an object reference 16 bytes + 1 byte / character
Byte atau 2-bit adalah satuan memory komputer dalam menyimpan data
rDarmadiMM ©
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
IrDarmadiMM ©
18
14/08/2013 - IrDarmadiMM
User-defined data types
Deklarasi Variabel array Variabel matriks dan vektor dapat dideklarasikan dengan variabel array Deklarasi ini diperlukan untuk menyediakan memeori menyimpan variabel dengan nama sama
Kita dapat mendefinisikan jenis data sendiri Contoh: TypeMahasiswa Nama As String nomhs As Integer angkatan As Integer tglLhr As Date End Type
Cara: Dim mhs(200) As String Mhs(0) = Darmadi mhs(100) = " Banowati Ipit
Mahasiswa.nama= " Ahmad Musa" Mahasiswa.nomhs = 22718 Mahasiswa.angkatan = 2002 Mahasiswa.tglLhr= #01/01/1985#
"
Atau Dim vektor(50 to 100) As Double Dim matriks(1 to 50, 1 to 20) IrDarmadiMM ©
IrDarmadiMM @
Array dinamis
! Bila ukuran array belum diketahui, bisa dideklarasikan sebagai array dinamis ! Bila dimensinya diketahui bisa dinyatakan kemudian sebagai statis Dim myArray () As Double ...........................
ReDim myArray(105)
! ReDim akan me- reinisialisasi nilai variabel dalam Array tersebut ,tetapi Jika kita tidak ingin re-initialisasi maka ReDim Preserve myArray(105) Dimensi Array dapat diketahui dengan UBound(namaArray) indeks atas LBound(namaArray) indeks bawah
konstanta Konstanta built - in ada di dalam Excel Contoh: ActiveWIndow.WindowState =xlMaximized User - defined constants
PubliciPrivate Const NamaKonstanta [ As Type] = expression Contoh: Public Const gravitasi As Single = 9.81 [Public|Private] Const
constantName [As type] = expression
Public Const PI = 3.1, NumPLANETS = 9 Const PI2 = PI * 2 Const RELEASE = #1/1/99/#
19
14/08/2013 - IrDarmadiMM
Apa yang dibicarakan? Struktur ekspresi Operator VBA Bekerja dengan ekspresi numerik
Bagian 3
Bekerja dengan ekspresi tex/string Bekerja dengan ekspresi logika Bekerja dengan ekspresi tanggal format
Ekspresi VBA
IrDarmadiMM @
IrDarmadiMM @
OPERATOR VBA
Struktur ekspresi VBA •
Variabel = statemen tentang variabel operand operand & operator Operand harus menggunakan jenis variabel yangkompatibel Operator harus sesuai dengan jenis data contoh: energY = mass * (speedOfLight ^ 2)
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 (random number)
IrDarmadiMM @
20
14/08/2013 - IrDarmadiMM
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
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 © IrDarmadiMM ©
Format • Untuk memformat angka /string yang muncul bisa digunakan perintah Format(expresi, format) Contoh: Format(Pemasukan Pengeluaran," currencyFormat(Now, " medium time")
Bagian 4 Bekerja dengan Objects
Format(NoMhs, "00000/TS")
IrDarmadiMM ©
IrDarmadiMM ©
21
14/08/2013 - IrDarmadiMM
Apa yang dibahas di sini
Pengertian object
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
Object adalah segala sesuatu dalam aplikasi Windows yang dapat dilihat dan dimanipulasi/diubah Object bisa berupa satu object atau kumpulan (collection) object Contoh : workbook, worksheet, window, cell, range, gambar, grafik, dsb.
Operator IS Bekerja dengan beberapa properties dan methods Object aplikasi Object windows IrDarmadiMM @
IrDarmadiMM ©
cara memanipulasi oject Hirarki object Cara memanipulasi object: Mengubah properties Mengaktivasi method yang terkait dengan object Mendefinisi prosedur yang dijalankan saat suatu event terjadi Ilustrasi/analogi / jembatan keledai Komputer: object Merek, jenis prosesor: property Menulis surat , main game: method Dihidupkan, dibuka, dimatikan: event
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
IrDarmadiMM ©
IrDarmadiMM ©
22
14/08/2013 - IrDarmadiMM
Object
Collection Description
AddIn
AddIns
Semua file add-in/ tambahan yang ada dalam Excel
Dialog
Dialogs
Name
Names
Kotak dialog yang built-in dalam Excel Koleksi nama- nama yang ada dalam semua workbooks yang terbuka Objects di bawah Application object
Window
Windows
Kumpulan windows yang terbuka
Workbook
Workbooks
Koleksi dari semua workbooks yangterbuka
WrosheetFunction
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
Container untuk fungsifungsiworksheet Excel IrDarmadiMM @
IrDarmadiMM ©
Mengelola object events
Bekerja dengan methods Method menggambarkan apa yang dilakukan object; contoh: metode sort, simpan, buka, dsb. Sintax: Object . Method (arg1, arg2,...)
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
contoh: ActiveWorkBook.Save
prosedur pemberian salam saat workbook dibuka ' meminta nama pengguna Private 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 '
ActiveWorkBook.Close(SaveChanges, fileName, RouteWB)
IrDarmadiMM ©
23
14/08/2013 - IrDarmadiMM
Bekerja dengan koleksi object Collection adalah himpunan objects yang serupa; seperti WorkBooks Collection merupakan koleksi workbook yang terbuka Collection juga merupakan object sehingga memiliki properties dan methods yang bisa dimanipulasi Anggota collection disebut element yang bisa diakses dengan namanya atau dengan index Contoh: Workbooks(" Budget.xls"). CloseActiveSheet.Picture(1).Copy
Object browser Libraries dan Project
Properties Events Methods
Template Code
Kalau tak diberi index, diasumsikan semua koleksi diperlakukan dengan method yang sama IrDarmadiMM @
Memasukkan object dalam variabel • Sintax: variableName = ObjectName
Dim budgetSheet As Object Set budgetSheet =_Workbooks("Budget.xls").Worksheets (" 2003 Budget)
Lebih baik:
IrDarmadiMM ©
Operator Is 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
DimbudgetSheet As Worksheet Set budgetSheet _=_Workbooks("Budget.xls"). Worksheets(" 2003 Budget) IrDarmadiMM ©
IrDarmadiMM @
24
14/08/2013 - IrDarmadiMM
Bekerja dengan properties dan methods yang banyak (1/2)
SubFormatRange() Worksheets(" Sheet1").Range("B2:B5").Style = "Currency” Worksheets(" Sheet1").Range("B2:B5").WrapText= True Worksheets(" Sheet1").Range("B2:B5").Font.Size = 16 Worksheets(" Sheet1").Range("B2:B5").Font.Bold = True Worksheets(" 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 With End Sub
Bekerja dengan properties dan methods yang banyak (2/2)
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 @
IrDarmadiMM @
Object aplikasi Application Object m er upakan container yangberisi semua oject dalam aplikasi yang dijalankan; object ini memiliki beberapa properties dan method yang banyak 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 yg aktif
Methods pada Application Object Application object memiliki beberapa methods, diantaranya Application.Help: mendisplay sistem Help aplikasi Application.Quit: keluar dari aplikasi Application.Repeat: mengulang kegiatan yang baru saja dilakukan Application.EnableCancelKey
IrDarmadiMM ©
IrDarmadiMM ©
25
14/08/2013 - IrDarmadiMM
Object Window
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
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 ©
Apa yang akan dibahas?
Bagian 5 Mengendalikan alur program
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
IrDarmadiMM © IrDarmadiMM ©
26
14/08/2013 - IrDarmadiMM
IF... THEN dan IF THEN ELSE Logical statements The If Then Else statement is the basic logic test If a>10 Then … End If If a>10 Then … Else … End If If a>10 Then … ElseIf a<0 Then … Else … End If
SELECT CASE Logical statements The Select statement can be used to replace a multi-way if statement Select Case expression Case expr1 … Case expr2 … Case Else … End Select
27
14/08/2013 - IrDarmadiMM
DO LOOP
FOR NEXT
Loop statements Various Do loop forms
Loop statements A common For loop
Do While expr … Loop
Do Until expr … Loop
For i=1 To 10 Debug.print i Next i
Do
Do
… Loop While expr
… Loop Until expr
For i=1 To 10 Step 2 Debug.print i Next i
FOR EACH Loop statements Another For loop
PROCEDURE – MACRO -FUNCTION Procedures Procedures in VBA are either Macros or Functions a macro does not return a value
For Each element In group … Next element
Commonly used to iterate through collections For Each ws In Worksheets Debug.Print ws.Name Next
Sub Name() … End Sub a function will return a value Function Name() As Double … End Sub Property functions (Get and Let) are used in Class Modules to provide access to private properties
28
14/08/2013 - IrDarmadiMM
ON ERROR
GOTO
Keputusan ganda
Dealing with runtime errors The On Error statement will trap errors … On Error GoTo label
The error name is a label in the code … On Error GoTo check … check: … code a Resume statement error
In the will cause the statement that caused the error to be executed again In the error code a Resume Next statement will restart execution on the statement after the one that caused the error
IrDarmadiMM ©
Fungsi pengambil keputusan Statement IIf (Inline If) Sintaks : IIf (condition, TrueResult, FalseResult) Function ProsesorCacat () As Boolean ProsesorCacat = 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 ©
IrDarmadiMM @
29
14/08/2013 - IrDarmadiMM
Pengulangan - loop
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 condition diulang bila kondisi T Do Until condition check dulu baru loop [statemnt] dilakukan selama kondisi F Loop Do dilakukan dulu baru check [statement] Loop Until condition diulang bila kondisi masih F
• Contoh
SubBigNumbers() Dim rowNum As Integer, colNum As Integer, currCell As Range rowNum= ActiveCell.Row colNum = ActiveCell.Column Set currCell = ActiveSheet.Cells(rowNum, ColNum) Do While currCell <> " " IfIsNumeric(currCell) Then IfcurrCell >= 1000 Then currCell.Font.Color = VBAColor(" magenta" ) End If rowNum= rowNum + 1 Set currCell = ActiveSheet.Cells(rowNum, colNum) Loop End Sub
Error Handling
Contoh (28)
Sub ErrorHandler1() 'On Error Resume Next On Error GoTo ErrorHandler Dim jCounter As Byte For jCounter = 1 To 20 'Protect VBAProject.Sheet1.Cells(jCounter, 2).Value = jCounter Next jCounter Exit Sub ErrorHandler: 'If Err.Number = 1004 Then MsgBox Err.Number & " : " & Err.Description Resume Next End Sub
30