Panduan VBA Tingkat Lanjut Untuk MS Excel

Jika Anda baru memulai VBA , maka Anda harus mulai mempelajari panduan VBA kami untuk pemula(VBA guide for beginners) . Tetapi jika Anda seorang ahli VBA berpengalaman dan Anda sedang mencari hal-hal yang lebih canggih yang dapat Anda lakukan dengan VBA di Excel , maka teruslah membaca.

Kemampuan untuk menggunakan pengkodean VBA di (VBA)Excel membuka seluruh dunia otomatisasi. Anda dapat mengotomatiskan penghitungan di Excel , tombol tekan, dan bahkan mengirim email. Ada lebih banyak kemungkinan untuk mengotomatisasi pekerjaan sehari-hari Anda dengan VBA daripada yang mungkin Anda sadari.

Panduan VBA Lanjutan Untuk Microsoft Excel(Advanced VBA Guide For Microsoft Excel)

Tujuan utama penulisan kode VBA di (VBA)Excel adalah agar Anda dapat mengekstrak informasi dari spreadsheet, melakukan berbagai perhitungan di atasnya, dan kemudian menulis hasilnya kembali ke spreadsheet

Berikut ini adalah penggunaan VBA yang paling umum di Excel .

  • Impor(Import) data dan lakukan perhitungan
  • Hitung(Calculate) hasil dari pengguna menekan tombol
  • Email hasil perhitungan ke seseorang

Dengan tiga contoh ini, Anda seharusnya dapat menulis berbagai kode VBA Excel tingkat lanjut Anda sendiri.(Excel VBA)

Mengimpor Data dan Melakukan Perhitungan(Importing Data and Performing Calculations)

Salah satu hal yang paling umum orang menggunakan Excel untuk melakukan perhitungan pada data yang ada di luar Excel . Jika Anda tidak menggunakan VBA , itu berarti Anda harus mengimpor data secara manual, menjalankan penghitungan, dan mengeluarkan nilai tersebut ke lembar atau laporan lain.

Dengan VBA , Anda dapat mengotomatiskan seluruh proses. Misalnya, jika Anda memiliki file CSV baru yang diunduh ke direktori di komputer Anda setiap hari Senin(Monday) , Anda dapat mengonfigurasi kode VBA agar berjalan saat pertama kali membuka spreadsheet pada Selasa(Tuesday) pagi.

Kode impor berikut akan menjalankan dan mengimpor file CSV ke dalam spreadsheet (CSV)Excel Anda .

Dim ws As Worksheet, strFile As String

Set ws = ActiveWorkbook.Sheets("Sheet1")
Cells.ClearContents

strFile = “c:\temp\purchases.csv”

With ws.QueryTables.Add(Connection:="TEXT;" & strFile, Destination:=ws.Range("A1"))
     .TextFileParseType = xlDelimited
     .TextFileCommaDelimiter = True
     .Refresh
End With

Buka alat pengeditan Excel VBA dan pilih objek (Excel VBA)Sheet1 . Dari kotak dropdown objek dan metode, pilih Worksheet dan Activate . Ini akan menjalankan kode setiap kali Anda membuka spreadsheet.

Ini akan membuat fungsi Sub Worksheet_Activate() . Rekatkan kode di atas ke dalam fungsi itu.

Ini menetapkan lembar kerja aktif ke Sheet1 , membersihkan lembar, menghubungkan ke file menggunakan jalur file yang Anda tetapkan dengan variabel strFile , dan kemudian loop Dengan(With) siklus melalui setiap baris dalam file dan menempatkan data ke dalam lembar mulai dari sel A1 .

Jika Anda menjalankan kode ini, Anda akan melihat bahwa data file CSV diimpor ke spreadsheet kosong Anda, di Sheet1 .

Mengimpor hanyalah langkah pertama. Selanjutnya, Anda ingin membuat header baru untuk kolom yang akan berisi hasil perhitungan Anda. Dalam contoh ini, katakanlah Anda ingin menghitung pajak 5% yang dibayarkan atas penjualan setiap barang.

Urutan tindakan yang harus dilakukan kode Anda adalah:

  1. Buat kolom hasil baru bernama pajak(taxes) .
  2. Ulangi kolom unit terjual(units sold) dan hitung pajak penjualan.
  3. Tulis hasil penghitungan ke baris yang sesuai di lembar.

Kode berikut akan menyelesaikan semua langkah ini.

Dim LastRow As Long
Dim StartCell As Range
Dim rowCounter As Integer
Dim rng As Range, cell As Range
Dim fltTax As Double

Set StartCell = Range("A1")

'Find Last Row and Column
LastRow = ws.Cells(ws.Rows.Count, StartCell.Column).End(xlUp).Row
Set rng = ws.Range(ws.Cells(2, 4), ws.Cells(LastRow, 4))

rowCounter = 2
Cells(1, 5) = "taxes"

For Each cell In rng
fltTax = cell.Value * 0.05
Cells(rowCounter, 5) = fltTax
rowCounter = rowCounter + 1
Next cell

Kode ini menemukan baris terakhir di lembar data Anda, lalu menetapkan rentang sel (kolom dengan harga jual) menurut baris data pertama dan terakhir. Kemudian kode tersebut melewati setiap sel tersebut, melakukan penghitungan pajak dan menuliskan hasilnya ke dalam kolom baru Anda (kolom 5).

Rekatkan kode VBA di atas di bawah kode sebelumnya, dan jalankan skripnya. Anda akan melihat hasilnya muncul di kolom E.

Sekarang, setiap kali Anda membuka lembar kerja Excel Anda , itu akan otomatis keluar dan mendapatkan salinan data terbaru dari file CSV . Kemudian, ia akan melakukan perhitungan dan menulis hasilnya ke lembar. Anda tidak perlu melakukan apa pun secara manual lagi!

Hitung Hasil Dari Tekan Tombol(Calculate Results From Button Press)

Jika Anda lebih suka memiliki kontrol lebih langsung saat penghitungan berjalan, daripada berjalan secara otomatis saat lembar terbuka, Anda bisa menggunakan tombol kontrol sebagai gantinya.

Tombol kontrol(Control) berguna jika Anda ingin mengontrol perhitungan mana yang digunakan. Misalnya, dalam kasus yang sama seperti di atas, bagaimana jika Anda ingin menggunakan tarif pajak 5% untuk satu wilayah, dan tarif pajak 7% untuk wilayah lain?

Anda dapat mengizinkan kode impor CSV yang sama berjalan secara otomatis, tetapi biarkan kode penghitungan pajak berjalan saat Anda menekan tombol yang sesuai.

Menggunakan spreadsheet yang sama seperti di atas, pilih tab Pengembang(Developer) , dan pilih Sisipkan(Insert) dari grup Kontrol(Controls) di pita. Pilih tombol tekan (push button) Kontrol ActiveX(ActiveX Control) dari menu tarik-turun.

Gambar tombol tekan ke bagian mana pun dari lembar jauh dari tempat data apa pun akan pergi.

Klik kanan tombol tekan, dan pilih Properties . Di jendela Properties , ubah Caption menjadi apa yang ingin Anda tampilkan kepada pengguna. Dalam hal ini mungkin Calculate 5% Tax .

Anda akan melihat teks ini tercermin pada tombol itu sendiri. Tutup jendela properti(properties) , dan klik dua kali tombol itu sendiri. Ini akan membuka jendela editor kode, dan kursor Anda akan berada di dalam fungsi yang akan berjalan saat pengguna menekan tombol.

Tempelkan kode penghitungan pajak dari bagian di atas ke dalam fungsi ini, dengan menjaga pengganda tarif pajak pada 0,05. Ingatlah untuk menyertakan 2 baris berikut untuk menentukan lembar aktif.

Dim ws As Worksheet, strFile As String

Set ws = ActiveWorkbook.Sheets("Sheet1")

Sekarang, ulangi prosesnya lagi, buat tombol tekan kedua. Buat caption Calculate 7% Tax .

Klik dua kali(Double-click) tombol itu dan rekatkan kode yang sama, tetapi buat pengganda pajak 0,07.

Sekarang, tergantung tombol mana yang Anda tekan, kolom pajak akan dihitung sesuai dengan itu.

Setelah selesai, Anda akan memiliki kedua tombol tekan di lembar Anda. Masing-masing akan memulai penghitungan pajak yang berbeda dan akan menuliskan hasil yang berbeda ke dalam kolom hasil. 

Untuk mengirim teks ini, pilih menu Pengembang(Developer) , dan pilih Mode Desain(Design Mode) dari grup Kontrol(Controls) di pita untuk menonaktifkan Mode Desain(Design Mode) . Ini akan mengaktifkan tombol tekan. 

Coba pilih setiap tombol tekan untuk melihat bagaimana kolom hasil “pajak” berubah.

Hasil Perhitungan Email ke Seseorang(Email Calculation Results to Someone)

Bagaimana jika Anda ingin mengirimkan hasil pada spreadsheet kepada seseorang melalui email?

Anda dapat membuat tombol lain yang disebut Email Sheet to Boss menggunakan prosedur yang sama di atas. Kode untuk tombol ini akan melibatkan penggunaan objek CDO Excel(Excel CDO) untuk mengonfigurasi pengaturan email SMTP , dan mengirimkan hasilnya melalui email dalam format yang dapat dibaca pengguna.

Untuk mengaktifkan fitur ini, Anda harus memilih Tools and References . Gulir ke bawah ke Microsoft CDO untuk Windows 2000 Library(Microsoft CDO for Windows 2000 Library) , aktifkan, dan pilih OK .

Ada tiga bagian utama pada kode yang perlu Anda buat untuk mengirim email dan menyematkan hasil spreadsheet.

Yang pertama adalah menyiapkan variabel untuk menampung subjek, alamat Ke dan Dari(From) , dan badan email.

Dim CDO_Mail As Object
Dim CDO_Config As Object
Dim SMTP_Config As Variant
Dim strSubject As String
Dim strFrom As String
Dim strTo As String
Dim strCc As String
Dim strBcc As String
Dim strBody As String
Dim LastRow As Long
Dim StartCell As Range
Dim rowCounter As Integer
Dim rng As Range, cell As Range
Dim fltTax As Double
Set ws = ActiveWorkbook.Sheets("Sheet1")
strSubject = "Taxes Paid This Quarter"
strFrom = "[email protected]"
strTo = "[email protected]"
strCc = ""
strBcc = ""
strBody = "The following is the breakdown of taxes paid on sales this quarter."

Tentu saja, tubuh harus dinamis tergantung pada hasil apa yang ada di lembar, jadi di sini Anda perlu menambahkan loop yang melewati rentang, mengekstrak data, dan menulis baris pada satu waktu ke tubuh.

Set StartCell = Range("A1")

'Find Last Row and Column
LastRow = ws.Cells(ws.Rows.Count, StartCell.Column).End(xlUp).Row
Set rng = ws.Range(ws.Cells(2, 4), ws.Cells(LastRow, 4))

rowCounter = 2
strBody = strBody & vbCrLf

For Each cell In rng
     strBody = strBody & vbCrLf
     strBody = strBody & "We sold " & Cells(rowCounter, 3).Value & " of " & Cells(rowCounter, 1).Value _
     & " for " & Cells(rowCounter, 4).Value & " and paid taxes of " & Cells(rowCounter, 5).Value & "."
     rowCounter = rowCounter + 1
Next cell

Bagian selanjutnya melibatkan pengaturan pengaturan SMTP sehingga Anda dapat mengirim email melalui server SMTP Anda . Jika Anda menggunakan Gmail , ini biasanya alamat email Gmail Anda, kata sandi Gmail Anda, dan server (Gmail)SMTP Gmail(Gmail SMTP) (smtp.gmail.com).

Set CDO_Mail = CreateObject("CDO.Message") 
On Error GoTo Error_Handling
Set CDO_Config = CreateObject("CDO.Configuration")
CDO_Config.Load -1
Set SMTP_Config = CDO_Config.Fields

With SMTP_Config
.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.gmail.com"
.Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1
.Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = "[email protected]"
.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "password"
.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 465
.Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = True
 .Update
End With

With CDO_Mail
     Set .Configuration = CDO_Config
End With

Ganti [email protected] dan kata sandi dengan detail akun Anda sendiri.

Terakhir, untuk memulai pengiriman email, masukkan kode berikut.

CDO_Mail.Subject = strSubject
CDO_Mail.From = strFrom
CDO_Mail.To = strTo
CDO_Mail.TextBody = strBody
CDO_Mail.CC = strCc
CDO_Mail.BCC = strBcc
CDO_Mail.Send

Error_Handling:
If Err.Description <> "" Then MsgBox Err.Description

Catatan(Note) : Jika Anda melihat kesalahan transportasi saat mencoba menjalankan kode ini, kemungkinan karena akun Google Anda memblokir "aplikasi yang kurang aman" agar tidak berjalan. Anda harus mengunjungi halaman pengaturan aplikasi yang kurang aman(less secure apps settings page) dan mengaktifkan fitur ini.

Setelah itu diaktifkan, email Anda akan dikirim. Ini adalah tampilan orang yang menerima email hasil yang Anda buat secara otomatis.

Seperti yang Anda lihat, ada banyak hal yang sebenarnya dapat Anda otomatisasi dengan Excel VBA . Cobalah bermain-main dengan cuplikan kode yang telah Anda pelajari di artikel ini dan buat otomatisasi VBA unik Anda sendiri.(VBA)



About the author

Saya pengguna Google chrome dan telah bertahun-tahun. Saya tahu cara menggunakan fitur browser secara efektif dan dapat menangani semua jenis halaman web yang mungkin Anda temui. Saya juga memiliki pengalaman dengan alat keamanan keluarga termasuk Google Family Safety, sebuah aplikasi yang memungkinkan Anda untuk melacak aktivitas anak-anak Anda di internet.



Related posts