Değişkeni Bul, Bulunduğu Satırı Sil

Katılım
15 Haziran 2021
Mesajlar
147
Excel Vers. ve Dili
Office 2016
Merhaba

üzerinde çalıştığım bir makroda yapmam gereken bir işlem var. Fakat içinden çıkamadım.

Yapmak istediğim şey şu : değişkeni arayacak ve bulunduğu satırı tamamen silecek.

değişkeni tanımladım

Dim aranan As String, bul As Range
aranan = Sayfa1.Range("A2")


"as" ı sayfa 2 de A sütünda arattım
Set bul = Sayfa3.Range("F1:F999999").Find(aranan, Lookat:=xlWhole)

Bulamazsan döngüden çık dedim

If Not bul Is Nothing Then
Sayfa1.Activate
Range("A2").Select
Exit Sub

Eğer bulursan döngüyü çalıştır dedim.

Else
Call Module2.satirsil
End If
Set bul = Nothing
End Sub


Buraya kadar gelebildim. Ama satır sil makrosunu oluşturamadım. Yardımcı olursanız çok sevinirim.
 

Mustafa MUTLU

Destek Ekibi
Destek Ekibi
Katılım
24 Temmuz 2008
Mesajlar
1,586
Excel Vers. ve Dili
Ofis 2013 TR 32 Bit
Bulunan satır numarası Parantez içinede belirtilecek.
XX= değişken satır numarasıdır
Rows(XX).Delete
 
Katılım
15 Haziran 2021
Mesajlar
147
Excel Vers. ve Dili
Office 2016
Bulunan satır numarası Parantez içinede belirtilecek.
XX= değişken satır numarasıdır
Rows(XX).Delete
Cevap için teşekkürler ama yapamadım.

Kodlarım bu şekilde. Fakat makroyu çalıştırdığımda Rows(bul).Delete bu satırda hata alıyorum. Sanırım değişkenin bulunduğu satırı doğru tanımlayamadım. Eğer vaktiniz olursa kontrol edip yardımcı olursanız çok sevinirim.

Kod:
Sub yenile()
Dim aranan As String, bul As Range
aranan = Sayfa1.Range("J7")
Set bul = Sayfa3.Range("A1:A999999").Find(aranan, Lookat:=xlWhole)
If Not bul Is Nothing Then
Rows(bul).Delete
Exit Sub
Else
Sayfa1.Activate
Range("A2").Select
MsgBox Prompt:="Recete Kaydi Bulunamadi"
End If
Set bul = Nothing
End Sub
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,269
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Aşağıdaki gibi deneyiniz.

bul.EntireRow.Delete

Ya da;

Rows(bul.Row).Delete
 
Katılım
15 Haziran 2021
Mesajlar
147
Excel Vers. ve Dili
Office 2016
Tekrardan merhaba

Şöyle bir problem ortaya çıktı. Aradığım değer 4 tane ise 4 kere silme işlemini döndürmesi gerekiyor. Kaç tur döndüreceğini hesaplamak aranan değeri J2 hücresine EĞERSAY ile saydırıp bunu tur sayısı olarak belirledim. Alttaki gibi bir for döngüsü ile yapmaya çalıştım. Fakat Next a satırında hata alıyorum. Nedenini bulamadım.

Kod:
Sub yenile()
Dim aranan As String, bul As Range
aranan = Sayfa1.Range("A11")
tursayisi = Sayfa1.Range("J2")
For a = 1 To tursayisi
Set bul = Sayfa3.Range("F1:F999999").Find(aranan, Lookat:=xlWhole)
If Not bul Is Nothing Then
bul.EntireRow.Delete
Next a
Range("A2").Select
Exit Sub
Else
MsgBox Prompt:="Recete Kaydi Bulunamadi"
Range("A2").Select
End If
Set bul = Nothing
End Sub
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,269
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
For döngüsü içinde bir if sorgusu yazmışsınız fakat bu sorguyu döngünün dışında End if ile kapatmışsınız.
 

ÖmerFaruk

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2017
Mesajlar
4,779
Excel Vers. ve Dili
Microsoft 365 Tr-64
İlave bilgi,
Find.Next komutuyla daha pratik sonuçlar elde edebilirsiniz.
 
Katılım
15 Haziran 2021
Mesajlar
147
Excel Vers. ve Dili
Office 2016
Kod:
Sub yenile()

Dim aranan As String, bul As Range

aranan = Sayfa1.Range("A11")

tursayisi = Sayfa1.Range("J2")

For a = 1 To tursayisi

Set bul = Sayfa3.Range("F1:F999999").Find(aranan, Lookat:=xlWhole)

If Not bul Is Nothing Then

bul.EntireRow.Delete

Range("A2").Select

Exit Sub

Else

MsgBox Prompt:="Recete Kaydi Bulunamadi"

Range("A2").Select

End If

Next a

Set bul = Nothing

End Sub

Bu şekilde düzenledim. Makroda hata vermiyor. Ama döngü yapmıyor. Tek sefer çalışıyor makro. Bir yerde mantık hatası yapıyorum ama bulamadım.
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,269
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Kod tasarımını linktekilere benzer şekilde revize etmelisiniz.

 
Katılım
20 Şubat 2012
Mesajlar
242
Excel Vers. ve Dili
office2007 Türkçe
Deneyin...
Kod:
Sub test()
Dim c As Range, bulunanlar As Range
Dim ilkbulunan As String
Dim aranan As String

aranan = Application.InputBox("Silinecek veri nedir ?", "Arama Kutusu", "Aranacak kriter girin")

Application.ScreenUpdating = False
With Sheets("Sayfa1")
    
    Set c = .Cells.Find(What:=aranan, After:=.Cells(Rows.Count, 1), LookIn:=xlValues, LookAt:=xlPart, MatchCase:=False)
    'Dikkat
    'LookAt:=xlPart kısmen benzeyenleri dahil siler
    'LookAt:=xlWhole tam olarak isteneni siler
    
    If Not c Is Nothing Then
      
        ilkbulunan = c.Address
        Do
          
            If bulunanlar Is Nothing Then
                Set bulunanlar = c
            Else
                Set bulunanlar = Union(c, bulunanlar)
            End If
          
            Set c = .Cells.FindNext(c)
            
        Loop While Not c Is Nothing And ilkbulunan <> c.Address
                
      
        bulunanlar.Select
        'Yapmak istediğim
        'Selection.ClearContents 'içerik temizle
        ' Selection.Delete 'Hücre  sil
      
        Selection.EntireRow.Delete 'tüm satırı sil
      
    Else
      
        MsgBox "Aradığınız " & aranan & " değeri bu sayfada yok"
    End If
End With
Application.ScreenUpdating = True

End Sub
 
Üst