mbak Emi,

1) Mengapa Events harus di turn off dan turn on semula setelah selesai?
>> *Untuk kasus ini hanya karena kebiasaan saja.*
Umumnya pengaturan properti enableevent tergantung event yang sudah
digunakan (ada script-nya).
Coba bayangkan begini :
- Event worksheet change (setiap ada pengubahan nilai dalam cell maka
prosedur event ini dijalankan) telah berisi suatu proses tertentu
- *prosedur lain* berisi kegiatan proses untuk menulis (misal *copy paste*)
ke sheet yang sudah punya event worksheet change tersebut
- ketika properti application.enableevents tidak di-off-kan lebih dulu,
maka prosedur event change akan dijalankan setiap kegiatan oleh prosedur
lain tersebut
- bisa jadi hal ini akan memperlambat proses atau malah membuat hasil tidak
sesuai (tergantung proses dalam event change-nya)

2) Apakah fungsi .Parent.Calculate dan bagaimana ia bekerja?
>> *Untuk kasus ini hanya karena kebiasaan saja.*
Baris ini jika ditulis lengkap menjadi :
Sheet2.Range("a4").Parent.Calculate
Bahasa manusianya :
"mohon dilakukan kalkulasi (Calculate) pada induknya (Parent) range a4 yang
ada di Sheet2"
Jadi, calculate adalah kalkulasi, yaitu perintah untuk melakukan kalkulasi.
Kenapa di kalkulasi ?
Setelah pasang formula dan tidak tahu apakah setting calculation excel saat
itu automatic atau sedang manual, maka dipaksa untuk lakukan kalkulasi.
Bisa jadi file tertentu yang dibuka selain file yang sedang dikerjakan, ada
suatu baris yang mengubah setting calculataion menjadi manual.

Siapa yang dikalkulasi ?
>> Induknya range A4 yang ada di sheet2
Loh berarti kan si Sheet2 itu sendiri ?
>> iya, dan memang bisa diganti dengan :
sheet2.calculate
>> hanya saja, baris itu (.Parent.Calculate) bekerja pada suatu pointer
yang telah ditunjuk oleh with dibeberapa baris sebelumnya.
Artinya, jika kelak ingin mengubah potongan proses ini beralih ke sheet
lain dengan range lain, maka cukup mengganti baris :
with Sheet2.Range("a4")
sedangkan baris lainnya tidak perlu dipikirkan lagi
>> kalau pengennya sekedar pendek script-nya, tentu penggunaan
sheet2.calculate lebih oke. Tapi kalau nanti alur proses untuk hal tersebut
berubah ke sheet lain, maka harus mengganti baris-baris yang berbunyi
with Sheet2.Range("a4")
dan
sheet2.calculate

Wassalam,
Kid.


2012/11/26 Emi <[email protected]>

> **
>
>
> Terima kasih Pak Kid,
>
> Saya mau tanya.
>
> 1) Mengapa Events harus di turn off dan turn on semula setelah selesai?
> 2) Apakah fungsi Parent.Calculate dan bagaimana ia bekerja?
>
>
> Terima kasih.
>
> _Emi Lestari
>
>
>
>
> With Application                                        'pada aplikasi
>         .ScreenUpdating = False                                 'turnoff
> refresh tampilan
>         .EnableEvents = False                                   'turnoff
> event
>
>         'hitung record berdasar data numerik di kolom D sheet Input
>         lRec = .WorksheetFunction.Count(Sheet1.Range("d1").EntireColumn)
>         If lRec > 0 Then                                        'ada record
>             With Sheet2.Range("a4")                                 'pada
> header target
>                 .CurrentRegion.Offset(4).EntireRow.Delete
>           'hapus record data lama
>                 Sheet3.Range("a5").EntireRow.Copy .Offset(1).Resize(lRec)
>           'copy formula baru
>                 .Parent.Calculate
>           'kalkulasi sheet
>                 .CurrentRegion.Offset(4).Value =
> .CurrentRegion.Offset(4).Value     'di-values-ken
>             End With
>  'selesai pada header target
>         End If                                                  'akhir
> blok cek ada record
>
>         .EnableEvents = True                                    'turnon
> event
>         .ScreenUpdating = True                                  'turnon
> refresh tampilan
>     End With                                                'selesai pada
> aplikasi
>
>   ------------------------------
> *From:* Mr. Kid <[email protected]>
> *To:* [email protected]
> *Sent:* Sunday, November 25, 2012 4:19 PM
> *Subject:* Re: [belajar-excel] Menulis formula di makro
>
>
> Dimohon file lampiran pada posting berikutnya tidak melebihi batas
> peraturan milis.
>
> mbak Emi,
>
> File terlampir memanfaatkan sebuah sheet berisi template formula alias
> formula yang bisa di-copy ke sheet target.
> Prosesnya :
> 1. menghitung jumlah record input (berdasar kolom D)
> 2. membersihkan hasil lama yang di target
> 3. copy formula dari template formula ke sheet target sebanyak jumlah
> record di input
> 4. di-values-ken
>
> Wassalam,
> Kid.
>
>
> 2012/11/23 Emi <[email protected]>
>
> **
>
>
> Guru dan teman BeExcel,
> Data di sheet ini adalah hasil input manual di sheet "InputArea"
> Saya mau mempelajari bagaimana  menulis makro sebagai ganti kepada
> formula .
> Artinya semua formula di sheet ini ditulis di VBE dan bukan di sheet ini.
>  Terima kasih
>  -Emi Lestari
>
>
>
>
>
>
>

Kirim email ke