Excel ..?
18 Juli 2010
akhsan arsyan Memulai Belajar Macro , Otomatisasi dan Pemrogramanexcel , Macro
Excel , VBA , Visual Basic for Application9 Komentar
Sering kali kita bertanya pada diri sendiri, harus mulai dari mana ya, untuk belajar Macro dan VBA Excel ..?
Karena terlalu sering bertanya, akhirnya bingung dan malas untuk memulai. Padahal, hal pertama yang harus
dilakukan ketika ingin mencoba Makro dan VBA Excel adalah "Mulai mencoba". Nah, biar tidak bingung dan
terlalu bertanya-tanya, berikut adalah kiat-kiat jika ingin belajar Macro dan VBA Excel.
Excel memiliki alat yang didukung yaitu “Rekam Makro”. Alat ini akan membahas semua hal yang bisa kita
lakukan diexcel. Bahkan scrolling window excel pun akan terekam. Dengan merekam makro, kita bisa
memutakhirkan langkah-langkah yang diambil sekali dan selanjutnya kita dapat mengulanginya dengan makro.
Semua hal bisa kita dapatkan di sini .. Sekali lagi, semua hal .. Cuma butuh 1 modal saja ..! Sabar, tekun dan
teliti ..!
Nah, itu adalah tips untuk belajar Macro dan VBA Excel ..
Sebelumnya, tentu kita harus memiliki project dan project kita kali ini adalah:
Katakanlah, kita memiliki data penjualan harian dalam Excel. Dan setiap hari, akan ada 1 file excel. Maka bisa
dibayangkan ada berapa file excel dalam 1 tahun..?
Data penjualan ditiap file excelnya adalah sebagai berikut (ini cuma contoh, so kita sederhanakan saja ya..):
Dan Boss kita meminta supaya tiap-tiap file di atur formatnya agar rapi seperti berikut:
Seandainya ada ratusan file yang harus kita atur formatnya seperti diatas, alangkah membosankannya hidup
kita.. Nah, disinilah record macro akan menjadi penyelamat kita dari kebosanan.
Sudah siap untuk belajar..? Ah..! Belum siap kalo belum dibuka MS EXCEL nya..
Untuk contoh, saya sudah siapkan 5 file excel data penjualan seperti pada gambar sebelumnya. Untuk
mempermudah, maka datanya saya buat sama dan cuma tanggalnya saja yang berbeda. Yaitu tanggal 6 – 11
July 2010.
Dan sebagai persiapan dan untuk mempermudah kita akan memunculkan toolbar “visual basic” agar mudah
dijangkau. Normalnya, untuk mengoperasikan “record macro” kita harus membuka menu seperti gambar
dibawah:
Namun, untuk mempermudah, kita akan keluarkan floating toolbar visual basic. Caranya, pilih: Menu –> View –
> Toolbar –> check: visual basic.
Hasilnya, akan muncul floating toolbar visual basic seperti ini:
Sip.. Persiapan sudah selesai, mari kita mulai langkah-langkah belajar macro.
2. Klik tombol record Macro pada toolbar yang tadi kita munculkan. Dan akan muncul dialog window seperti ini:
Macro kita nantinya akan disimpan dengan nama “Macro1”. Kemudian klik OK.. Setelah kita mengklik OK,
maka kita dalam status merekam. Jadi, semua aktifitas kita di excel akan terekam. Jadi, jangan melakukan
apa-apa selain langkah sesuai tujuan kita.
4. Jika format sudah sesuai keinginan, maka stop macro recording dengan mengklik tombol stop.
Dengan kita men-stop macro recording, otomatis excel akan menyimpan macro dengan nama Macro1. Kalo
gak percaya, yok kita cek. Pilih menu: Tools –> Macro –> Macros.
Akan muncul window berikut:
Nah, ada Macro1 didalam list. Artinya, macro kita tadi sudah ter-save dan bisa digunakan setiap saat.
5. Selanjutnya, kita bisa jadikan macro yang sudah kita buat tadi untuk mengatur format di file-file excel yang
lainnya.
Caranya, file excel yang kita jadikan template tadi, jangan ditutup dulu. Biarkan masih terbuka. Lalu kita buka
file yang lainnya yang masih belum terformat. Dalam kondisi file yang belum terformat aktif, pilih menu: Tools
–> Macro –> Macros dan akan muncul window seperti pada gambar:
Pilih Macro1 (Macro yang tadi telah kita buat), dan klik RUN.
6. Taraaaaaa.. Seandainya kita mengikuti langkah-demi langkah seperti contoh, maka kita akan mendapatkan
tampilan seperti ini:
you..)
Di sisi kiri dalam "Project Window", klik kanan pada nama buku kerja
Anda dan masukkan modul baru .
Memformat
Pencetakan
Lembar kerja
Buku kerja
Tabel pivot
Bagan
Maju
Formula
Penting: Ini adalah Perpustakaan VBA Ultimate saya yang saya perbarui
setiap bulan dengan kode baru. Akan sangat bagus jika Anda menandai
halaman ini dan terus mengunjungi kode baru setiap kali dan pastikan
untuk membaca tentang Buku Kerja Makro Pribadi untuk menggunakan
kode ini di semua buku kerja.
Kode Dasar
Kode VBA ini akan membantu Anda untuk melakukan beberapa tugas
dasar dalam sekejap yang sering Anda lakukan di spreadsheet.
1. Tambahkan Nomor Seri
Kode makro ini akan membantu Anda untuk secara otomatis menambahkan
nomor seri di lembar Excel Anda.
Setelah Anda menjalankan makro ini, ia akan menampilkan kotak input
di mana Anda harus memasukkan nomor maks untuk nomor seri dan
setelah itu, ia akan memasukkan angka dalam kolom secara berurutan.
Sub AddSerialNumbers ()
For i = 1 To i
ActiveCell.Value = i
Selanjutnya saya
End Sub
2. Masukkan Banyak Kolom
Setelah Anda menjalankan makro ini, ia akan menampilkan kotak input
dan Anda harus memasukkan jumlah kolom yang ingin Anda masukkan.
Sub InsertMultipleColumns ()
Dim i Sebagai Integer
Dim j Sebagai Integer
ActiveCell.EntireColumn. Pilih
Pada Kesalahan GoTo Terakhir
i = InputBox ("Masukkan jumlah kolom untuk menyisipkan",
"Masukkan Kolom")
Untuk j = 1 Ke i
Pilihan. Pergeseran Masukkan : = xlToRight, CopyOrigin: =
xlFormatFromRightorAbove
Selanjutnya j
End Sub
Sub InsertMultipleRows ()
Dim i Sebagai Integer
Dim j Sebagai Integer
ActiveCell.EntireRow.Select
On Error GoTo Last
i = InputBox ("Masukkan jumlah kolom untuk disisipkan", "Masukkan
Kolom")
Untuk j = 1 Ke i
Seleksi. Pergeseran Masuk: = xlToDown, CopyOrigin: =
xlFormatFromRightorAbove
Next j
Last: Keluar Sub
End Sub
4. Kolom Fit Otomatis
Secara otomatis cocok dengan semua kolom di lembar kerja Anda.
Kode makro ini akan memilih semua sel di lembar kerja Anda dan secara
otomatis menyesuaikan semua kolom.
Sub AutoFitColumns ()
Cells.Pilih
Cells.EntireColumn.AutoFit
End Sub
Sub AutoFitRows ()
Cells.Pilih
Cells.EntireRow. AutoFit
End Sub
Sub RemoveWrapText ()
Cells.Select
Selection.WrapText = False
Cells.EntireRow.AutoFit
Cells.EntireColumn.AutoFit
End Sub
7. Unmerge Cells
Pilih sel Anda dan jalankan kode ini dan itu akan membatalkan
penggabungan semua sel dari seleksi dengan data Anda yang hilang.
Sub UnmergeCells ()
Selection.UnMerge
End Sub
8. Buka Kalkulator
Di jendela ada kalkulator khusus dan dengan menggunakan kode makro
ini Anda dapat membuka kalkulator itu langsung dari Excel untuk
perhitungan Anda.
Sub OpenCalculator ()
Application.ActivateMicrosoftApp Index: = 0
End Sub
Sub dateInHeader ()
Dengan ActiveSheet.PageSetup
.LeftHeader = ""
.CenterHeader = "& D"
.RightHeader = ""
.LeftFooter = ""
.CenterFooter = ""
.RightFooter = ""
End Dengan
ActiveWindow.View = xlNormalView
End Sub
Sub customHeader ()
Dim myText As Stringmy
Text = InputBox ("Masukkan teks Anda di sini", "Masukkan Teks")
Dengan ActiveSheet.PageSetup
.LeftHeader = ""
.CenterHeader = myText
.RightHeader = ""
.CenterFooter = ""
.CenterFooter = " ""
.RightFooter = ""
Akhiri Dengan
End Sub
Memformat Kode
Kode VBA ini akan membantu Anda untuk memformat sel dan rentang
menggunakan beberapa kriteria dan ketentuan tertentu.
11. Sorot Duplikat dari Pilihan
Makro ini akan memeriksa setiap sel pilihan Anda dan menyoroti nilai
duplikat .
Anda juga dapat mengubah warna dari kode.
Sub HighlightDuplicateValues ()
Dim myRange Sebagai Rentang
Dim myCell Sebagai Rentang
Set myRange = Pilihan
Untuk Setiap myCell Di myRange
Jika WorksheetFunction.CountIf (myRange, myCell.Value)> 1
Kemudian
myCell.Interior.Interior.ColorIndex = 36
End If
Next myCell
End Sub
Sub TopTen ()
Selection.FormatConditions.AddTop10
Selection.FormatConditions (Selection.FormatConditions.Count)
.SetFirstPriority
With Selection.FormatConditions (1)
.TopBottom = xlTop10Top
.Rank = 10
.Pargent = False
End
dengan Pilihan. ( Cormat ). Font
.Color = -16752384
.TintAndShade = 0
Berakhir Dengan
Seleksi.FormatConditions (1) .Interior
.PatternColorIndex = xlAutomatic .Color
= 13561798
.TintAndShade = 0
End With
Selection.FormatConditions (1) .StopIfTrue = FalseCritions
End
14. Sorot Named Ranges
Jika Anda tidak yakin tentang berapa rentang bernama yang Anda miliki
di lembar kerja Anda, maka Anda bisa menggunakan kode ini untuk
menyorot semuanya.
Sub HighlightRanges ()
Dim RangeName As Name
Dim HighlightRange As Range
On Error Lanjutkan Selanjutnya
Untuk Setiap RangeName Di ActiveWorkbook.Names
Set HighlightRange = RangeName.RefersToRange
HighlightRange.Interior.ColorIndex = 36
RangeName
End
Sub HighlightGreaterThanValues ()
Dim i As Integer
i = InputBox ( "Masukkan Lebih Besar dari Nilai", "Masukkan Nilai")
Selection.FormatConditions.Delete
Selection.FormatConditions.Add Jenis: = xlCellValue, Operator: =
xlGreater, Formula1: = i
Seleksi. FormatConditions (Selection.FormatConditions.Count)
.SetFirstPriority
With Selection.FormatConditions (1)
.Font.Color = RGB (0, 0, 0)
.Interior.Color = RGB (31, 218, 154)
Berakhir Dengan
Sub End
Sub HighlightLowerThanValues ()
Dim i As Integer
i = InputBox ( "Masukkan lebih rendah dari Nilai", "Masukkan Nilai")
Selection.FormatConditions.Delete
Selection.FormatConditions.Add Jenis: = xlCellValue, Operator: =
xlLower, Formula1: = i
Seleksi. FormatConditions (Selection.FormatConditions.Count)
.SetFirstPriority
With Selection.FormatConditions (1)
.Font.Color = RGB (0, 0, 0)
.Interior.Color = RGB (217, 83, 79)
Berakhir Dengan
Sub Akhir
Sub highlightNegativeNumber ()
Dim Rng Sebagai Rentang
Untuk Setiap Rng Dalam Seleksi
Jika WorksheetFunction.IsNumber (Rng) Maka
Jika Rng.Value <0 Kemudian
Rng.Font.Color = -16776961
End If
End Jika End If
Next
End Sub
Sub highlightValue ()
Dim myStr Sebagai String
Dim myRg Sebagai Range
Dim myTxt Sebagai String
Dim myCell Sebagai Range
Dim myChar As String
Dim I As Long
Dim J As Long
On Error Resume Next
Jika ActiveWindow.RangeSelection.Count> 1 Kemudian
myTxt = ActiveWindow.RangeSelection .AddressLocal
Else
myTxt = ActiveSheet.UsedRange.AddressLocal
End Jika
LInput: Setel myRg = Application.InputBox ("silakan pilih rentang
data:", "Seleksi Dibutuhkan", myTxt,,,,, 8)
Jika myRg Bukan Apa-apa Maka
Keluar
Jika myRg.Areas.Count> 1 Kemudian
MsgBox "tidak mendukung banyak kolom" GoToLInput
Berakhir Jika
Jika myRg.Columns.Count <> 2 Lalu
MsgBox "rentang yang dipilih hanya dapat berisi dua kolom"
GoTo LInput
End If
For I = 0 To myRg.Rows.Count-1
myStr = myRg.Range ("B1"). Offset (I, 0) .Nilai
dengan myRg.Range ("A1"). Offset (I, 0)
.Font.ColorIndex = 1
Untuk J = 1 To Len (.Text)
Mid (.Text, J, Len (myStr)) = myStrThen
.Characters (J, Len (myStr )). Font.ColorIndex = 3
Berikutnya
Akhir Dengan
Berikutnya saya
End Sub
Sub highlightCommentCells ()
Selection.SpecialCells (xlCellTypeComments) .Pilih
Selection.Style = "Note"
End Sub
Sub highlightAlternateRows ()
Dim rng Sebagai Rentang
Untuk Setiap rng Dalam Seleksi.
Baris Jika rng.RowMod 2 = 1 Kemudian
rng.Style = "20% -Accent1"
rng.Value = rng ^ (1/3)
Else
End Jika
rng
End Selanjutnya Sub
Sub SorotanMisspelledCells ()
Dim rng Sebagai Rentang
Untuk Setiap rng Di ActiveSheet. Digunakan
Jika Tidak Aplikasi. Periksa Ejaan (kata: = rng. Teks) Lalu
rng.Style = "Buruk" Akhir Jika
Selanjutnya rng
End Sub
Sub highlightErrors ()
Dim rng As Range
Dim i Sebagai Integer
Untuk Setiap rng Di ActiveSheet.UsedRange
If WorksheetFunction.IsError (rng) Kemudian
i = i + 1 rng.Style = "bad"
End If
Next rng
MsgBox "Ada total" & i & "kesalahan dalam lembar kerja ini."
End Sub
Sub highlightSpecificValues ()
Dim rng Sebagai Rentang
Dim i Sebagai Integer
Dim c Sebagai Varian
c = InputBox ("Masukkan Nilai Ke Sorotan")
Untuk Setiap rng Dalam ActiveSheet. Digunaakan
Jika rng = c Lalu
rng.Style = "Catatan"
i=i+1
Akhiri Jika
Selanjutnya dengan
MsgBox "Ada total" & i & "" & c & "di lembar kerja ini."
End Sub
Sub highlightMaxValue ()
Dim rng Sebagai Rentang
Untuk Setiap rng Dalam Pemilihan
Jika rng = WorksheetFunction.Max (Pilihan) Lalu
rng.Style = "Bagus"
Berakhir Jika
Selanjutnya rng
End Sub
Sub highlightMinValue ()
Dim rng Sebagai Rentang
Untuk Setiap rng Dalam Pilihan
Jika rng = WorksheetFunction.Min (Pilihan) Lalu
rng.Style = "Bagus"
Berakhir Jika
Selanjutnya rng
End Sub
Sub columnDifference ()
Range ("H7: H8, I7: I8"). Pilih
Selection.ColumnDifferences (ActiveCell) .Pilih
Selection.Style = "Bad"
End Sub
Sub rowDifference ()
Range ("H7: H8, I7: I8"). Pilih
Selection.RowDifferences (ActiveCell) .Pilih
Selection.Style = "Bad"
End Sub
Kode Pencetakan
Kode makro ini akan membantu Anda mengotomatiskan beberapa tugas
pencetakan yang selanjutnya dapat menghemat banyak waktu.
30. Cetak Komentar
Gunakan makro ini untuk mengaktifkan pengaturan untuk
mencetak komentar sel di akhir halaman.
Katakanlah Anda memiliki 10 halaman untuk dicetak, setelah
menggunakan kode ini Anda akan mendapatkan semua komentar pada
halaman terakhir ke-11.
Sub printComments ()
Dengan ActiveSheet.PageSetup
.printComments = xlPrintSheetEnd
Berakhir dengan
End Sub
Sub printNarrowMargin ()
Dengan ActiveSheet.PageSetup
.LeftMargin = Aplikasi
.InchesToPoints (0.25)
.RightMargin = Application.InchesToPoints (0.25
)
.TopMargin = Application.InchesToPoints (0.75)
.BottomMargin = Application.InchesToin.Info (0.3)
.FooterMargin = Aplikasi.InchesToPoints (0.3)
Berakhir dengan
ActiveWindow.SelectedSheets.PrintOutCopies: = 1, Susun: = Benar,
AbaikanPrintAreas: = Salah
End Sub
End Sub
Sub printCustomSelection ()
Dim
startpageAs Integer Dim endpageAs Integer startpage
= InputBox ("Silakan Masukkan nomor Halaman Mulai.", "Masukkan
Nilai")
Jika Tidak WorksheetFunction.IsNumber (halaman awal) Kemudian
MsgBox "Nomor Halaman Mulai Tidak Valid. Silakan coba lagi.",
"Kesalahan"
Keluar dari Sub
End Jika
endpage = InputBox ("Silakan Masukkan nomor Halaman Akhir.",
"Masukkan Nilai")
Jika Tidak WorksheetFunction.IsNumber (endpage) Kemudian
MsgBox "Nomor Halaman Akhir Tidak Valid. Silakan coba lagi.",
"Kesalahan"
Keluar dari Sub
Akhir Jika
Pilihan.PrintOutFrom: = halaman awal, Ke: = halaman akhir, Salinan: =
1, Susun: =
Sub Akhir Benar
Sub HideWorksheet ()
Dim ws Sebagai Worksheet
Untuk Setiap ws Dalam ThisWorkbook.Worksheets
If ws.Name <> ThisWorkbook.ActiveSheet.Name Then
ws.Visible = xlSheetHidden
End Jika
Selanjutnya ws
End Sub
Sub UnhideAllWorksheet ()
Dim ws Sebagai Worksheet
Untuk Setiap ws Di ActiveWorkbook.Worksheets
ws.Visible = xlSheetVisible
Selanjutnya ws
End Sub
Sub DeleteWorksheets ()
Dim ws As Worksheet
Untuk Setiap ws Dalam ThisWorkbook.Worksheets
If ws.name <> ThisWorkbook.ActiveSheet.name Kemudian
Application.isplayAlerts = False
ws.Delete
Application.DisplayAlerts = True
End Jika
Berikutnya berakhir
Sub Sub
Sub ProtectAllWorskeets ()
Dim ws As Worksheet
Dim ps As String
ps = InputBox ("Masukkan Kata Sandi.", VbOKCancel)
Untuk Setiap ws Di ActiveWorkbook.Worksheets
ws.Protect Password: = ps
Next ws
End Sub
Sub Resize_Charts ()
Dim i Sebagai Integer
Untuk i = 1 Ke ActiveSheet.ChartObjects.Count
Dengan ActiveSheet.ChartObjects (i)
.Lebar = 300 .Tinggi
= 200
Berakhir Dengan
Selanjutnya saya
End Sub
39. Masukkan Beberapa Lembar Kerja
Anda bisa menggunakan kode ini jika Anda ingin menambahkan
beberapa lembar kerja dalam buku kerja Anda dalam satu pemotretan.
Ketika Anda menjalankan kode makro ini, Anda akan mendapatkan
kotak input untuk memasukkan jumlah total lembar yang ingin Anda
masukkan.
Sub InsertMultipleSheets ()
Dim i Sebagai Integer
i = InputBox ("Masukkan jumlah sheet untuk disisipkan.", "Masukkan
Beberapa Lembar") Sheets.
Tambahkan Setelah: = ActiveSheet, Count: = i
End Sub
Sub ProtectWS ()
ActiveSheet.Protect "mypassword", True, True
End Sub
Sub UnprotectWS ()
ActiveSheet.Unprotect "mypassword"
End Sub
Sub SortWorksheets ()
Dim i Sebagai Integer
Dim j Sebagai Integer
Dim iAnswer As VbMsgBoxResult
iAnswer = MsgBox ("Urutkan Spread dalam Urutan Menaik?" & Chr (10)
_
& "Mengklik Tidak akan mengurutkan Urutan Turunan", _
vbYesNoCancel + vbQuestion + vbDefaultButton1, "Sorting
Worksheets")
For i = 1 To Sheets.Count
For j = 1 To Sheets.Count - 1
Jika iAnswer = vbYa Kemudian
If UCase $ (Sheets (j) .Name)> UCase $ (Sheets (j + 1 ) .Nama)
Kemudian Spread
(j) .Pindah Setelah: = Spread (j + 1)
Berakhir Jika
ElseIf iAnswer = vbTidak Kemudian
Jika UCase $ (Sheets (j) .Name) <UCase $ (Sheets (j + 1) .Name )
Kemudian
Lembar (j) .Pindah Setelah:= Lembar (j + 1)
End If
End If
Next j
Next i
End Sub
Sub lockCellsWithFormulas ()
Dengan ActiveSheet
.Unprotect
.Cells.Locked = False
.Cells.SpecialCells (xlCellTypeFormulas) .Locked = True
.Protect AllowDeletingRows: = True
End With
End Sub
44. Hapus semua Lembar Kerja Kosong
Jalankan kode ini dan itu akan memeriksa semua lembar kerja di buku
kerja aktif dan menghapus jika lembar kerja kosong.
Sub deleteBlankWorksheets ()
Dim Ws Sebagai Worksheet
Pada Error Lanjutkan
Aplikasi Selanjutnya. ScreenUpdating =
Aplikasi Salah. Tampilan Pemain : Salah
Untuk Setiap Ws Dalam Aplikasi. Lembar Kerja
Jika Aplikasi.WorksheetFunction.CountA (Ws.UsedRange) = 0
Kemudian
Ws.Delete
End Jika Aplikasi
Selanjutnya
.ScreenUpdating = True
Application.DisplayAlerts =
Sub True End
Sub UnhideRowsColumns ()
Columns.EntireColumn.Hidden =
Baris Salah.EntireRow.Hidden =
Sub Akhir Salah
Sub SaveWorkshetAsPDF ()
Dimws Sebagai Worksheet
Untuk Setiap ws Di Worksheetsws.ExportAsFixedFormat xlTypePDF,
"ENTER-FOLDER-NAME-HERE" & ws.Name & ".pdf" Nextws
End Sub
47. Nonaktifkan Page Breaks
Untuk menonaktifkan page break gunakan kode ini. Ini hanya akan
menonaktifkan istirahat halaman dari semua buku kerja terbuka.
Sub DisablePageBreaks ()
Dim wbAs Workbook
Dim wksAs Worksheet
Application.ScreenUpdating = Salah
Untuk Setiap wbIn Application.Workbooks
Untuk Setiap ShtIn wb.WorksheetsSht.DisplayPageBreaks = Salah
Next Sht
Next wb
Application.ScreenUpdating = True
End Sub
Sub FileBackUp ()
ThisWorkbook.SaveCopyAs Nama file: = ThisWorkbook.Path & _
"" & Format (Tanggal, "mm-dd-yy") & "" & _
ThisWorkbook.name
Sub Akhir
Sub CopyWorksheetToNewWorkbook ()
ThisWorkbook.ActiveSheet.Copy _
Sebelum: = Workbooks.Add.Worksheets (1)
End Sub
Sub Send_Mail ()
Dim OutApp Sebagai Objek
Dim OutMail Sebagai Objek
Set OutApp = CreateObject ("Outlook.Application")
Set OutMail = OutApp.CreateItem (0)
Dengan OutMail
.to = "Sales@FrontLinePaper.com"
.Subject = "Laporan Pertumbuhan "
.Body =" Halo Tim, Silakan temukan Laporan Pertumbuhan terlampir. "
.Attachments.Add ActiveWorkbook.FullName
.display
End Dengan
Set OutMail = Tidak ada
Set OutApp = Nothing
End Sub
Sub OpenWorkbookAsAttachment ()
Application.Dialogs (xlDialogSendMail) .Tampilkan
End Sub
Sub auto_open ()
MsgBox "Selamat Datang di ExcelChamps & Terima kasih telah
mengunduh file ini."
End Sub
Sub auto_close ()
MsgBox "Sampai jumpa! Jangan lupa untuk memeriksa hal-hal keren
lainnya di excelchamps.com"
End Sub
Sub VisibleWorkbooks ()
Dim book As Workbook
Dim i Sebagai Integer
Untuk Setiap buku Di Workbooks
Jika buku. Disimpan = Salah Lalu
i=i+1
Berakhir Jika
buku Berikutnya
MsgBox saya
End Sub
Sub HideSubtotals ()
Dim pt Sebagai PivotTable
Dim pf Sebagai PivotField
Pada Kesalahan Lanjutkan
Set Berikutnya pt = ActiveSheet.PivotTable
(ActiveCell.PivotTable.name)
Jika pt Tidak Apa-apa Maka
MsgBox "Anda harus menempatkan kursor Anda di dalam PivotTable."
Keluar Sub
Akhir Jika
Untuk Setiap pf Dalam pt.PivotFields
pf.Subtotals (1) = True
pf.Subtotals (1) = Salah
Next pf
End Sub
Sub CloseAllWorkbooks ()
Dim wbs Sebagai Workbook
Untuk Setiap wbs Di Workbooks
wbs.Tutup SaveChanges: = True
Next wb
End Sub
Sub UpdatePivotTableRange ()
Dim Data_Sheet As Worksheet
Dim Pivot_Sheet As Worksheet
Dim StartPoint As Range
Dim DataRange As Range
Dim PivotName As String
Dim NewRange As String
Dim LastCol As Long
Dim lastRow As Long
'Set Pivot Table & Source Worksheet
Set Data_Sheet "PivotTableData3")
Set Pivot_Sheet = ThisWorkbook.Worksheets ( "Pivot3")
'Masukkan dalam Pivot Table Nama
PivotName = "PivotTable2"
' Defining Staring Titik & Dynamic Range
Data_Sheet.Activate
Set StartPoint = Data_Sheet.Range ( "A1")
LastCol = StartPoint .End (xlToRight) .Column
DownCell = StartPoint.End (xlDown) .Row
Setel DataRange = Data_Sheet.Range (StartPoint, Cells (DownCell,
LastCol))
NewRange = Data_Sheet.Name & "!" & DataRange.Address
(ReferenceStyle: = xlR1C1)
'Ubah Tabel Pivot Tabel Rentang Sumber Data Alamat
Pivot_Sheet.PivotTable (PivotName). _
ChangePivotCache ActiveWorkbook. _
PivotCaches.Create (SourceType: = xlDatabase, SourceData: =
NewRange)
'Pastikan Tabel Pivot Refreshed
Pivot_Sheet.PivotTable (PivotName) .RefreshTable
' Pesan Lengkap
Pivot_Sheet. MivBox
"sekarang tabel Anda diperbarui"
End Sub
Sub aktifkanGetPivotData ()
Application.GenerateGetPivotData =
Sub True End
menonaktivasiGetPivotData ()
Application.GenerateGetPivotData =
Sub Akhir Salah
Kode Bagan
Gunakan kode VBA ini untuk mengelola bagan di Excel dan menghemat
banyak waktu Anda.
61. Ubah Jenis Bagan
Kode ini akan membantu Anda mengonversi jenis bagan tanpa
menggunakan opsi bagan dari tab.
Yang harus Anda lakukan hanyalah menentukan jenis yang ingin Anda
konversi.
Sub ChangeChartType ()
ActiveChart.ChartType = xlColumnClustered
End Sub
62. Tempelkan Bagan sebagai Gambar
Kode ini akan membantu Anda untuk mengubah bagan Anda menjadi
gambar.
Anda hanya perlu memilih bagan Anda dan menjalankan kode ini.
Sub ConvertChartToPicture ()
ActiveChart.ChartArea.Copy
ActiveSheet.Range ("A1"). Pilih
ActiveSheet.Pictures.Paste.Paste . Pilih
Sub End
Sub AddChartTitle ()
Dim i Sebagai Variant
i = InputBox ("Silakan masukkan judul bagan Anda", "Judul Bagan")
Pada Kesalahan GoTo
ActiveChart Terakhir. SetElement (msoElementChartTitleAboveChart)
ActiveChart.ChartTitle.Text = i
Terakhir:
Keluar Sub
Sub Sub
Kode Lanjutan
Beberapa kode yang dapat Anda gunakan untuk membentuk sebelumnya
tugas canggih di spreadsheet Anda.
64. Simpan Rentang yang Dipilih sebagai PDF
Jika Anda ingin menyembunyikan semua subtotal, jalankan saja kode
ini.
Pertama-tama, pastikan untuk memilih sel dari tabel pivot Anda dan
kemudian jalankan makro ini.
Sub HideSubtotals ()
Dim pt Sebagai PivotTable
Dim pf Sebagai PivotField
Pada Kesalahan Lanjutkan
Set Berikutnya pt = ActiveSheet.PivotTable
(ActiveCell.PivotTable.name)
Jika pt Tidak Apa-apa Maka
MsgBox "Anda harus menempatkan kursor Anda di dalam PivotTable."
Keluar Sub
Akhir Jika
Untuk Setiap pf Dalam pt.PivotFields
pf.Subtotals (1) = True
pf.Subtotals (1) = Salah
Next pf
End Sub
Sub TableofContent ()
Dim I Long Selama
Error Lanjutkan
Aplikasi Selanjutnya.DisplayAlerts =
Lembar Kerja Palsu ("Daftar Isi"). Hapus
Application.DisplayAlerts =
Kesalahan Sejati KeKembali ke 0
IniWorkbook.Sheets.Tambahkan Sebelumnya: =
ThisWorkbook.Worksheets (1)
ActiveSheet.Name = "Daftar Isi"
Untuk i = 1 Untuk Sheets.Count
Dengan ActiveSheet
.Hyperlinks.Add _
Anchor: = ActiveSheet.Cells (i, 1), _
Alamat: = "", _
SubAddress: = "'" & Sheets (i) .Name & "'! A1",
_TipsTip: = Sheets (i) .Name, _
TextToDisplay: = Sheets (i) .Nama
Berakhir Dengan
Berikutnya saya
End Sub
Sub PasteAsPicture ()
Application.CutCopyMode =
Pilihan Salah. Salin
ActiveSheet.Pictures.Paste.Select
End Sub
Sub LinkedPicture ()
Selection.Copy
ActiveSheet.Pictures.Paste (Tautan: = True) .Pilih
Sub End
Sub Bicara ()
Pilihan. Bicara
End Sub
Sub DataForm ()
ActiveSheet.ShowDataForm
End Sub
70. Gunakan Goal Seek
Goal Seek bisa sangat membantu bagi Anda untuk menyelesaikan
masalah yang kompleks.
Pelajari lebih lanjut tentang pencarian sasaran dari sini sebelum Anda
menggunakan kode ini.
Sub GoalSeekVBA ()
Dim Targetkan Long
On Error GoTo Errorhandler
Target = InputBox ("Masukkan nilai yang diperlukan", "Masukkan
Nilai") Lembar Kerja ("Goal_Seek"). Aktifkan
Dengan ActiveSheet .Range ("C7").
GoalSeek_ Goal: = Target, _
ChangingCell: = Rentang ("C2")
Berakhir Dengan
Keluar Sub
Errorhandler: MsgBox ("Maaf, nilai tidak valid.")
End Sub
Sub SearchWindow32 ()
search_string = permintaan
'Hapus komentar pada baris berikut untuk versi Windows 64 dan beri
komentar pada versi Windows 32'
chromePath = "C: Program
FilesGoogleChromeApplicationchrome.exe "
End Sub
Kode Formula
Kode-kode ini akan membantu Anda menghitung atau mendapatkan
hasil yang sering Anda lakukan dengan fungsi dan formula lembar kerja.
72. Ubah semua Rumus menjadi Nilai
Konversi rumus menjadi nilai.
Saat Anda menjalankan makro ini, ia akan dengan cepat
mengubah rumus menjadi nilai absolut .
Sub ConvertToValues ()
Dim MyRange Sebagai Rentang
Dim MyCell Sebagai Kisaran
Select Case MsgBox ( "Anda Bisa tidak Batalkan Aksi ini." & "Bintang
Workbook Pertama?", VbYesNoCancel, "Alert")
Case Apakah = vbYes
ThisWorkbook.Save
Kasus Apakah = vbCancel
Keluar dari Sub
End Pilih
Set MyRange = Pilihan
Untuk Setiap MyCell Di MyRange
Jika MyCell.HasFormula Kemudian
MyCell.Formula = MyCell.Value
End Jika
Next MyCell
End Sub
Sub RemoveSpaces ()
Dim myRange As Range
Dim myCell Sebagai Range
Select Case MsgBox ("Anda Tidak Dapat Membatalkan Tindakan Ini." &
"Simpan Buku Kerja Pertama?", _
VbYesNoCancel, "Alert")
Koper Is = vbYesThisWorkbook.Save
Case Is = vbCancel
Keluar dari Sub
End Pilih
Set myRange = Pilihan
Untuk Setiap myCell Di myRange
Jika Tidak IsEmpty (myCell) Kemudian
myCell = Potong (myCell)
End If
Next myCell
End Sub
Sub degreeSymbol ()
Dim rng Sebagai Rentang
Untuk Setiap rng Dalam Pemilihan rng.
Pilih
Jika ActiveCell <> "" Kemudian
If IsNumeric (ActiveCell.Value) Kemudian
ActiveCell.Value = ActiveCell.Value & "°"
End If
End Jika End If
Next
End Sub
Sub DataForm ()
ActiveSheet.ShowDataForm
End Sub
Sub ActivateA1 ()
Jika Application.ReferenceStyle = xlR1C1 Kemudian
Application.ReferenceStyle = xlA1
Else
Application.ReferenceStyle = xlA1
End If
End Sub
Sub TimeStamp ()
Dim i Sebagai Integer
Untuk i = 1 Sampai 24
ActiveCell.FormulaR1C1 = i & ": 00"
ActiveCell.NumberFormat = "[$ -409] h: mm AM / PM; @"
ActiveCell.Offset (RowOffset: = 1, ColumnOffset: = 0). Pilih
Berikutnya i
End Sub
Sub date2day ()
Dim tempCell Sebagai Range
Selection.Value = Selection.Value
Untuk Setiap tempCell Dalam Seleksi
Jika IsDate (tempCell) = True Kemudian
Dengan tempCell
.Value = Day (tempCell)
.NumberFormat = "0"
Berakhir Dengan
Akhir Jika
tempCell
Akhir berikutnya Sub
81. Ubah Tanggal menjadi Tahun
Kode ini akan mengkonversi tanggal menjadi tahun.
Sub date2year ()
Dim tempCell Sebagai Rentang
Selection.Value = Selection.Value
Untuk Setiap tempCell Dalam Seleksi
Jika IsDate (tempCell) = True Kemudian
Dengan tempCell.
Nilai = Tahun (tempCell)
.NumberFormat = "0"
Berakhir Dengan
Akhir Jika
tempCell
Akhir berikutnya Sub
Sub removeTime ()
Dim Rng Sebagai Rentang
Untuk Setiap Rng Dalam Seleksi
Jika IsDate (Rng) = Benar Lalu
Rng.Value = VBA.Int (Rng.Value)
Berakhir Jika Pilihan
Berikutnya.NumberFormat
= "dd-mmm-yy"
End Sub
Sub removeDate ()
Dim Rng Sebagai Rentang
Untuk Setiap Rng Dalam Pemilihan
Jika IsDate (Rng) = True Kemudian
Rng.Value = Rng.Value - VBA.Fix (Rng.Value)
End If
NextSelection.NumberFormat = "hh: mm: ss am / pm "
End Sub
Sub convertUpperCase ()
Dim Rng Sebagai Rentang
Untuk Setiap Rng Dalam Pemilihan
Jika Application.WorksheetFunction.IsText (Rng) Kemudian
Rng.Value = UCase (Rng)
Berakhir Jika
Berikutnya
Akhir Sub
Sub convertLowerCase ()
Dim Rng Sebagai Rentang
Untuk Setiap Rng Dalam Pemilihan
Jika Application.WorksheetFunction.IsText (Rng) Kemudian
Rng.Value = LCase (Rng)
Berakhir Jika
Berikutnya
Akhir Sub
Sub convertTextCase ()
Dim Rng Sebagai Rentang
Untuk Setiap Rng Seleksi
Jika WorksheetFunction.IsText (Rng) Kemudian
Rng.Value = UCase (Kiri (Rng, 1)) & LCase (Kanan (Rng, Len (Rng) -1))
End Jika
Next rng
End Sub
Sub removeChar ()
Dim Rng Sebagai Rentang
Dim rc Sebagai String
rc = InputBox ("Karakter untuk Ganti", "Masukkan Nilai")
Untuk Setiap Rng Dalam Pilihan
Seleksi. Ganti Apa: = rc, Penggantian: = "" Akhir
Selanjutnya
Sub
89. Word Count dari Seluruh Worksheet
Ini dapat membantu Anda menghitung semua kata dari lembar kerja.
Sub Word_Count_Worksheet ()
Dim WordCnt Panjang
Dim rng Sebagai Rentang
Dim S Sebagai String
Dim N Selama Panjang
Untuk setiap rng Di ActiveSheet.UsedRange.Cells
S = Application.WorksheetFunction.Trim (rng.Text)
N=0
Jika S <> vbNullString Then
N = Len (S) - Len (Ganti (S, "", "")) + 1
Akhir Jika
WordCnt = WordCnt + N
Berikutnya rng
MsgBox "Ada total" & Format (WordCnt, "#, ## 0") & "kata-kata di
lembar kerja aktif"
End Sub
Sub removeApostrophes ()
Selection.Value = Selection.Value
End Sub
Sub removeDecimals ()
Dim lnumber As Double
Dim lResult As Long
Dim rng As Range
Untuk Setiap rng Dalam Pilihan
rng.Value = Int (rng)
rng.NumberFormat = "0"
Selanjutnya rng
End Sub
Sub multiplyWithNumber ()
Dim rng Sebagai Rentang
Dim c Sebagai Integer c = InputBox ("Masukkan angka ke beberapa",
"Input Diperlukan")
Untuk Setiap rng Dalam Pemilihan
Jika WorksheetFunction.IsNumber (rng) Lalu
rng.Value = rng * c
Else
End Jika
Next rng
End Sub
Sub addNumber ()
Dim rngAs Rentang
DimiAs Integer
i = InputBox ("Masukkan angka ke beberapa", "Input Diperlukan")
Untuk Setiap rng Dalam Pemilihan
Jika WorksheetFunction.IsNumber (rng) Kemudian
rng.Value = rng + i
Lain
Berakhir Jika
rng
Akhir Akhir Sub
94. Hitung Root Square
Untuk menghitung akar kuadrat tanpa menerapkan rumus, Anda dapat
menggunakan kode ini.
Itu hanya akan memeriksa semua sel yang dipilih dan mengkonversi
angka ke akar kuadratnya.
Sub getSquareRoot ()
Dim rngAs Rentang
Dim i Sebagai Integer
Untuk Setiap rng Dalam Seleksi
Jika WorksheetFunction.IsNumber (rng) Kemudian
rng.Value = Sqr (rng)
Else
End Jika
Selanjutnya rng
End Sub
Sub getCubeRoot ()
Dim rng As Range
Dimi Sebagai Integer
Untuk Setiap rng Dalam Seleksi
Jika WorksheetFunction.IsNumber (rng) Kemudian
rng.Value = rng ^ ( 1/3 )
Else
End If
Nextrng
End Sub
Sub convertToNumbers ()
Dim rng Sebagai Rentang
Selection.Value = Selection.Value
Untuk Setiap rng Dalam Pilihan
Jika Tidak WorksheetFunction.IsNonText (rng) Kemudian
rng.Value = WorksheetFunction.Arabic (rng)
Akhir Jika
Berikutnya rng
End Sub
Sub removeNegativeSign ()
Dim rngAs Rentang
Selection.Value = Selection.Value
Untuk Setiap rngIn Seleksi
Jika WorksheetFunction.IsNumber (rng)
Kemudian rng.Value = Abs (rng)
End If
Next rng
End Sub
Sub replaceBlankWithZero ()
Selection.Value = Selection.Value
rng.Value = "0"
Lain
Berakhir jika
Rng berikutnya
End Sub
Ke-100
Sekarang giliranmu.
Iya nih.
Saya ingin Anda membagikan kode makro favorit Anda dengan saya
yang Anda gunakan setiap hari untuk menghemat waktu Anda. Pada
akhirnya, saya hanya ingin mengatakan bahwa beberapa kode ini saya
gunakan setiap hari untuk meningkatkan produktivitas saya dan saya
yakin itu juga akan membantu Anda dalam pekerjaan Anda.