Jelajahi eBook
Kategori
Jelajahi Buku audio
Kategori
Jelajahi Majalah
Kategori
Jelajahi Dokumen
Kategori
MEMBUAT BERKAS YANG MEMILIKI MACRO PADA EXCEL 2007 Karena menggunakan Excel 2007 maka berkas Excel yang kita buat haruslah menggunakan extensi .xslm. Sekarang mari kita membuat sebuah berkas baru Excel, berkas tersebut masih dalam format .xslx.
Buka berkas tersebut, kemudian simpan sebagai (save as) fungsi sendiri.xslm.
Maka
kita
telah
membuat
sebuah
berkas
Excel
2007
yang
dapat
menggunakan macro (macro enabled). Lalu kita atur keamanan dan privasi Excel kita pada Macro Settings dan Trusted Location (lokasi terpercaya tempat kita menyimpan berkasberkas excel ber-macro), sehingga macro yang telah kita buat dapat bekerja. Kedua pengaturan tersebut terdapat pada Excel Option-Trust Center-Trust_Center Settings.
Pada
pengaturan Macro,
pilih
Disabled
All
Macro
Except
Digitally
Signed
Macros (pilihan ke 3) atau Enabled All Macro (pilihan ke 4), penulis menyarankan pilihan ke-4 bagi pemula.
Kemudian kita atur juga lokasi folder yang terpercaya (Trusted Location), di komputer penulis terletak di E:\VBA\. Jangan lupa untuk mencentang pilihan Subfolder of this location also trusted agar subfolder dari folder ini juga dipercaya.
MEMBUAT FUNGSI MERUBAH ANGKA KE KATA UNTUK ANGKA TUNGGAL Untuk membuat fungsi sendiri, maka kita perlu membuat prosedur fungsi (function procedure) VBA pada module di Visual Basic Editor.
Sekarang kita telah membuat sebuah fungsi bernama angka_ke_kata yang akan menghasilkan sebuah kata (tipe data string) dengan argumen sebuah angka (tipe data double).
Tipe data string diperuntukkan untuk teks, sedangkan tipe data double diperuntukkan untuk bilangan asli dan pecahan. Function angka_ke_kata(angka As Double) As String Dalam fungsi ini pertama kita akan menyiapkan array yang berisi teks yang berassosiasi dengan bilangan yang dimaksud. Array itu kita beri nama kata_angka, berukuran 10, yang beranggotakan kata untuk bilangan dari nol sampai sembilan. Dim kata_angka(10) As String kata_angka(0) = "nol" kata_angka(1) = "satu" kata_angka(2) = "dua" kata_angka(3) = "tiga" kata_angka(4) = "empat" kata_angka(5) = "lima" kata_angka(6) = "enam" kata_angka(7) = "tujuh" kata_angka(8) = "delapan" kata_angka(9) = "sembilan"
Berdasarkan array ini kita sudah dapat membuat sebuah fungsi yang merubah angka tunggal menjadi kata. Kita cukup menambahkan kode VBA yang mengembalikan kata yang sesuai dengan argumen angka ketika fungsi kata_ke_angka dipanggil. angka_ke_kata = kata_angka(angka)
Sekarang kita kembali ke sheet1 pada workbook Excel untuk mencoba fungsi yang telah dibuat. Isikan angka pada sel A1 kemudian pada sel A2 masukkan fungsi excel angka_ke_kata. Fungsi ini terletak pada pilihan fungsi user defined.
MEMBUAT FUNGSI MERUBAH ANGKA KE KATA UNTUK ANGKA LEBIH DARI 9 Sejauh ini kita telah membuat sebuah fungsi yang merubah angka ke kata. Tapi fugnsi ini bekerja hanya untuk angka-angka tunggal (dari nol sampai Sembilan). Lebih dari itu maka
fugnsi init akan menghasilkan kesalahan, sebagai contoh kita tuliskan nilai 10 atau 200 di sel A1.
Selanjutnya kita akan melengkapi kode-kode di fungsi yang telah kita buat, sehingga dapat merubah angka lebih dari 9 menjadi kata. Algoritma nya sebenarnya cukup mudah, fungsi yang kita buat pertamaakan menghitung panjang angka yang akan diubah. Setelah itu fungsi tersebut akan merubah tiap anggota angka menggunakan array kata_angka seperti bahaasan sebelumnya, kemudian menggabungkan hasil-hasilnya. Sehingga hasil yang akan didapat nanti adalah berupa gabungan kata-kata, atau lebih tepatnya disebut kalimat. Dalam Visual Basic dikenal fungsi Len(pernyataan) yang berguna untuk mengetahui panjang sebuah teks (kata atau kalimat). Karena angka yang kita ubah berupa bilangan bukan teks, maka kita perlu merubah angka tersebut menjadi teks dengan fungsi Cstr(pernyataan). Bilangan dalam format data double yang telah dikonversi menjadi format data string akan
kita simpan dalam variabel angka_dlm_teks. Sedangkan panjangnya kita taruh dalam variabel panjang_angka. angka_dlm_teks = CStr(angka) panjang_angka = Len(angka_dlm_teks)
Berdasarkan informasi panjang angka tersebut, kita dapat membuat sebuah loop untuk merubah tiap anggota angka menjadi kata dan menggabungkannya kembali. Dalam loop tersebut setiap karakter dalam variabel angka_dlm_teks akan kita ambil meggunakan fungsi Mid(string,awal,jumlah). Kemudian memasukan karakter itu ke dalam variabel index_angka. Variabel ini akan digunakan untuk mengambil data dari anggota array kata_angka yang berasosiasi dengan karakter tersebut. Untuk
menggabungkan hasilnya dari setiap kali proses tersebut diulang, maka digunakan operator penggabungan &. For i = 1 To panjang_angka index_angka = Mid(angka_dlm_teks, i, 1) angka_ke_kata kata_angka(index_angka) Next = angka_ke_kata & " " &
Sekarang mari ktia tes fungsi ini dengan angka 1, 720 dan 30827.
atau columns(kolom) yang telah kita sorot dengan kursor. Sub Hitung( ) hitung_baris = Selection.Rows.Count hitung_kolom = Selection.Columns.Count MsgBox hitung_baris & " " & hitung_kolom End Sub Sub hitung_sheet( ) hitung_sheet = Application.Sheets.Count Msgbox hitung_sheet End Sub MENG-KOPI RANGE Contoh berikut akan meng-kopi range A1 sampai A3 ke D1 sampai D3
Sub Kopi_Range( ) Range (A1:A3).Copy Destination:=Range(D1:D3) End Sub WAKTU SEKARANG Contoh berikut akan menampilkan waktu pada saat ini Sub sekarang( ) Range (A1)= Now End Sub MENGETAHUI POSISI SEL YANG SEDANG AKTIF Sub posisi( ) baris = ActiveCell.Row kolom = ActiveCell.Column Msgbox baris & , & kolom End Sub MENGHAPUS BARIS YANG KOSONG Sub hapus_baris_kosong( ) Rng = Selection.Rows.Count ActiveCell.Offset(0, 0).Select For i = 1 To Rng If ActiveCell.Value = "" Then Selection.EntireRow.Delete Else ActiveCell.Offset(1, 0).Select End If Next I End Sub Menebalkan dan Mewarnai Huruf (Font) Contoh berikut akan menebalkan dan memberi warna merah pada huruf dimana sel sedang aktif. Sub tebal_merah( ) Selection.Font.Bold = True
Selection.Font.ColorIndex = 3 End Sub MENGIRIMKAN WORKBOOK MELALUI EMAIL Sub email( ) ActiveWorkbook.SendMail recipients:= excel@ahoo.c End Sub FUNGSI EXCEL Menggunakan fungsi bawaan Excel dalam VBE hampir sama dengan
menggunakannya dalam Excel. Misal fungsi rounduntuk membulatkan sebuah angka, dalam spreadsheet akan terlihat seperti ini = round(1.2367, 2) Dalam VBE Anda cukup menggunakan Application kemudian disusul fungsi yang akan dipakai. Sub bulat( ) ActiveCell = Application.Round(ActiveCell, 2) End Sub MENGHAPUS NAMA-NAMA RANGE Contoh berikut akan menghapus semua nama-nama range di dalam workbook Anda Sub hapus_nama_range( ) Dim NameX As Name For Each NameX In Names ActiveWorkbook.Names(NameX.Name).Delete Next NameX End Sub LAYAR BERKEDIP Program dalam macros yang sedang berjalan dapat membuat layar berkedipkedip, untuk menghentikannya Anda dapat menyisipkan kode berikut. Application.ScreenUpdating = False MENUJU RANGE TERTENTU Untuk menuju suatu range tertentu, kode-kode berikut dapat digunakan.
Application.Goto Reference:=A1 Atau, Range(A1).Select MENUJU SHEET TERTENTU Sedangkan untuk menuju worksheet tertentu, gunakan kode-kode berikut. Sheets(1).Select Atau Sheet1.Select Untuk menuju Sheet terdepan (nomor 1) Sheet(coba).Select Untuk menuju Sheet bernama coba MENYEMBUNYIKAN WORKSHEET Kode berikut berfungsi untuk menyembunyikan Sheet1 Sheet1.Visible = xlSheetVeryHidden Pengguna tidak dapat membuka sheet yang telah disembunyikan dengan cara ini, hanya dengan kode VBE sheetdapat dibuka kembali. INPUT BOX Kode berikut berguna untuk memunculkan Input Box InputBox(Masukkan Nama) MENYISIPKAN BARIS DAN KOLOM Kode berikut akan menyisipkan baris diatas range A1, Range(A1).Select Selection.EntireRow.Insert Sedang yang berikut akan menyisipkan satu kolom disamping kiri range A1, Range(A1).Select Selection.EntireColumn.Insert MENGATUR ULANG UKURAN RANGE Selection.Resize(7,7).Select MEMBERI NAMA RANGE Selection.Name = nama
MENYIMPAN FILE Kode berikut berguna untuk menyimpan file tanpa memberi nama, ActiveWorkbook.Save Sedangkan bila Anda hendak memberi nama (SaveAs), gunakan kode berikut, ActiveWorkbook.SaveAs Filename:=C:\coba.xls PENJADWALAN Kadang-kadang kita hendak menjadwalkan sebuah tugas kepada Excel, contohnya menyimpan file pada jam-jam tertentu. VBE dapat melakukannya dengan menggunakan fungsi Application.OnTime. Sebagai contoh, kode dibawah ini akan menjalankan prosedur Simpan( ) pada jam 12:00 dan 16:00,
prosedur Simpan( ) sendiri berisi perintah untuk menyimpan file, Sub tugas() Application.OnTime TimeValue("12:00:00"), "Simpan" Application.OnTime TimeValue("16:00:00"), "Simpan" End Sub Sub Simpan() ActiveWorkbook.Save End Sub Bila Anda hendak merubah jamnya, missal jam 10:03:05, maka
rubah TimeValue menjadi TimeValue(10:03:05). Sedangkan bila Anda hendak melakukannya satu jam setelah prosedur tugas( ) dijalankan maka rubahlah kodenya seperti demikian, Sub tugas() Application.OnTime Now + TimeValue("01:00:00"), "Simpan" End Sub Perhatikan penambahan kata Now. Kode-kode di atas bekerja bila disimpan dalam module, bula Anda ingin menyimpannya di dalam Sheet1
Perhatikan ketika kita mengetik "Module1", kemudian mengetik "." Maka akan muncul tampilan seperti diatas. Sebuah kotak dengan sebuah gambar berwarna hijau dengan tulisan "coba".
Pada penjelasan berikut, kita akan membuat prosedur-prosedur buatan kita sendiri pada Worksheet dan Workbook. Mengapa? Karena kode-kode program dalam prosedur yang kita buat di sebuah Worksheet dan Workbook tertentu, hanya akan bekerja pada Worksheet atauWorkbook tersebut. Sedang prosedur yang tertulis pada Modules, bekerja pada Worksheet dalam Worbook yang aktif.
Sebagai contoh ketikan kode ini dalam prosedur Sub Coba() dalam Module 1: Range("A1").Value= "coba"
kemudian sheet3,
Pada Workbook baru, bernama Book1 ini, buka Sheet1, jalankan program,
Bila Anda melanjutkan pada book1.xls-Sheet2 dan Sheet3, program yang kita buat pada contoh.xls-Module1 akan dikerjakan pada setiapWorksheet yang aktif, walapun Worksheet tersebut berada pada Worbook lain. Hal ini akan merepotkan bila Anda hanya ingin program VBE yang dibuat bekerja pada Worbook tertentu, sedang dalam pekerjaan Anda sehari-hari Anda harus membuka banyak Workbook.
Pemograman Sheet Untuk memulai, masuklah ke dalam Sheet1 dengan cara double
Kembali ke Ms. Excell, buka Sheet1, jalankan program dengan menekan Ctrl + q , hasilnya adalah ;
Hapus kata "lembar1" di Sheet1, kemudian buka Sheet2, kemudian tekan Cttrl + q, dan hasilnya adalah
range A1 tidak terisi apapun pada Sheet2, bukalah Sheet1 dan Anda akan mendapatkan bahwa pada range A1 terdapat kata "lembar1".
Membuat Shortkey untuk Program pada Sheet Untuk membuat Shortcut key dari program yang telah kita buat, maka tekan Alt + F8, atau menggunakan menu ToolsMacroMacros
akan tampil
pada isian Shorcut Key, isikan huruf w. Kembali ke Excell, dan tekan Ctrl + w, lihat apa yang terjadi. Menyisipkan Control Object pada WorkSheet Seperti VB6, pada VBE terdapat pula obyek-obyek kontrol, seperti Command Button, Text Box, Option Button, Label, dan sebagainya. Tetapi, tidak semua kontrol yang ada di VB6 terdapat di VBA Excel. Pertama-tama kita perlu menghidupkan Control Toolbox, dimana terdapat kontrol-kontrol yang kita perlukan. Untuk itu arahkan kursor ke menu ViewToolbars-Control Toolbox seperti gambar dibawah,
Untuk menyisipkan kontrol dan merubah-rubah propertinya, maka kita perlu menghidupkan Design Mode.
tekan gambar segitiga yang memiliki nama Design Mode, sehingga gambar tersebut terlihat terang
lalu kursor akan berubah menjadai tanda "+" , gunakan kursor untuk membentuk sebuah Command Button dengan cara klik kiri pada mouse.
untuk
memasukan
kode
maka double-
End Sub CommandButton1_Click berarti program akan dijalankan pada saat Command Button ditekan. Seperti terlihat bahwa prosedur ini terdapat di dalam Sheet1, WorkSheet dimana Command Button disisipkan.
kembali ke Excel dan maitkan Design Mode dengan cara menekannya, sehingga tampilannya tidak terang lagi,
Kita dapat mengakses properti Command Button, dengan cara menyalakan kembali Design Mode lalu klik kanan Command Button,
di sisi sebelah kiri akan tampil Windows Properties. Kita dapat merubah tampilan (Caption) pada Command Button dengan cara merubah isian Caption di Properties,
Menggunakan UserForm Untuk menggunakan UserForm, pertama sisipkan dahulu obyek ini
selanjutnya Anda dapat melakukan langkah-langkah pemograman seperti di VB6. Pada contoh berikut kita akan menyisipakan sebuah CommandButton dan sebuah TextBox ke dalam form kita. Isi dari sebuah range (kita pilihrange A1) di salah satu WorkSheet (pada contoh ini kita pilih Sheet1) akan sama dengan isi TextBox ketika CommandButton ditekan. Pertama-tama kita sisipkan
Selanjutnya kembali ke Sheet1 (pada Visual Basi Editor), isikan kode beirkut di Prosedur "lembar1", UserForm1.Show Kode di atas memerintahkan agar UserForm1 muncul
Sebagai
catatan,
maka
Anda
tidak
dapat
menggunakan WorkSheet pada Excel. Bila Anda menginginkan agar, bisa beralih ke WorkSheet, maka kode berikut dapat digunakan (hanya bekerja pada Excell 2000 ke atas). UserForm1.Show vbModeless
Bila program kembali dijalankan maka Anda dapat beralih dari UserForm ke WorkSheet.
Mengendalikan Range
Mengendalikan Range merupakan hal yang penting dalam pemograman VBE. Mari kita mulai, pertama buatlah sebuahfile contoh.xls. Kemudian buatlah sebuah makro dengan cara Record New Maro,
beri
dengan
nama Coba,
Range("A1").Select Merupakan perintah pada VB Excell untuk memilih range A1, bila A1 diubah menjadi A4 maka kata coba akan dituliskan pada range A4. ActiveCell.FormulaR1C1 = "coba" Berarti pada sel aktif yang telah dipilih (select) rumus (Formula) coba akan dituliskan. Activecell sendiri menunjuk pada sel dimana kursor aktif.
bila dijalankan, maka kode ini akan menghasilkan yang sama dengan sebelumnya.
Menggunakan Range dengan Cell Kita dapat membuat sebuah range pada Excell sebagai titik pusat lalu dengan bantuan Cells(Rowindex, Columnlindex)., kita dapat menempatkan sebuah nilai atau rumus di sekitar Range yang menjadi pusat. Sebagai contoh tuliskan kode ini pada Sub Coba() Range("D5").Cells(1, 1).Value = "pusat" Range("D5").Cells(0, 1).Value = "atas" Range("D5").Cells(2, 1).Value = "bawah" Range("D5").Cells(1, 0).Value = "kanan" Range("D5").Cells(1, 2).Value = "kiri"
dapat dilihat Range(D5).Cells(1,1) adalah Range D5 yang menjadi pusat. Bila Range tidak disebutkan maka secara default , Range yang menjadi titik pusat adalah Range A1. Anda harus berhati-hati ketika memilih range-range yang berada di tepi, seperti A1, A2, B1, C1, dst. Sebab tidak ada lagi range di atas atau di tepi kanan range-range tersebut.
Bila kita menginginkan sel yang menjadi titik pusat adalah sel dimana kursor aktif, maka kode berikut dapat digunakan ActiveCell.Offset(0, 0).Value = "pusat" ActiveCell.Offset(0, 1).Value = "kiri" ActiveCell.Offset(0, -1).Value = "kanan" ActiveCell.Offset(1, 0).Value = "bawah" ActiveCell.Offset(-1, 0).Value = "atas"
bila dijalankan maka hasil yang sama akan didapatkan. Menunjuk sel pada worksheet tertentu Karena ditulis di module maka kode-kode diatas bekerja pada Worksheet yang aktif. Artinya bila Sheet1 yang sedang tebuka maka program aka dijalankan pada Sheet1. Bagaimana bila kita menginginkan agar range yang ditunjuk berada di dalam sheet tertentu. Caranya depan range, sebagai contoh: Sheet1.Range(A1).value=oke Akan mengacu pada range A1 pada Worksheet Sheet1, bila kita menginginkan agar range A1 pada Sheet2 maka ganti kode sebelumnya dengan: Sheet2.Range(A1).value=oke Cara penulisan lain juga dapat dilakukan, contohnya: Set Pesan = Sheets("sheet3").Range("A1") Set Pesan = Sheets(2).Range("A1") cukup dengan menuliskan nama worksheet di
Multiple Range Kita sudah mempelajari bagaimana menujuk sebuah range tunggal sebagai sasaran pemograman. Sekarang bagaimana bila kita menginginkan multiple range.
Range (A1:C3).value = oke Range(A1,D4).value = oke2 Kode-kode di atas menunjuk pada multiple range. Pada kode pertama yang ditunjuk adalah range A1 sampai C3, sedanga yang kedua adalah A1 sampai D4. Range Bernama Bagi Anda yang sering menggunakan Excel, mungkin sering memberi nama pada sebuah range untuk mempermudah pekerjaan. Pertanyaan dapatkah
menunjuk range bernama tersebut dalam VB Excel ? jawabannya, DAPAT!! Misalkan Anda memiliki sebuah range yang bernama sel, maka range ini dapat ditunjuk dengan kode Range (sel), sebagai contoh: Range (sel).value = ini sel Membuat Sebuah Variabel dari Range Membentuk sebuah variabel dari range sangatlah mudah pada VBE. Tujuannya agar mempermudah dalam pemograman. Pertama kita harus membuat dimensinya terlebih dahulu, caranya dengan menuliskan kode seperti ini: Dim Pesan As Range Kemudian kita set variabel tersebut, sesuai dengan range yang kita inginkan ; Set Pesan = Range("A1") Atau Set Pesan = Range("A1").Cells(1, 2) atau Set Pesan = Sheet1.Range("A1") atau Set Pesan = Sheets("Sheet3").Range("A1") Kemudian kita dapat melakukan operasi range pada variabel yang telah dibentuk. Sebagai contoh Dim Pesan As Range Set Pesan = Sheet1.Range("A1") Pesan.Value = "pesan nih" Pesan(1, 2).Value = "pesan kedua"
Range A1 pada Sheet1 akan tertulis pesan nih dan range A2 akan tertulis pesan kedua. Sebab Pesan(1,2) sama dengan Sheet1.Range(A1).Cells(1,2). Sebenarnya kita dapat membentuk variabel tanpa membuat dimensinya terlebih dahulu, tetapi cara ini idak dianjurkan karena memboroskan memori. Caranya adalah seperti demikian: Set Pesan = Sheet1.Range("A1") Pada kasus ini perintah-perintah berikut bisa bekerja, Pesan.Value = "pesan nih" Pesan(1, 2).Value = "pesan kedua"
Diposkan oleh Ben 20 komentar Link ke posting ini Label: Excel, Macro, VB, VBA, Visual Basic, Visual Basic ApplicationVB
Ketikan nama Makro yang dikehendaki pada isian Macro name, contohnya : coba. Maka akan tombol create akan aktif
maka Anda telah membuat sebuah Modul Visual Basic Aplication (VBA) bernama Module1 dan sebuah prosedur VBA bernama coba (). Anda dapat memilih agar Makro ini bekerja di seluruh file Excel yang terbuka (All Open Workbooks), hanya pada file yang sedang Anda buka (This Workbooks), atau pada file contoh.xls, file Excell dimana Anda membuat Makro-nya. Dengan cara memilih pilihan tersebut pada Macros In.
2. Record New Macro Cara kedua ini merupakan favorit penulis, sebab dengan cara ini kita dapat membuat kode visual basic tanpa harus menuliskannya. Pada dasarnya,
semua operasi Excell dapat dilakukan oleh Macros. Operasi itu dapat dicatat oleh Macros melalui Record New Macros. Kemudian kita dapat mengubah kode-kode VBA yang dihasilkan oleh operasi yang tercatat tersebut. Untuk memulai mencatat Makro maka pada menu Tools, sorot Macro kemudian sorot Record New Macros lalu klik kiri Mouse,
Kolom isian Macro name: dimana Anda mengisikan nama Macro. Kolom Shortcut key bila Anda hendak membuat shortcut keydari keyboard (Ctrl+ tombol keypad yang Anda inginkan). Store Macro in merupakan kolom isian untuk menentukan dimana macroakan disimpan, pilihannya adalah This Workbook, New Workbook dan Personal Macro Workbook
. Dan kolom Description, bila Anda ingin memberi penjelasan singkat mengenai Macro yang akan Anda catat. Sebagai contoh, kita akan mencatat Macro bernama ok, yang mencatat operasi Excell berupa pengisian sel A1 dengan kata ok, dan mempunyai shortcut key Ctrl + q. Pertama-tama lakukan langkah-langkah yang telah disebutkan sehingga muncul tampilan sebagai berikut,
lalu tekan tombol OK. Pencatatan sedang dilakukan, isilah sel A1 dengan kata ok, lalu pada Menu Tools, sorot Macro, kemudian tekan Stop Recordingdan pencatatan akan berhenti.
Untuk melihat kode VBA yang telah tercatat, pada menu Tools sorot Macro, sorot Macros.
Pilihlah ok pada Macro name: lalu tekan tombol Edit, sehingga akan muncul tampilan sebagai berikut,
Cobalah merubah Range(A1) menjadi Range(A2), simpan dengan menekan gambar disket atau Ctrl + S. Kembali ke contoh.xls, tekan Ctrl + q dari Keyboard, dan lihat apa yang terjadi. 3. Visual Basic Editor (Alt +F11)
Bila Anda sudah mengenal pemograman Visual BASIC, maka cara ini tidaklah sulit. Bahkan kadang-kadang Anda akan sering melakukannya. Untuk menampilkan Visual Basic Editor Anda cukup menekan Alt+F11 maka tampilan berikut akan muncul,
selanjutanya Anda bisa menyisipkan Module, ClassModule dan UserForm, dan mulai melakukan pemograman seperti yang Anda lakukan di VB6. Seperti Anda lihat lembar kerja (WorkSheet) pada Excell merupakan Objek di VBE.