Anda di halaman 1dari 3

ExcelMacro - gabung data sheet cabang (2) contoh file dan penjelasan singkat

code macro
melanjutkan postingan sebelumnya excelmacro-gabung-data-sheet-cabang, kali ini ane akan
menjelaskan
singkat alur proses code macro, berikut :
1) memberikan nama modul macro dengan sebutan gabung()
Sub gabung()
...
End Sub
2) mendeklarasikan variabel type long, yang nantinya digunakan untuk menampung baris akhir
data di sheet
Gabung dan Cabang (penjelasan type data lihat dimari gan >> vb-visual-basic-tipe-datavariabel)
Dim brsAkh, akhBrs As Long
3) mengisikan jam mulai proses macro pada range J4
Range("J4").Value = Format(Now, "hh:mm:ss")

4) mengisikan baris terakhir (baris paling bawah yang terisi) sheet Gabung ke variabel brsAkh
brsAkh = Range("B" & Rows.Count).End(xlUp).Row + 1
5) jika variabel brsAkh nilainya lebih besar dari 4, maka range A5 s/d E baris ke brsAkh (baris
terakhir
sheet Gabung) dikosongkan isinya. Ingat pada artikel sebelumnya gabung-data-sheet-cabang
bahwa
tampilan pada sheet Gabung, header data terletak pada baris 4, artinya jika baris terakhir yang
telah
dimasukan ke variabel brsAkh nilainya lebih dari 4, berarti ada data bekas proses macro
sebelumnya,

sehingga data ini harus dihapus agar tidak terjadi dobel data jika macro diproses berulangulang.
Detail penjelasan fungsi IF / perumpamaan / percabangan ada di mari >> if-macro.
If brsAkh > 4 Then
Range("A5:E" & brsAkh).Value = Empty
End If

6) Jika sebelumnya menjelaskan fungsi IF, dalam langkah selanjutnya akan dipraktekan fungsi
perulangan
untuk penjelasan dasarnya bisa dicek >> perulangan FOR. Setelah paham dasar-dasar fungsi
perulangan
FOR, kode macro selanjutnya akan saya terjemahkan dalam bahasa Indonesia, mungkin
kalimatnya agak
aneh, tapi jika agan paham dasar-dasar fungsi perulangan pasti agan akan paham penjelasan
dibawah,
(tulisan warna abu2)
'Untuk variabel i yang berisi nilai mulai dari 1 s/d jumlah sheet, nomer sheet dimulai dari kiri
kanan,
For i = 1 To Sheets.Count
'Jika 6 dari kiri nama sheet ke i huruf kecilnya adalah "cabang" (tanpa petik) maka
'** LCase berfungsi merubah data type string/teks menjadi huruf kecil semua, pada macro
ini fungsi
untuk memastikan bahwa apapun format kapital huruf nama sheet ke i, selama kata
pertamanya
adalah "cabang" maka dianggap memenuhi kondisi IF
If Left(LCase(Sheets(i).Name), 6) = "cabang" Then
'fungsi IF ke 1
'Mengisikan variabel akhBrs dengan nilai baris terakhir yang ada isinya pada kolom B di
sheet ke i
akhBrs = Sheets(i).Range("B" & Rows.Count).End(xlUp).Row
'Jika variabel akhBrs nilai lebih dari 1 maka
'** akhBrs bernilai 1 artinya tidak ada data pada sheet ke i (sheet yang namanya
berawalan
dengan kata "cabang" (header ada dibaris 1)
If akhBrs > 1 Then
'fungsi IF ke 2

'Lakukan copy sheet ke i kolom B baris ke 2 s/d kolom D baris ke brsAkh (isinya
variabel
BrsAkh)
Sheets(i).Range("B2:D" & akhBrs).Copy _
'Pastekan copy data ke sheet Gabung kolom B baris setelah baris terakhir yang ada
isinya
Range("B" & Range("B" & Rows.Count).End(xlUp).Row + 1)
'Mengisikan nama sheet Cabang ke kolom E baris data yang baru ditambahkan
Range("E" & Range("E" & Rows.Count).End(xlUp).Row + 1 & ":E" & _
Range("B" & Rows.Count).End(xlUp).Row).Value = Sheets(i).Name
End If
End If
Next i
Sementara ini dulu penjelasannya,

'penutup fungsi IF ke 2
'penutup fungsi IF ke 1