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

39 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

SINGKUK Digital.COM mengatakan...

bagus banget penjelasannya. sy ini blm paham, apa bedanya script yg dijalankan/dipanggil dengan menggunakan comman buton dengan tidak menggunakn comman button (yg berjalan otomatis). apakah penempatan scriptnya juga berbeda (di module, di sheet, form atau di workbook? trima kasih. tlng email ke dy_kur@yahoo.com

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

Ben mengatakan...

untuk script yang berjalan otomatis misal seperti timer dan fungsi ditempatkan di module.

triger dari script tersebut bisa dari comand button atau apaapun...

Anonim mengatakan...

Gan gimana cara bikin tombol save as nya soalnya saya udah coba tapi gagal terus. minta penjelasannya secara rinci donk.. makasih

syamsul alam mengatakan...

gue ngak bisa bilang apa2 lagi kecuali...
Thank u verrrrrrryyyyyyyyy muchhhhh atas artikelnya........

Ben mengatakan...

terimakasih karena sudah membaca mas...semoga bermanfaat

Andre Syafirman mengatakan...

Mas mau nanya ne..cara menyimpan data yang kita inputkan di sheet1 tampil di sheet2..mhon bntuanny mas

Ben mengatakan...

misal data ada di kolom A sheet 1, mau ditaruh di kolom B sheet2 kodingnya kira2 kayak gini mas

Sheet2.range("B:B") = sheet1.range("A:A")

Andre Syafirman mengatakan...


mau nanya yang lanjutan yang kemaren mas ben,,
Kodingnya seperti ini...

Sub MasukanData()
Dim NamaPegawai As String
Dim Alamat, Nomor As String

'PILIH SHEET
Sheets("FORM INPUT").Select
Nomor = Range("G1").Text
NamaPegawai = Range("B4").Text
Alamat = Range("C4").Text
'MASUKAN DATA
Sheets("DATABASE").Select
jumlahData = Range("E1").Value
Rows(jumlahData + 2 & ":" & jumlahData + 2).Select
Selection.Copy
Rows(jumlahData + 3 & ":" & jumlahData + 3).Select
ActiveSheet.Paste
Application.CutCopyMode = False
'Masukan data
Range("A" & jumlahData + 3).Select
ActiveCell.FormulaR1C1 = Nomor
Range("B" & jumlahData + 3).Select
ActiveCell.FormulaR1C1 = NamaPegawai
Range("C" & jumlahData + 3).Select
ActiveCell.FormulaR1C1 = Alamat
Sheets("form input").Select
'pesan berhasil
MsgBox "Input Data Berhasil !", vbInformation, "Terimakasih !"
Range("B3:C3").Select
End Sub
Sub simpan()
MasukanData
End Sub

Yang mau saya tanyakan mas Ben, ketika saya input nama pegawai dan alamat pegawai di kolom 4 maka berhasil masuk di sheet Database,,kemudian saya inputkan lagi di kolom 5 malah nama di kolom 4 yang tampil lagi mas,,seperti gambar di atas yang sudah saya input, bagaimana kodingnya tu mas ben, supaya data yang diinputkan seterusnya tampil di sheet Database,,mohon banget bantuannya mas ben...


Ben mengatakan...

NamaPegawai = Range("B4").Text
Alamat = Range("C4").Text

ya jels aja di kolom 4 mas..kan situ definisiin nama pegawai ama alamat di kolom 4 (B4 dan C4)

Andre Syafirman mengatakan...

Trus gmana solusinya mas ben,,mhon bantuannya mas ben

Ben mengatakan...

kalo mau kolom 5 masuk ke database mas ubah aja B4 jadi B5, dan C4 jadi C5....

Andre Syafirman mengatakan...

Klw itu udah pasti berhasil mas,,masalah nya kalau kita inputkan 2 kolom dan seterusnya mana bisa mas,,atau ada cara lain nggak mas,.

Ben mengatakan...

itu cari sel kosong setelah sel patokan dan berikutnya

contoh patokannya kan c4 jadi kita set dulu patokannya

dim patokan as range
set patokan = range("B4")

setelah itu suruh macro cari sel kosong di kolom2 setelah patokan

j = 1
do while patokan(1,j) <> ""

j = j + 1

loop

nah kalo udah ketemu taruh data di kolom yg gak kososng sebelum kolom kosong ke variabel atau sel yg dituju


datatuju = patokan(1, j-1).value

Andre Syafirman mengatakan...

Aduuuh mas ben,,tambah nggk ngerti saya mas,,coba gabungkan coding yg mas ben ajukan tadi dengan coding yg saya buat tu mas ben,,tlong mas

Ben mengatakan...

kalo sy yg coding ada fee nya mas...
dan sy perlu jugaa file excel nya...

Andre Syafirman mengatakan...

Kalau ada file sederhana yg sudah menggunakan tombol simpan,,tolong kirim ke email saya mas..
andresyafirman3@gmail.com
tlong bntuannya mas

Ben mengatakan...

sy jual 5 aplikasi yg dah jadi & kebuka kodingannya, plus tutorial2 di blog ini dalam pdf...50 ribu aja...

tapi kalo minta dimodif kodingannya atau sy buat koding baru sesuai permintaan konsumen harganya beda & lebi mahal...

kayaknya di grup FB komunitas VBA indonesia, banyak contoh koding vba mas...free juga