Langsung saja berikut penjelasan dari postingan selumnya
macro-cetak-kwitansi-untuk-banyak-transaksi.
1) Menamai prosedur cetak kwitansi dengan nama
CetakKwt
Sub CetakKwt()
...
End Sub
2) Buat variabel dengan nama lBrsAkh dan JamAwl
Dim lBrsAkh As Long
Dim JamAwl
3) Variabel
JamAwl diisi dengan waktu saat mulai macro dijalankan dan variabel lBrsAkh diisi dengan baris
data pada sheet
transaksi.
JamAwl = Time()
lBrsAkh = Range("A" & Rows.Count).End(xlUp).Row
4) Jika variabel lBrsAkh (baris terakhir data di sheet
Transaksi) isinya kurang dari 7 (header data ada di -
ris ke 6, artinya jika baris terakhir kurang dari 7 berati data kosong/tidak ada data sama sekali untuk di -
cetak), maka dimunculkan kota pesan peringatan bahwa tidak ada data transaksi yang ada di cetak.
If lBrsAkh < 7 Then
MsgBox "Tidak ada transaksi yang akan dicetak", vbInformation, "Info"
Exit Sub
End If
5) Sheet
Kwitansi diaktifkan atau dipilih.
Sheets("Kwitansi").Select
6) Ingat penjelasan nomer 4, yaitu header data transaksi pada sheet
Transaksi ada di baris ke 6, jadi data
pertama transaksi ada di baris 7, sedangkan baris terakhirnya adalah nilai yang ada di variabel
lBrsAkh.
Fungsi perulangan
For ... To ... Next lebih detailnya bisa lihat artikel
bentuk-pengulangan-for-next.
For i = 7 To lBrsAkh
...
Next i
7) Code macro dibawah adalah untuk mengisikan data transaksi pada sheet
Transaksi, mulai baris ke 7 -
sampai dengan baris terakhir (nilai pada variabel lBrsAkh). Penjelasan detail kegunaan statement
With ...
End With adalah untuk menyingkat penulisan object agar tidak diketik berulang-ulang.
Misal code macro
.Cells(i, 3).Value (di depan ada tanda titik), sebenarnya jika ditulis lengkap menjadi -
Sheets("Transaksi").Cells(i, 3).Value , namun code
Sheets("Transaksi") tidak lagi ditulis berulang karena
sudah terwakili oleh statement
With Sheets("Transaksi"). Statement
With ini berlaku untuk semua penulis-
as code (object) yang diawali dengan titik.
With Sheets("Transaksi")
Range("D3").Value = "'" & .Cells(i, 1).Value
Range("E5").Value = .Cells(i, 3).Value
Range("E7").Value = WorksheetFunction.Proper(Terbilang(.Cells(i, 5).Value))
Range("E9").Value = .Cells(i, 2).Value
Range("D16").Value = .Cells(i, 5).Value
Range("H12").Value = "Jakarta, " & Format(Date, "DD MMMM YYYY")
Range("H18").Value = "( " & .Cells(i, 4).Value & " )"
9) Fungsi
IF ini adalah untuk mengecek opsi yang dipilih oleh user macro, apakah kwitansi akan dicetak ke -
kertas atau hanya di preview dilayar. Ingat code
.Range("C3") sebenarnya merujuk pada isi range
C3 di
sheet
Transaksi karena penulisan dimulai dengan tanda titik, penulisan lengkapnya sebagai berikut
Sheets("Transaksi").Range("C3") yang artinya isinya range
C3 pada sheet
Transaksi.
(Note : penulisan .Range("C3") sama artinya dengan .Range("C3").value )
If .Range("C3") = "Print" Then
ActiveSheet.PrintOut
Else
ActiveSheet.PrintPreview
End If
End With
9) Setelah melakukan proses cetak/preview, maka sheet
Transaksi diaktifkan atau dipilih kembali, selanjut
nya memunculkan pesan selesai dan lama waktu proses.
Sheets("Transaksi").Select
MsgBox "Proses cetak kwitansi selesai" & Chr(13) & "Waktu : " & Format(Time() - JamAwl, _
"hh:mm:ss"), vbInformation, "info"
Sekian penjelasan singkatnya, maaf kalo agak kurang jelas, hehe
Read More..