mohon dicoba usul saya, begini :

Sub sum()
' sum / penjumlahan biasa
    Do
    With Activecell
    If IsEmpty(.Value) Then
        If IsEmpty(.Offset(0, -1)) And IsEmpty(.Offset(0, -2)) Then
           .Value = ""
        Else
           .FormulaR1C1 = "=sum(RC[-1],RC[-2])"
        End If
    End If
    .Offset(1, 0).Select
    End With
    Loop Until *WorksheetFunction.CountA(ActiveCell(-1, 1).Resize(2, 3)) = 0
*
End Sub

intinya: Loop baru akan dihentikan *jika bertemu 2 baris contigous berisi 3
kolom*
*yg isinya konyong*...  ( eh kosong dinq... )
Kalau hanya ketemu SATU baris (berisi 3 cell sebaris) kosong... cuek saja
!..

Sebetulnya *Menselect cell *itu, kata mbak siti, memperlama proses;
terutama jika di setiap Step dalam loop terjadi range / cell selection.  dan
jumlah
baris yg akan "diurusin" sudah dlm ordo ribuan.

Makro ini masih bisa dipercepat dengan menghilangkan *Method Select*  dan
mengganti  proses test tiap cell* bukan dengan cara menSELECT* dulu setiap
cell
(agar menjadi activecell)* tetapi* *merujuk alamatnya* dimana indexRow-nya
setiap step dinaikkan;  dengan misalnya
r = r + 1
If  Len(*xCell(r,1)*) = 0 Then

Itu hanya saran, tidak harus anda ikuti, karena tiap "pemrogram" punya
stylenya masing2

wassalamualaikum wr wb,
hapsari



2011/8/25 Novan Dwiascahyo <[email protected]>

> Dear XL-mania,****
>
> Mohon bantuannya memperbaiki formula macro yg menggunakan Do.. Loop,
> sehingga proses penghitungan data dapat berlangsung kontinyu hanya dengan
> sekali running macro dan baru akan berhenti setelah menghitung data yg
> paling bawah.**
>
> **
>
> Perintah yg saya gunakan adalah sbb:
>
> **
>
> ** **
>
> Sub sum()****
>
> ' sum****
>
> ' penjumlahan biasa****
>
>     Do****
>
>     If IsEmpty(ActiveCell) Then****
>
>         If IsEmpty(ActiveCell.Offset(0, -1)) And
> IsEmpty(ActiveCell.Offset(0, -2)) Then****
>
>             ActiveCell.Value = ""****
>
>         Else****
>
>             ActiveCell.FormulaR1C1 = "=sum(RC[-1],RC[-2])"****
>
>         End If****
>
>     End If****
>
>     ActiveCell.Offset(1, 0).Select****
>
>     Loop Until *IsEmpty(ActiveCell.Offset(-1, -1))*****
>
> End Sub****
>
> ** **
>
> Kasus lengkapnya mohon disimak file terlampir. Thanks berat.****
>
> Note: Ini postingan ke-2 (dgn sedikit edit) karena postingan yg pertama
> sepertinya tidak sampai dengan slamet.
>
> **
>
> Salam,
>
> **
>
> ND****
>
>

Kirim email ke