(men)Dongeng lagi ni yee ?..

Perintah yg ada di dalam prosedur EVENT ini akan JALAN SENDIRI
(ostosmastis)
KALAU SHEET (yg di modulenya ada "beginian" nya) menderita *di DeActivate*
(=baru saja aktif lalu si user atau program mengaktifkan sheet lain)
  Maksodnya = agar perintah didalamnya (mengupdate nilai MAX bagi
SpinButton)
  terjalankan otomatis ketika ada orang membuka dan mengedit data di sheet
DATA, lalu
  meninggalkannya, gitu loch...
Private Sub Worksheet_Deactivate()

disiapkan 2 peubah di memory (mem. variables) bernama dTabel berjenis
kelamin Range
dan T berjeniskelamin Long (bilangan Long Integer)
   Dim dTabel As Range, T As Long

Object Range dTabel yg saat itu masih sebagai Nothing sekarang di Set
(di-Assigned
/ DIDAPUK / di SURUH MENJADI: Perwakilan Range D4 yg diperluas seluas
data yg dapat dijangkau tanpa terhalang baris/kolom kosong (currentregion),
tapiii di geser
ke bawah dua langkah kolom
( artinya dua baris teratas pada current region yg didongengkan tadi = tidak
dipakai/ tidak
termasuk range yg bernama varable dTabel, & ketambahan 2 baris kosong di
bawahnya
(lha namanya  'kan GESER (offset)  tanpa di ReSIZE)
   Set dTabel = Me.Range("D4").CurrentRegion.Offset(2, 0)

Variable T  diisi dengan tinggi (banyaknya baris) pada *range dTabel*dikurangi
*2*
Pengurangan 2 adalah dua baris kosong dlm tabel bagian bawah, ya kan ?
Maksudnya agar dengan nilai T seperti itu NANTINYA  dTabel merujuk tabel
tepat pada
area datanya saja tidak lebih, tidak kurang !!
   T = dTabel.Rows.Count - 2

 SpinButton diberi nilai MIN = 1 dan diberi nilai MAX = T
(maksodnya.. nilai MAX pada SpinButton agar = banyaknya record (baris data)
di dTabel
gitu loch..
   Sheets("contoh surat").SpinButton1.Min = 1
   Sheets("contoh surat").SpinButton1.Max = T
batas berakhirnya prosedur ini
End Sub

'--------------

Perintah yg ada di dalam prosedur EVENT ini *akan Ostosmastis JALAN* jika
Tombol bernama *Print1_Button *menderita diceklik
 Private Sub Print1_Button_Click()
    ' langsung Cetak ke Printer
    Me.PrintOut
End Sub

'-------------

Perintah yg ada di dalam prosedur EVENT ini *akan Ostosmastis JALAN* jika
Tombol bernama *Print2_Button* menderita diceklik
Private Sub Print2_Button_Click()
Soal Dim-dim-an sudah dijelaskan di atas Oke ? (okeh)
   Dim i As Long

dimulai sebuah* loop* (serangkaian aksi / operasi yg akan diulang-ulang !
perulangannya mulai dari bilangan ke (nilai cell N11) sampai bilangan ke
(nilai cell N13)

*biar ndak bingung, kita berikan illustrasi begini *

for i = 1 to 10 atau lengkapnya
for i = 1 to 10 Step *+*1   (soale step-mundur (minus) juga ada
(Nilai Step baru perlu dituliskan jika bernilai negatip atau encreament-nya
BUKAN 1)

perulangan akan terjadi 10 kali
setiap step,  nilai i yg semula = 1 menaik 1 terus menerus menuju 10

for i = 10001 to 10002
 perulangan akan terjadi CUMA 2 kali
setiap step,  nilai i yg semula = 10001 menaik 1 "terus menerus" menuju
10002
Paham kan ! Kalau anda faham anda telah menjadi Fahmi (orang yg faham!)
   For i = Range("N11") To Range("N13")

Cell N2 diisi dengan nilai i (nilai perulangan, biasanya berupa nomor urut )

*maksudnya* (ini sudah diluar makronya ya..)
di Worksheet, cell *N1* kan sudah kita beri PURBOWASESO (kekuasaan untuk
bertindak apa saja)
terutama untuk mengontrol tampilnya data, karena dia akan dijadikan RowIndex
pada
rumus-rumus Penampil Data.  N1 sendiri merupakan Linked Cell dari Spinbutton
SpinnButoon hanya bertuga menggampangkan anda mengubah ubah nilai N1 secara
sekuensial

Nah dengan NILAI N1 diubah menjadi *i* dan setiap step nilai i NAIK 1, maka
penampil data tentu
akan secara sequensial menampilkan data tabel,  record demi record, tetapi
terbatas dari
nilai pembatas di cell N11 dan N13 saja .
       Range("N2") = i

Begitu data yg tampil telah berganti (gara-gara berubahnya N2
maka tukang cetak sudah tidak sabar langsung: CETAK! gitu ajah.. GPTL (Gak
Pake tunggu Lama)
        Me.*PrintOut*

Dengan diberi tanda ' (aphostrof)  didepannya;  maka perintah ini berubah
menjadi sekedar
Comment bukan Statement VBA,  barangkali saja kapan kapan mo dipakai (test)
lagi
     ' Me.PrintPreview

 batas perulangan per step (maksodnya: jika step belum tuntas
maka perintah kembali lagi ke baris paling atas dlm BOK perulangan!
   Next i

Batas berakhirnya prosedur
End Sub

Opo maneh ? yo

Mudah-mudahan dongengannya ndak terlalu keluar dari pakem...
dan maksud 'penerangan' bukan malah menjadi 'penggelapan'...
kalau urusannya sampai KPK..  bisa repottt...




2011/7/27 Yusril Ramadani <[email protected]>

> **
>
>
> Dear Mba Siti dan Pakar Excell semua
>
> Terima kasih untuk bantuannya, sungguh sangat membantu dan mempermudah
> kerjaan saya
> Tapi bolehkah saya bertanya lagi
>
> Kalau saya mau buat *beberapa sheet yang bisa diprint langusung* seperti
> sheet surat itu macronya gimana ya ?
>  Terus boleh dijelaskan ga arti formula dibawah, pengen banget bisa create
> seperti itu sendiri
>
> Terima kasih sebelumnya
>
> Private Sub Worksheet_Deactivate()
>    Dim dTabel As Range, T As Long
>    Set dTabel = Me.Range("D4").CurrentRegion.Offset(2, 0)
>    T = dTabel.Rows.Count - 2
>    Sheets("contoh surat").SpinButton1.Min = 1
>    Sheets("contoh surat").SpinButton1.Max = T
> End Sub
>
>
> 2 ada di module sheet FORM surat
>
> Private Sub Print1_Button_Click()
>     Me.PrintPreview
>    ' Me.PrintOut
> End Sub
>
> Private Sub Print2_Button_Click()
>    Dim i As Long
>    For i = Range("N11") To Range("N13")
>        Range("N2") = i
>        Me.PrintPreview
>       ' Me.PrintOut
>    Next i
> End Sub
>

Kirim email ke