Herhangi bir kelime ile başlayan satırı silme

Katılım
3 Ocak 2012
Mesajlar
8
Excel Vers. ve Dili
2010 tr
Merhaba,

(seçtiğimiz)Herhangi bir kelime ile başlayan satırı silmek için bir makro kodu yazılabilirmi acaba.
 

leumruk

Uzman
Uzman
Katılım
15 Nisan 2007
Mesajlar
3,469
Excel Vers. ve Dili
Office 2010 & 2013 tr
Evet, böyle bir makro yazmak mümkün. Sadece satır mı silinsin paragrafın tamamı mı? Ayrıca kelime makronun .çerisinde mi yer alacak... Örnek bir dosya ile ne istediğinizi anlatabilirseniz, daha hızlı ve doğru çözümler üretilebilir.
 
Katılım
13 Ekim 2019
Mesajlar
9
Excel Vers. ve Dili
o365
word dosyamda düz metinler ve tablolar bulunmakta, (dataları başka program ile alıp tablo ve metinlerden dosya oluşuyor) ben bu dosyada tablo içindeki xxx metinini buldurup bu metnin olduğu satırı sildirmek istiyorum.(yani hem metni ve satırı sildirmek) Forumlardan istediğim xxx kelimesini bulup satır içinden sildirdim fakat satırı silemiyorum.Ayrıca her word açılışında(autoopen gibi) dosyası tarayıp bu metin var ise otomatik silmeside varsa çok süper olur.
Bu konuda yardımcı olabilirmisiniz.

Sub Auto_open()
Selection.Find.ClearFormatting
With Selection.Find
.Text = "xxx"
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindContinue
End With
Selection.Find.Execute

If Selection.Text = "xxx" Then
Do While krk = 0
Selection.MoveLeft Unit:=wdCharacter, Count:=1, Extend:=wdExtend
krk = Selection.Range.ComputeStatistics(Statistic:=wdStatisticCharacters)
If krk = 0 Then Selection.TypeBackspace
Loop
Selection.MoveUp Unit:=wdParagraph, Count:=1, Extend:=wdExtend
Selection.Delete
Selection.MoveDown Unit:=wdParagraph, Count:=2, Extend:=wdExtend
Selection.Delete
End If
End Sub
 
Katılım
13 Ekim 2019
Mesajlar
9
Excel Vers. ve Dili
o365
Evet, böyle bir makro yazmak mümkün. Sadece satır mı silinsin paragrafın tamamı mı? Ayrıca kelime makronun .çerisinde mi yer alacak... Örnek bir dosya ile ne istediğinizi anlatabilirseniz, daha hızlı ve doğru çözümler üretilebilir.
Tablo içindeki xxx metinini buldurup bu metnin olduğu satırı sildirmek istiyorum.(yani hem metni ve satırı sildirmek)
 

leumruk

Uzman
Uzman
Katılım
15 Nisan 2007
Mesajlar
3,469
Excel Vers. ve Dili
Office 2010 & 2013 tr
Selamlar,
Örnek dosya olsa daha kesin kodlar üretilebilir. Aşağıdaki kod işinizi çözer diye tahmin ediyorum.
PHP:
Sub Makro1()
Aranan = "xxxx"
For x = 1 To ActiveDocument.Tables.Count
For y = ActiveDocument.Tables(x).Rows.Count To 1 Step -1
If InStr(1, ActiveDocument.Tables(x).Rows(y).Range, Aranan, vbTextCompare) > 0 Then
ActiveDocument.Tables(x).Rows(y).Delete
say = say + 1
End If
Next
Next
MsgBox say & " satır başarıyla silindi.", vbOKOnly, "l e u m r u k"
 
Katılım
13 Ekim 2019
Mesajlar
9
Excel Vers. ve Dili
o365
Selamlar,
Örnek dosya olsa daha kesin kodlar üretilebilir. Aşağıdaki kod işinizi çözer diye tahmin ediyorum.
PHP:
Sub Makro1()
Aranan = "xxxx"
For x = 1 To ActiveDocument.Tables.Count
For y = ActiveDocument.Tables(x).Rows.Count To 1 Step -1
If InStr(1, ActiveDocument.Tables(x).Rows(y).Range, Aranan, vbTextCompare) > 0 Then
ActiveDocument.Tables(x).Rows(y).Delete
say = say + 1
End If
Next
Next
MsgBox say & " satır başarıyla silindi.", vbOKOnly, "l e u m r u k"
Tekrar Selamlar, bu kodlar ile compile error: değişken tanımı ile hata veriyor, örnek dosyayı makro ekleyip linki paylaşıyorum. (metin bul ve satır sil.docm)

https://www.dosyaupload.com/booK

Şimdiden desteğiniz için teşekkür ederim.
 

leumruk

Uzman
Uzman
Katılım
15 Nisan 2007
Mesajlar
3,469
Excel Vers. ve Dili
Office 2010 & 2013 tr
Kodu eklediğiniz modülün başındaki
Kod:
Option Explicit
satırını silip deneyiniz.
 
Katılım
13 Ekim 2019
Mesajlar
9
Excel Vers. ve Dili
o365
Kodu eklediğiniz modülün başındaki
Kod:
Option Explicit
satırını silip deneyiniz.
Sayın Leumruk, çok teşekkür ederim kodlar çalıştı tam istediğim gibi, emeğinize bilginize sağlık; ilave olarak aynı dosyada yine tablo içindeki "yyyy", "zzz" metinlerinede aynı işlemi yaptırabilirmiyiz? (aranan1, aranan2, aranan3 gibi..
 
Son düzenleme:

leumruk

Uzman
Uzman
Katılım
15 Nisan 2007
Mesajlar
3,469
Excel Vers. ve Dili
Office 2010 & 2013 tr
Sayın Leumruk, çok teşekkür ederim kodlar çalıştı tam istediğim gibi, emeğinize bilginize sağlık; ilave olarak aynı dosyada yine tablo içindeki "yyyy", "zzz" metinlerinede aynı işlemi yaptırabilirmiyiz? (aranan1, aranan2, aranan3 gibi..
Aranan kısmına istediğiniz kadar veri ekleyebilirsiniz.
C++:
Aranan = Array("xxx", "yyy", "zzz", "ddd")
For i = 0 To UBound(Aranan)
For x = 1 To ActiveDocument.Tables.Count
For y = ActiveDocument.Tables(x).Rows.Count To 1 Step -1
If InStr(1, ActiveDocument.Tables(x).Rows(y).Range, Aranan(i), vbTextCompare) > 0 Then
ActiveDocument.Tables(x).Rows(y).Delete
say = say + 1
End If
Next
Next
Next
 
Katılım
13 Ekim 2019
Mesajlar
9
Excel Vers. ve Dili
o365
Aranan kısmına istediğiniz kadar veri ekleyebilirsiniz.
C++:
Aranan = Array("xxx", "yyy", "zzz", "ddd")
For i = 0 To UBound(Aranan)
For x = 1 To ActiveDocument.Tables.Count
For y = ActiveDocument.Tables(x).Rows.Count To 1 Step -1
If InStr(1, ActiveDocument.Tables(x).Rows(y).Range, Aranan(i), vbTextCompare) > 0 Then
ActiveDocument.Tables(x).Rows(y).Delete
say = say + 1
End If
Next
Next
Next
Tekrar merhaba; belirttiğin gibi yaptım, aranan1 leri sildi ve aşağıdaki gibi hata verdi(aranan2 ve 3 silinmedi)

5991: hatası veriyor,
Tabloda dikey olarak birleştirilmiş hücreler bulunduğu için bu gurup içindeki özel satırlara erişilemiyor.)

If InStr(1, ActiveDocument.Tables(x).Rows(y).Range, Aranan(i), vbTextCompare) > 0 Then (bu satırda, debugda kalıyor)
 

leumruk

Uzman
Uzman
Katılım
15 Nisan 2007
Mesajlar
3,469
Excel Vers. ve Dili
Office 2010 & 2013 tr
Elinizdeki dosyayla uyumlu örnek dosya ekleyiniz.
 

leumruk

Uzman
Uzman
Katılım
15 Nisan 2007
Mesajlar
3,469
Excel Vers. ve Dili
Office 2010 & 2013 tr
Dosya linkine ulaşamadım. Sorun sanırım dikey birleştirilmiş hücrelerden kaynaklanıyor. Kod oluşturmadan önce birleştirilmiş hücrede aranan metin varsa metnin bağlı bulunduğu en üst satır mı silinecek, yoksa birleştirilmiş hücrenin dahil olduğu tüm satırlar mı silinecek? Örneğin 2,3 ve 4. satırın dahil olduğu birleştirilmiş bir hücrede metni aradığımızda bize 2. satırı verecektir. Sadece 2. satırın mı silinmesi gerekiyor, tamamının mı?
 
Katılım
13 Ekim 2019
Mesajlar
9
Excel Vers. ve Dili
o365
Dosya linkine ulaşamadım. Sorun sanırım dikey birleştirilmiş hücrelerden kaynaklanıyor. Kod oluşturmadan önce birleştirilmiş hücrede aranan metin varsa metnin bağlı bulunduğu en üst satır mı silinecek, yoksa birleştirilmiş hücrenin dahil olduğu tüm satırlar mı silinecek? Örneğin 2,3 ve 4. satırın dahil olduğu birleştirilmiş bir hücrede metni aradığımızda bize 2. satırı verecektir. Sadece 2. satırın mı silinmesi gerekiyor, tamamının mı?
Tekrar merhaba; ilgi ve detaylar için tekrar teşekkürlerimi sunarım.Belirttiğin gibi dikey birleştirilmiş hücrelerden dolayı hata veriyor. (test için onları kaldırdım, makro sorunsuz çalışıyor) Çalışma dosyamda hem dikey hemde yatay tablolar var, bu nedenle ayıramıyorum. Bulunan kelimenin bulunduğu satırın silinmesi (yatay olarak o satırı komple kaldırmak) Aslında dikey birleştirilmiş hürelerde aranacak kelimeler hiç olmayacak.(dikey birleştirilmiş hücreleri pas geç diyebilirmiyiz)

Tekrar teşekkürler.
 

leumruk

Uzman
Uzman
Katılım
15 Nisan 2007
Mesajlar
3,469
Excel Vers. ve Dili
Office 2010 & 2013 tr
C++:
Aranan = Array("xxx", "yyy", "zzz", "ddd")
For i = 0 To UBound(Aranan)
For x = 1 To ActiveDocument.Tables.Count
  Set mtn = ActiveDocument.Tables(x).Range
  With mtn.Find
    .Text = Aranan(i)
    While .Execute
      mtn.Rows.Delete
      say = say + 1
    Wend
  End With
Next
Next
MsgBox say & " satır başarıyla silindi.", vbOKOnly, "l e u m r u k"
End Sub
 
Katılım
13 Ekim 2019
Mesajlar
9
Excel Vers. ve Dili
o365
C++:
Aranan = Array("xxx", "yyy", "zzz", "ddd")
For i = 0 To UBound(Aranan)
For x = 1 To ActiveDocument.Tables.Count
  Set mtn = ActiveDocument.Tables(x).Range
  With mtn.Find
    .Text = Aranan(i)
    While .Execute
      mtn.Rows.Delete
      say = say + 1
    Wend
  End With
Next
Next
MsgBox say & " satır başarıyla silindi.", vbOKOnly, "l e u m r u k"
End Sub
Eline emeğine, klaveyene sağlık :) son olarak bu makroyu klavyede tuş kombinasyonu ile (örn: ctrl+Q) çalıştırma yapabilirmiyiz?
 

yyhy

Altın Üye
Katılım
3 Aralık 2005
Mesajlar
911
Excel Vers. ve Dili
Microsoft Office 2021 TR
Microsoft 365 TR
Altın Üyelik Bitiş Tarihi
20-03-2029
Arkadaşlar ilgimi çekti; Aranan = Array("xxx", "yyy", "zzz", "ddd") Bu bölümü excelin herhangi bir sayfasından liste aralığı olarak gösterebilir miyiz? Yani 40-50 satırlık bir liste olsa acaba macro ile belirleyebilir miyiz?
 

leumruk

Uzman
Uzman
Katılım
15 Nisan 2007
Mesajlar
3,469
Excel Vers. ve Dili
Office 2010 & 2013 tr
Eline emeğine, klaveyene sağlık :) son olarak bu makroyu klavyede tuş kombinasyonu ile (örn: ctrl+Q) çalıştırma yapabilirmiyiz?
  1. Microsoft Office Düğmesi'ne. ...
  2. Özelleştir'e tıklayın.
  3. Klavye kısayolları'nın yanında Özelleştir'e tıklayın.
  4. Kategoriler listesinde Makrolar'a tıklayın.
  5. Makrolar listesinde, değiştirmek istediğiniz makroya tıklayın.
  6. Yeni kısayol tuşuna basın kutusunda, seçmek istediğiniz tuş bileşimini yazın.
 

leumruk

Uzman
Uzman
Katılım
15 Nisan 2007
Mesajlar
3,469
Excel Vers. ve Dili
Office 2010 & 2013 tr
Arkadaşlar ilgimi çekti; Aranan = Array("xxx", "yyy", "zzz", "ddd") Bu bölümü excelin herhangi bir sayfasından liste aralığı olarak gösterebilir miyiz? Yani 40-50 satırlık bir liste olsa acaba macro ile belirleyebilir miyiz?
C++:
Set Aranan = Range("a1:a50")
MsgBox Aranan(5)
 
Üst