Ben e-postalar için bir geçerlilik kontrolü yapmak için hızlı alt yaratıyorum. Ben 'E' Sütun bir '@' içermeyen iletişim verilerinin tüm satırları silmek istiyorum. Aşağıdaki makroyu kullandım, ancak çok yavaş çalışıyor çünkü Excel silmenin ardından tüm satırları hareket ettiriyor. set rng = union(rng,c.EntireRow)
ve sonrasında tüm aralığı silme, ama hata iletileri engel olamadı:Verimli yolu tüm satırı silmek için '@'
Böyle başka bir teknik denedim.
Ben de sadece seçime her satır ekleyerek İle denediği ve her şey seçildi sonra (ctrl gibi + seçin), sonradan silme, ama bunun için uygun sözdizimi bulamadık.
Herhangi bir fikrin var mı?
Sub Deleteit()
Application.ScreenUpdating = False
Dim pos As Integer
Dim c As Range
For Each c In Range("E:E")
pos = InStr(c.Value, "@")
If pos = 0 Then
c.EntireRow.Delete
End If
Next
Application.ScreenUpdating = True
End Sub
Birincisi, hücre sayısı travers sınırlar. yani "range (E: E)" yerine, – shahkalpesh
veri içeren bir aralık kullanın. Bunu her zaman nasıl yapacağımı merak ettim. İçinde veri bulunan son hücreye kadar ilk hücreyi içeren bir aralığı nasıl seçerim ? – Parseltongue
http://www.rondebruin.nl/win/s4/win001.htm - Şuna bir bakın. Eminim, sizin için cevaplayacaktır. Sorunuzu yanıtlayın, veri içeren A1 hücresindesiniz, şimdi ctrl + aşağı ok tuşuna basın. Bu, A1'den başlayarak son hücreye kadar veri içeren tüm hücreleri seçer (Not: ortada boş hücreler olmamalıdır). VBA kullanarak 'lastCell = Range (" A1 ") olabilir. End (xlDown)' – shahkalpesh