DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
Altın Üyelik Hakkında Bilgi
Tablo içindeki xxx metinini buldurup bu metnin olduğu satırı sildirmek istiyorum.(yani hem metni ve satırı sildirmek)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.
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)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"
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..Kodu eklediğiniz modülün başındakisatırını silip deneyiniz.Kod:Option Explicit
Aranan kısmına istediğiniz kadar veri ekleyebilirsiniz.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 = 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)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
Link : v2 dosyası. klavyeden kısayol ile çalışması için (örn: ctrl+Q) kod ile ekleme yapabilirmisin.Elinizdeki dosyayla uyumlu örnek dosya ekleyiniz.
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)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ı?
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ıkC++: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ıkson olarak bu makroyu klavyede tuş kombinasyonu ile (örn: ctrl+Q) çalıştırma yapabilirmiyiz?
- Microsoft Office Düğmesi'ne. ...
- Özelleştir'e tıklayın.
- Klavye kısayolları'nın yanında Özelleştir'e tıklayın.
- Kategoriler listesinde Makrolar'a tıklayın.
- Makrolar listesinde, değiştirmek istediğiniz makroya tıklayın.
- Yeni kısayol tuşuna basın kutusunda, seçmek istediğiniz tuş bileşimini yazın.
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?
Set Aranan = Range("a1:a50")
MsgBox Aranan(5)