Selasa, 05 Juni 2012

ExcelMacro - cetak kwitansi untuk banyak transaksi (2) penjelasan macro

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