Visual Basic for Applications (VBA) pada dasarnya adalah pemrograman yang berorientasi object (OOP). Oleh karena itu setiap script vba yang ditulis selalu didasarkan pada object-object yang pada pada vba atau pada aplikasi host atau object yang dibuat sendiri.
Cara ini juga bisa menjadi kunci dalam memahami script VBA dengan cepat, misalnya jika di analogikan, kita memerintahkan burung untuk terbang, maka script VBA akan ditulis seperti ini.
Burung.terbang
Yang ditulis adalah objectnya terlebih dahulu baru setelah itu diikuti property atau method yang dimiliki oleh object tersebut.
Dimna burung adalah object dan terbang adalah method yang dimiliki oleh burung.
contoh lainnya
Burung.sayap(2) = True
Mudah mudah sudah ada gambaran ya.
Object yang digunakan dalam VBA tentu sangat banyak ditambah dengan object yang ditambahkan oleh aplikasi Host.
Seperti misalnya dibawah ini adalah gambaran kecil dari object yang dimiliki oleh Excel
Objek Application adalah objek tertinggi dalam hirarki. Objek ini mewakili aplikasi Excel secara keseluruhan jika yang digunakan adalah VBA Excel. Jadi Aplication ini adalah Object dari Aplikasi Host dimana VBA berada.
Dengan kata lain Application ini akan berubah menjadi Word jika di Word dan PowerPoint jika dibuka di PowerPoint.
Untuk memudahkan memahami pentingnya hirarki object, misalnya jika kita mau menggunakan cells excel misalnya pada alamat A1. maka notasi scriptnya jika ditulis menggunakan VBA adalah
Application.Workbook("Book1").Sheets("Sheet1").Cells(1, 1).Value
Application
adalah object dari Aplikasi ExcelWorkbook("Book1")
adalah File atau Workbook “Book1” yang sedang di buka Oleh ExcelSheets("Sheet1")
adalah Sheet yang bernama “Sheet1” yang ada pada File “book1”Cells(1,1)
adalah cells dengan alamat baris ke 1 dan kolom ke 1 yang berada di Sheets “Sheet1” dan didalam file “Book1”Seperti itulah contoh penulisan script untuk menggunakan cells A1 dimulai dari object tertinggi hingga ke cells.
Cara penulisan seperti ini tentu agak sedikit merepotkan karena harus menulis panjang dan detail tetapi ini akan lebih baik dan akan terhindar dari kesalahan.
Nah, Untungnya didalam VBA ada nilai-nilai default yang dimana jika kita tidak menuliskannya atau menyebutkannya maka script tidak akan Error tetapi bagian kosong yang tidak disebutkan tersebut akan diisi dengan nilai default yang sudah ditetapkan.
Sehingga pada kondisi tertentu penulisan script tidak harus direpotkan dengan penulisan yang panjang dan detail.
Misalnya jika kamu akan menggunakan Cells A1, maka script bisa ditulis cukup dengan
Cells(1,1).value
Maka, script diatas itu akan sama artinya dengan
Application.ActiveWorkbook.ActiveSheet.Cells(1, 1).Value
Application
adalah object dari Aplikasi ExcelActiveWorkbook
adalah File atau Workbook yang saat ini sedang AktifActiveSheet
adalah Sheet yang saat ini sedang aktifCells(1,1)
adalah cells dengan alamat baris ke 1 dan kolom ke 1Contoh lainnya misalnya :
Range("A1").value = "Excel"
Pada script diatas nama worksheet tidak tertulis pada script artinya, worksheet yang dituju adalah worksheet yang active (ActiveSheet) .
Jadi bisa disimpulkan bahawa Workbook dan Juga worksheet pada script diatas, tidak statis tetapi bisa berubah-ubah tergantung sheet mana yang sedang aktif.
Penulisan script cells(1,1).value
tentu sangat memudahan tetapi dibalik itu penulisan seperti akan berakibat menghasilkan kesalahan dimana jika sheet yang aktif adalah bukan sheet yang kita harapkan.
Lalu bagaimana cara terbaiknya?
Pastikan yang dibutuhkan memang Sheet yang aktif. Tetapi jika bukan, cara terbaik untuk mengunakan cells A1 adalah dengan menyebutkan nama worksheetnya. misalnya :
Set wb = Thiswoorkbook wb.Sheets("Sheet1").Cells(1,1).value
ThisWorkbook
adalah File atau Workbook yang saat ini sedang digunakanSheets("Sheet1")
adalah Sheet yang bernama “Sheet1”Cells(1,1)
adalah cells dengan alamat baris ke 1 dan kolom ke 1Dengan cara seperti ini, sudah cukup untuk menentukan alamat tujuan dari cells yang dituju, maka tujuan tidak akan salah alamat atau terjadi kesalahan.