Sebagai pemrogram VBA pemula, saya perlu mengumpulkan macro yang saya buat atau temukan. Menaruhnya di Internet hanyalah sebuah langkah lanjutan kecil.
Jika anda menjalankan sebuah macro, aksinya tidak bisa dibatalkan. Menggunakan macro yang disediakan di sini adalah urusan anda sendiri.
Camkanlah bahwa macro bisa sangat bermanfaat, namun juga bisa berbahaya jika berasal dari sumber yang tidak dikenal.
Code-code macro dasar berikut ini berasal dari seantero Internet atau dibuat oleh saya sendiri. Oleh karena sangat umum dan dasar, saya tidak mencantumkan sumbernya. Jika seseorang mengenalnya sebagai buatannya dan ingin namanya dicantumkan atau code dihapus, silahkan menghubungi saya.
Macro yang disediakan berikut ini adalah pilihan saya dan bisa digunakan sebagai permulaan atau untuk membantu anda pada proyek-proyek dasar. Gunakan imajinasi anda untuk menyesuaikannya dengan proyek anda, atau lakukan pencarian lebih lanjut di Internet.
Code-code sudah saya coba dan verifikasi untuk dijalankan pada Excel 2007. Harap diingat bahwa kita bisa mencapai suatu tujuan dengan cara yang berbeda.
Macro umumnya dimulai dengan baris: "Sub Name()", dimana Name bisa diganti dengan nama yang ingin anda gunakan. Macro diakhiri dengan baris "End Sub".
Untuk kejelasan dan kemudahan dalam pemakaian yang berbeda, saya tidak mencatumkan baris-baris ini lagi kecuali untuk alasan tertentu.
Jika "Sub" diganti dengan "Function", code akan berjalan sama saja, namun macro tidak tampak pada daftar macro yang tersedia. Kelemahan cara ini adalah function akan tampak dalam daftar function. Jika "Private" ditambahkan sebelum "Sub" atau "Function", macro hanya bisa dipanggil dari module yang sama, dan juga tidak muncul dalam daftar.
Activate |
Sub Worksheet_Activate() MsgBox "Hello" End Sub |
Active Cell, Position |
myRow = ActiveCell.Row myCol = ActiveCell.Column MsgBox myRow & "," & myCol |
Active Cell, Selection to far left |
Selection.End(xlToLeft).Select OR Range("A" & ActiveCell.Row).Select |
Active Cell in top left of screen |
With ActiveWindow .ScrollColumn = ActiveCell.Column .ScrollRow = ActiveCell.Row End With |
Active Cell, Value | MsgBox ActiveCell.Value |
Auto Run |
Sub Auto_Open() MsgBox "Hello" End Sub |
Auto Run(2) |
Sub Workbook_Open() MsgBox "Hello" End Sub |
Auto Save |
This workbook: '
= Autorun Sub Workbook_Open() Call SaveMe End Sub In Module: Sub SaveMe() ThisWorkbook.Save Application.OnTime Now + Timeserial(0,15,0),"SaveMe" ' Timeserial=(h,m,s) End Sub |
Available Row (next) |
Range("a65536").End(xlUp).Offset(1, 0).Select |
Call - Running a subroutine |
Call Macro2 'This calls for Macro2 to run within your Macro |
Case Title |
Dim cell As Range For Each cell In Selection.Cells If cell.HasFormula = False Then cell = Application.Proper(cell) End If Next |
Case Upper / Lower |
Dim cell As Range For Each cell In Selection.Cells If cell.HasFormula = False Then cell = UCase(cell) End If Next |
Column Letters |
Dim MyColumn As String, Here As String Here = ActiveCell.Address MyColumn = Mid(Here, InStr(Here, "$") + 1, InStr(2, Here, "$") - 2) MsgBox MyColumn |
Counting Rows & Columns |
myRows = Selection.Rows.Count myColumns = Selection.Columns.Count MsgBox "Rows = " & myRows & vbCrLf & "Colums = " & myColumns |
Carriage Return | MsgBox "Line 1" & vbCrLf & "Line 2" |
Copy Range (1) | Sheet1.Range("A1:C1").Copy Destination:=Sheet2.Range("A1") |
Copy Range (2) |
Range("A1:B1").Copy Range("A2").PasteSpecial Paste:=xlPasteValues Application.CutCopyMode = False |
Counter |
Range("A1") = Range("A1") + 1 OR myCount = Range("a1") + 1 Range("a1") = myCount |
Current Date |
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As
Boolean) Range("A1") = Now End Sub |
Delete Empty Rows |
firstRow = Selection.Row lastRow = Selection.Row + Selection.Rows.Count For rownumber = lastRow To firstRow Step -1 If Application.WorksheetFunction.CountA(Rows(rownumber)) = 0 _ Then Rows(rownumber).Delete Next rownumber |
Error Trapping |
On Error Resume Next OR Sub Name() On Error Goto ErrorHandler1 ... more lines of code Exit Sub ErrorHandler1: ... code specifying action on error End Sub |
File Name & Path | Range("A1") = Application.ActiveWorkbook.FullName |
For, Next Loop | |
Goto (Code) | |
Input Box |
Dim MyInput MyInput = InputBox("Enter something") Range("A1") = MyInput |
If, Then Statement |
If Range("B1") > 10 Then Range("B2") = 10 ElseIf Range("B2") > 5 Then Range("B2") = 5 Else Range("B2") = 1 End If |
Joining Text |
myCol = Selection.Columns.Count - 1 n = 0 For n = 0 To Selection.Rows.Count - 1 For i = 1 To myCol ActiveCell.Offset(n, 0) = ActiveCell.Offset(n, 0) & ActiveCell.Offset(n, i) ActiveCell.Offset(n, i) = "" Next i Next n |
Message Box |
MsgBox "Created by: Your Name here" MsgBox "Different Icon", vbInformation MsgBox "Different Icon And Title", vbExclamation, "Your warning message" |
Modeless Forms | UserForm.show vbModeless |
Moving the Cursor | ActiveCell.Offset(1, 0).Select |
Protecting / Unprotecting a sheet |
'Protect Dim Password Password = "xxxx" ActiveSheet.Protect Password, True, True, True 'Unprotect Password = "xxxx" ActiveSheet.Unprotect Password |
Random numbers |
MyNumber = Int((10 - 1 + 1) * Rnd + 1) Range("A1") = MyNumber |
Rounding Numbers | ActiveCell = Application.round(ActiveCell, 2) |
Saving your Workbook | ActiveWorkbook.Save |
ScreenUpdating | Application.ScreenUpdating = False / True |
Select Case statement |
Select Case Range("A1").Value Case 100, 150 ' = 100 OR 150 Range("B1").Value = Range("A1").Value Case 200 To 300, 400 To 500 ' = Between 200 and 300 OR between 400 and 500 Range("B2").Value = Range("A1").Value Case Else Range("B1").Value = 0 End Select |
Select Data Range |
Dim myLastRow As Long Dim myLastColumn As Long Range("A1").Select On Error Resume Next myLastRow = Cells.Find("*", [A1], , , xlByRows, xlPrevious).Row myLastColumn = Cells.Find("*", [A1], , , xlByColumns, xlPrevious).Column myRange = "a1:" & Cells(myLastRow, myLastColumn).Address Range(myRange).Select |
Sheets Hiding | Sheet1.Visible = xlSheetVeryHidden |
Text Edit |
MsgBox Left("abcd", 2) 'Displays
2 characters from Left MsgBox Right("abcd", 2) 'Displays 2 characters from Right MsgBox Len("abcd") 'Displays number of characters (Including space) |
Timer |
Application.Wait Now + TimeValue("00:00:05") MsgBox ("This was a 5 second delay") |
Time last save | MsgBox Excel.Application.ThisWorkbook.BuiltinDocumentProperties("Last Save Time") |
vbYesNo |
YesNo = MsgBox("This macro will ... Do you want to continue?", vbYesNo +
vbCritical, "Caution") Select Case YesNo Case vbYes 'Insert your "Yes" code here. Case vbNo 'Insert your "No" code here. End Select |
ada yang ingin saya tanyakan pak, mengenai excel vba. bagaimana mengcopy nama cell tertentu (ranged), ke cell tertentu pada sheet yang berbeda...
BalasHapusCoba dulu dengan merekam macro mas dan rasakan nikmatnya bermacro ria.
HapusCaranya dengan memilih View, Macro recording, dstnya.
ngeluuu
HapusContekannya (cheat sheet) sangat bermanfaat! Saya juga setuju memang kita perlu membuat file 'pribadi' yang berisi cheat sheet seperti ini,apalagi kalau masih belum terbiasa (seperti saya).
BalasHapussaya sangat membutuhkan bantuan para master ni,,saya sedang membuat sebuah sistem untuk pembayaran rekening,,tentang pelayanan yang saya lakukan di perusahaan kecil di sebuahh desa pak,,barangkali bisa bantu bnyak hal yang saya ingin tanyakan,,,boleh sya mnta email untuk mengirim file ataupun hal lainnya,,saya tunggu kabarnya,,
BalasHapusiar.zmy@gmail.com
Silakan layangkan kasus Anda ke milis Belajar-Excel di Yahoogroups.
HapusTeman-teman sy ingin membuat printah print sheet excel yang saya pilih. misalnya membuat tombol centang untuk memilih sheet yang saya pilih untuk di print.
BalasHapusBiasanya kalo cara manual cukup dengan CTRL + P, tapi agak rumit dngan sheet yang berjumlah banyak. tolong bantuannya. Sy sudah membuat tombol menu-menu tapi ngga tau isi prntah macronya...karena memilih sheet berarti ada beberapa pilihan..trims......kelautanpangkep@gmai.com
Silakan layangkan kasus Anda ke milis Belajar-Excel di Yahoogroups.
Hapussaya mau menanyakan kode Commanbutton untuk save data berbeda sheet.
BalasHapuscontoh kasusnya begini
saya membuat form pendaftaran untuk klinik.
di userformnya saya buat begini
nama
umur
bulan ( combobox ) januari ferbruari
nama poli ( combobox ) dalam,mata,orhtopedi
no bpjs
dll.
Sheetnya saya buat begini
sheet1MainMenu, Sheet2JANUARIPOLIDALAM, Sheet3FerbruaripoliMATA,Sheet4FerbruariPOLIDALAM, dan seterusnya
commanbutton nya saya buat nama SIMPAN..
pertanyaannya..
bagaimana cara menyimpan data tersebut ke masing2 sheet dengan 1 tombol SIMPAN..
jadi, begitu combobox1 NAMA Poli saya pilih Combobox2,Namabulan saya Pilih
dan klik simpan, semua data masuk ke sheet yg dimaksud..
Semoga sahabat sekalian ada yg bisa membantu permasalahan ini, terimakasih banyak sebelumnya..
contoh kasusnya bisa di download di sini Passwordnya (admin) http://www.4shared.com/file/2Ow4tHZice/Book1.html
Silakan layangkan kasus Anda ke milis Belajar-Excel di Yahoogroups.
HapusThanx udah berbagi..
BalasHapusTerima kasih , ini buat catatan saya , sangat berguna gan
BalasHapusmacro yang digunakan untuk manajemen pada ms excel apa pak ???
BalasHapusilmu bermanfaat semoga berkah
BalasHapusbagaimana caranya menyisipkan baris dengan kriterian terntu, misal kita ingin menyisipkan baris jika cell 1 tidak sama dengan cell 2.
BalasHapustrims
Kalau Boleh mohon kepada para master upload link untuk tutorail belajar VBA Excel.
BalasHapusSalam kenal Mr.kid
BalasHapussaya iwan.sebelumnya saya sering liat2 blog ini,sampai ada yang gunakan untuk pekerjaan saya,"Lapkeu(versi XL2003),yang ingin saya tanyakan bisakah GL nya menampilkan semua account COA lengkap dengan saldo awal dan Saldo akhirnya...terima kasih
Silakan layangkan kasus Anda ke milis Belajar-Excel di Yahoogroups.
Hapusgan saya mau nanya saya buat sheet yg di input menggunakn makro kemudian saya ingi print data yg ditambahkan dalam bentuk lampiran surat jadi pas saya input di tabel di lampiran yg berbentuk surat pun ter input dan bisa langsung di print gimana ya gan caranya mohon bantuannya
BalasHapusSilakan layangkan kasus Anda ke milis Belajar-Excel di Yahoogroups, berikut contoh file yang berisi hal2 yang ingin ditanyakan dan hasil yang diinginkan.
Hapusgan, saya mencoba menambah keterangan pada kolom lain mengenai jika pembelian dilakukan tertanggal 1 januari 2016, maka disebut dengan "pembelian Awal", dan jika pembelian dilakukan diatas tanggal 1 januari 2016, maka disebut dengan "pembelian lanjutan". Mohon bantuan informasinya gan...
BalasHapusKeren bgt
BalasHapushttp://pandaivb.blogspot.co.id
Keren bgt
BalasHapushttp://pandaivb.blogspot.co.id
Izin Share Bang, Bermanfaat ilmunya,
BalasHapuskalo gak keberatan juga ane mau share tutorial membuat form input data lainnya :
http://master-tutorialexpert.blogspot.co.id/2017/04/tutorial-membuat-form-input-data-di.html
teman teman saya mau tanya bagaimana scrip vba untuk menghindari data ganda pada userform ( userform absensi siswa ) jika menginput siswa yang sama hari itu supaya ada peringatan.. siswa bersangkutan sudah absen"
BalasHapusMohon dibantu teman-teman
BalasHapussaya praktek highlight vba row+colmn tapi hanya untuk 1 range.
Gimana cara nya bisa untuk 2 range tapi masih dalam sheet yang sama,
berikut contoh untuk 1 range :
Dim rowN As Integer, colN As Integer
Dim RArea As Range
Set RArea = Range("A1:Q10")
Cells.Interior.ColorIndex = 0
If Intersect(ActiveCell, RArea) Is Nothing Then Exit Sub
rowN = ActiveCell.Row
colN = ActiveCell.Column
Range(Cells(4, colN), Cells(rowN, colN)).Interior.ColorIndex = 37
Range(Cells(rowN, 1), Cells(rowN, colN)).Interior.ColorIndex = 37
nah, saya saya ingin highlight tersebut juga di range A18:Q22
Ubah code Set RArea menjadi :
BalasHapusSet RArea = Range("A1:Q10, A18:Q22")
Terima kasih pak Hendrik
HapusUbah code Set RArea menjadi :
BalasHapusSet RArea = Range("A1:Q10, A18:Q22")
Ubah code Set RArea menjadi :
BalasHapusSet RArea = Range("A1:Q10, A18:Q22")
Maaf terposting 3x
BalasHapusMaaf pak Hendrik dan teman-teman,
BalasHapuspertanyaan saya ubah, 2x range yang saya maksud adalah Pivot dari sebuah data.
1 range menampilkan Quantity, dan 1 range untuk Amount atau Price.
(range A11:Q13 adalah range kosong)
anggap aja kita pisah masing masing sheet, akan seperti berikut :
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim rowN As Integer, colN As Integer
Dim RArea As Range
Set RArea = Range("A6:Q9")
Cells.Interior.ColorIndex = 0
If Intersect(ActiveCell, RArea) Is Nothing Then Exit Sub
rowN = ActiveCell.Row
colN = ActiveCell.Column
Range(Cells(5, colN), Cells(rowN, colN)).Interior.ColorIndex = 37
Range(Cells(rowN, 1), Cells(rowN, colN)).Interior.ColorIndex = 37
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim rowN As Integer, colN As Integer
Dim RArea As Range
Set RArea = Range("A18:Q21")
Cells.Interior.ColorIndex = 0
If Intersect(ActiveCell, RArea) Is Nothing Then Exit Sub
rowN = ActiveCell.Row
colN = ActiveCell.Column
Range(Cells(17, colN), Cells(rowN, colN)).Interior.ColorIndex = 37
Range(Cells(rowN, 1), Cells(rowN, colN)).Interior.ColorIndex = 37
End Sub
Nah, saya akan gabung di 1 sheet