Sambil menunggu file lampiran beserta contoh data yang bisa di-generate
saat buka file atau saat mulai proses.
Pak Lukman,
Prosedur Test_01 lebih lambat dari Test_02 pada kasus ini adalah karena
penggunaan methods select yang terlalu intensif.
Coba amati bagian loop dengan For Next. Test_01 melakukan loop berdasar
nomor urut cell yang diproses, sedangkan formula dipasang dengan
menggunakan offset 1 baris dari cell terakhir yang dipasangi formula. Oleh
sebab itu dibutuhkan proses Select baris berikutnya setelah memasang
formula. Test_02 melakukan loop berdasar nomor baris excel cell yang
diproses.
Bagaimana kalau dicoba agar test_01 juga menggunakan cara test_02 dalam
merujuk cell yang dipasangi formula.
Kira-kira caranya begini :
Bagian :
For i = 1 To Rng.Rows.Count
ActiveCell.Offset(0, 2).FormulaR1C1 = "=TEXT(RC[-2],""dd/mm/yy"")"
ActiveCell.Offset(1, 0).Select
Next i
diganti menjadi :
With activecell
For i = 1 To Rng.Rows.Count
.Offset(i-1, 2).FormulaR1C1 = "=TEXT(RC[-2],""dd/mm/yy"")"
Next i
end with
Coba di-run berulang-ulang.
Setidaknya ada peningkatan walau sedikit
Kemudian, coba juga dengan pemasangan langsung ke banyak cell sekaligus :
Bagian :
For i = 1 To Rng.Rows.Count
ActiveCell.Offset(0, 2).FormulaR1C1 = "=TEXT(RC[-2],""dd/mm/yy"")"
ActiveCell.Offset(1, 0).Select
Next i
atau bagian : (jika sudah bukan aslinya lagi)
With activecell
For i = 1 To Rng.Rows.Count
.Offset(i-1, 2).FormulaR1C1 = "=TEXT(RC[-2],""dd/mm/yy"")"
Next i
end with
diubah menjadi : (jadi 1 baris saja)
Rng.Offset(0, 2).FormulaR1C1 = "=TEXT(RC[-2],""dd/mm/yy"")"
kemudian coba di-run berulang kali.
Untuk memeriksa waktu proses, bisa menggunakan fungsi Timer dalam susunan
sebagai berikut :
dim dblTime as double
dbltime=timer
'prosesnya disini
dbltime=timer-dbltime
msgbox "Done in " & dbltime & " second.",vbinformation,"myProcess"
Wassalam,
Kid.
On Sat, Nov 24, 2012 at 12:11 PM, lkm jktind <[email protected]> wrote:
> Saya masih belajar.
> Tanya : cara test_01 waktu nya : 11:53:56 selesai 11:54:01
> cara test_02 waktunya : 11:54:17 selesai 11:54:17
> apa yg penyebabnya . jadi lambat dari cara tes_01 ?
>
> Sub Tes_01()
> Dim Rng As Range
> Dim i As Long
> 'Application.ScreenUpdating = False
> 'Application.EnableEvents = False
> Sheets("Pertanyaan 2").Select
> Range("A2").Select
> Set Rng = Range("A2", Range("A65000").End(xlUp))
> Cells(2, 5) = Time
> For i = 1 To Rng.Rows.Count
> ActiveCell.Offset(0, 2).FormulaR1C1 = "=TEXT(RC[-2],""dd/mm/yy"")"
> ActiveCell.Offset(1, 0).Select
> Next i
> 'Application.ScreenUpdating = True
> 'Application.EnableEvents = True
> Cells(2, 6) = Time
> End Sub
>
> Option Explicit
> Sub tes_02()
> Dim r As Long
> Dim s As Long
> Worksheets(2).Select
> Cells(2, 1).Select
> s = Cells(Rows.Count, 1).End(xlUp).Row
> Range(Cells(2, 7), Cells(s, 10)).ClearContents
> Cells(2, 9) = Time
> For r = 2 To s
> Cells(r, 7) = Left(Cells(r, 1), 10)
> Cells(r, 8) = Mid(Cells(r, 1), 11, 10)
> Next
> Cells(2, 10) = Time
> End Sub
>
>
> salam
>
> Lukman
>
>
> --- Mods ---
> File lampiran dicekal karena melebihi 250KB.
> Contoh data tidak perlu sampai ribuan. Jika membutuhkan contoh data yang
> banyak untuk uji kecepatan proses, coba create contoh data dengan VBA.
> Dengan demikian filesize bisa dijaga tetap sesuai peraturan milis.
> ------------
>
>
>
>