Sabtu, 07 Maret 2009

Beberapa Contoh Kode

Auto Run

Ada beberapa cara untuk membuat macros yang kita buat berjalan secara otomatis ketika pertama kali membuka workbook. Yang pertama adalah Auto Open Method, yang diletakkan di modules, kedua adalah Workbook Open Method, yang diletakkan di pada obyek Workbook (lihat penjelasan pada langkah 3). Dua Contoh kode berikut akan menampilkan pesan “hi” ketika Workbook pertama kali dibuka.

Sub Auto_Open( )

Msgbox “hi”

End Sub

Private Sub Workbook_Open( )

Msgbox “hi”

End Sub

Menghitung Rows, Columns dan Sheet

Kode berikut digunakan untuk menghitung berapa jumlah rows (baris) 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 round untuk 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 berkedip-kedip, 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 sheet dapat 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 (atau worksheet manapun), maka rubahlah “Simpan” menjadi Sheet1.Simpan

22 komentar:

Wawan mengatakan...

Thanks penjelasannya sangat berharga bagi saya. saya pengen tahu cara menjumlahkan dengan Funsi "SUM" untuk range yang tidak tetap. terima kasih

Wawan mengatakan...

Thanks atas penjelasannya itu sangat berharga bagi saya. saya pengen tahu cara menggunakan fungsi "SUM" pada range yang tidak tetap

Sandy mengatakan...

Makasih Gan.. sgt bermanfaat.. mohon copy Pastenya ya..??

Sandy mengatakan...

TQ ya Gan.. sgt bermanfat..buat saya yg pemula..
Mohon izin Copy Fastenya..!!

Ben mengatakan...

U welcome GAn....

Anonim mengatakan...

mas ben kenapa tidak dilanjutkan postingannya.
saya sudah muter-muter mencari tutorial vb-excel, donlot sana sini sampai capek, hasilnya gak mudeng juga cara kerja excel dan vb.
setelah ketemu blognya mas ben, saya sudah tobat jalan-jalan di google.
caranya mas ben memberi pencerahan pas mantab.
saya langsung mudeng, dan ketagihan ngutak atik excel lagi.
lanjutkan mas ..
saya sudah add ym sampeyan, mungkin suatu saat saya bisa menyapa kalau ketemu hehehee
"pak guru!!...terima kasih share ilmunya."(berteriak sambil membungkuk 3x)

Ben mengatakan...

karena kesibukan di kantor saya belum sempat nambah tulisan lagi mas....

mudah2an bisa nambahlagi..berdasarkan pengalaman saya kotak-katik macro excel di kantor...

oke mas, nanti saya accept invite nya di ym. belum buka ym lagi nih..

waduh jangan panggil saya guru mas, saya gak bakat jadi guru. dulu pernah coba jadi guru sekolah selama 8 bulan. tapi gak bisa menguasai kelas...hehe

jadi penulis blog aja lebih enak :D

Rahmat Hidayat mengatakan...

thnks gan, mskh ilmunya, numpang copy paste.

Anonim mengatakan...

Mas, boleh saya tanya...
Saya punya SheetA dan SheetB.
Range B10:B12 sheetB terisi data dari range B10:B12 SheetA.
Pertanyaanya, bagaimana kode VBA nya,
- Jika B10 sheetA disi data, maka baris 11-12 sheetB hidden.
- Jika B11 SheetA diisi data, maka baris 12 SheetB hidden.
tolong dijawab ya

Ben mengatakan...

if sheetA.range("B10") <> "" then

sheetb.rows("11:12").hidden = true

elseif sheetA.range("b11") <>"" then

sheetb.rows(12).hidden = true

end if

Agung Bayunanto mengatakan...

MAS minta pencerahan untuk membuat form agar dapat menampilkan data yang sudah diinpuntkan bagaiamana mas fungsinya misal kita masukkan nomor induk siswa sehingga dapat menampilkan data siswa dalam sebuah form...sebelumnya terima kasih penjelasan bisa di kirim juga ke agungbayunanto@gmail.com makasih mas

Agung Bayunanto mengatakan...

MAS minta pencerahan untuk membuat form agar dapat menampilkan data yang sudah diinpuntkan bagaiamana mas fungsinya misal kita masukkan nomor induk siswa sehingga dapat menampilkan data siswa dalam sebuah form...sebelumnya terima kasih penjelasan bisa di kirim juga ke agungbayunanto@gmail.com makasih mas

Ben mengatakan...

data yag sudah diinputkan ada di sheet excel gan???

kalo ada di sheet bisa gini gan...misal ada data di sheet1 cell A1

mau dimasukan ke textbox1 di form1 gini code nya gan


Form1.Sheet1.Value = Sheet1.range("A1")

Dilla Chaniago mengatakan...

Pak, saya mau tanya tanya...
Saya punya SheetA dan SheetB.
(Cell A1 sheetA) terisi data dari (Cell A1:A2:A3 SheetA.)

Bagaimana cara SheetA memanggil SheetB ? dan sebaliknya ?

Mohon bantuannya pak ?
terimakasi

Ben mengatakan...

saya sudah jawab via email yah...
"memanggil" itu apa menampilkan sheet B atau emmasukkan data dari sheet B ke sheet A

terimakasih

Sapu Jagad mengatakan...

Mas.mohon bantuuanya...
Saya ingin membuat Command Button Laporan di Form. ketika di klik Commond Button Laporan tersebut akan menampilkan sheet1 kolom A; Kolom B: kolom F berdasarkan data yang telah di entry (tapi dalam bentuk print preview)
Terima Kasih Mas semoga bantuanya bermanfaat tidak untuk saya tetapi untuk yang lain juga.
Bisa di email juga ke sapu.jagad007@gmail.com

Salam

Ben mengatakan...

coba pelajari pembahasan tentang masalah mas di link ini mas...

kalo menurut saya sebelum di print preview, data-data yagn mau di print di kumpulkan di suatu sheet (secara automatis oleh vba)

baru setelah itu di print preview

Ben mengatakan...

ini link nya mas...sori lupa.... :)

http://www.mrexcel.com/forum/excel-questions/80932-control-display-print-preview-through-visual-basic-applications-not-excel.html

Anonim mengatakan...

Mas Ben, Gmn cara memberi warna pada sel/range dengan VB, trims sblmnya...

Ben mengatakan...

seperti ini contohnya mas

Range("A1").Interior.Color = 49407

nanti sel A1 jadi warna orange

dede hidayat mengatakan...

mas Ben saya pernah melihat aplikasi raport sekolah menggunakan excel saya tertarik di pungsi printnya di satu sheet bisa membuka sheet lain yang sudah di pilih dengan hanya klik tombol atau tulis angka. Mas Ben mohon pencerahannya....terimakasih.

Ben mengatakan...

untuk memilih sheet tertentu bisa seperti ini mas, contohnya kita mau buka sheet1

sheet1.activate

nah ini dasar dari pengaktifan sheet

bila pake angka berarti angka itu sebagai indeks. oleh karena itu yang kita pakai

sheets(index).activate

misal sheet pertama maka

sheets(1).activate

kalo sheet ke dua ya ganti 1 menjadi 2