coba mkro berikut ini
prosedur kedua (Fungsi HapsRange) itu tidak harus dipakai; karena dia hanya
mengOtomatiskan pemilihan area range yg berdata (Real Used Range dgn anchor
A1)
Jika anda mau menentukan Rangenya (di sheet aktif) dengan cara manual
prosedur tsb tidak perlu dipakai
Range yg akan diproses di SET secara hardcoded saja
Sub HapusCell_Bersayarat()
' dlm makro ini ini sudah dikhususkan
' syarat ada di kolom X (kol# 24)
' haps // 15 sept 2011
Dim RNG As Range, i As Long
*Set RNG = HapsRange(ActiveSheet)*
For i = 1 To RNG.Rows.Count
If LCase(RNG(i, 24)) = "delete" *Then RNG(i, 26).Clear*
Next i
End Sub
'
sebelum dan sesudah loop baik juga kalau ditambahkan setting mengenai
Calculation dan Screeen Editing (off kemudan on ) demi mempercepat jalannya
makro
'-----------------------
Private Function HapsRange(Optional Sht As Worksheet) As Range
' purpose: returns Real DataRange from a1 to last data
' courtesy of siti Vi
' Jakarta, 24 Nov 2009
'---------------------
Dim LstRow As Long, LstCol As Integer
On Error Resume Next
If Sht Is Nothing Then Set Sht = ActiveSheet
With Sht
LstRow = Cells.Find(What:="*", _
SearchDirection:=xlPrevious, SearchOrder:=xlByRows).Row
LstCol = Cells.Find(What:="*", _
SearchDirection:=xlPrevious,
SearchOrder:=xlByColumns).Column
If Len(Cells(1)) > 0 Then FstRow = 1: FstCol = 1
End With
Set HapsRange = Range(Cells(1), Cells(LstRow, LstCol))
End Function
contoh workbook hanya akan dikirim at request
2011/9/14 Hachi Rizki <[email protected]>
> **
> Dear Excel Expert,
> Saya ketemu masalah dengan looping for next pada VBA
> saya menggunakan sintaks sebagai berikut
>
> For i = 2 To baris
> If proses.Cells(i, "X").Value = "delete" Then
> proses.Range(Cells(i, 1), Cells(i, "Z")).Value = vbNullString
> proses.Cells(i, 1).Select
> End If
> Next i
>
> sebelumnya saya gunakan count untuk baris, sehingga baris mencerminkan
> jumlah baris dari data yang bersangkutan.
> Saya run macro tersebut 2 kali. Pertama saya menggunakan data dengan jumlah
> row sebanyak 28000-an dan berjalan dengan baik
> Selanjutnya saya coba dengan data dengan jumlah row sebanyak 105.000-an.
> Dan muncuk error. 'type mismatch'
>
> pertanyaan saya :
> - apakah memang ada batas maksimum untuk loop for - next ? kalau ada,
> berapakah jumlah maksimumnya ..??
> - ada teman2 yang punya alternatif untuk scrip nya. Tujuan saya adalah
> menghilangkan baris yang pada kolom X ada tulisan "delete"
>
> terima kasih,
> hachi
>
>