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
Tidak ada komentar:
Posting Komentar