• DİKKAT !

    Forum içeriğine ve tüm hizmetlerimize erişim sağlamak için foruma kayıt olmalı ya da giriş yapmalısınız. Foruma üye olmak Dosya Yükleme tamamen ücretsizdir.

Çözüldü Listboxtan kayıt silme kodu hatalı çalışıyor.

Bu konu çözüldü olarak işaretlenmiştir. Çözülmediğini düşünüyorsanız konuyu rapor edebilirsiniz.
Durum
Konu Çözümlendiği İçin Kapatılmıştır.

OğuzTürkyılmaz

Yeni Üye
Katılım
12 Eyl 2021
Mesajlar
263
Çözümler
1
Aldığı beğeni
31
Excel V
Office 365 TR
Konu Sahibi
Merhaba herkese sağlıklı günler dilerim. Poliçe Listesi formunda ki listboxta bir satırdaki veriyi silmek istediğimde excel sayfasındaki farklı bir veriyi silmekte. halily hocamın düzenlediği kodlarla düzenleme kodundaki aynı tip sorun giderilmişti. Satır silme işleminde doğru sonucu elde etmek için kodu nasıl revize etmeliyim. Yardımlarınız için teşekkür ederim.SİL.png
 
Çözüm
tek kayıt Silme kodu:
önce seçili satırı bulma kodu ile ilgili satır bulunur
seçili satırı bulma kodu
With sayfaPoliceler
SonStr = .Cells(.Rows.Count, "A").End(xlUp).row
.Columns.Sort key1:=.Columns("A"), Order1:=xlAscending, _
Key2:=.Columns("M"), Order2:=xlAscending, Header:=xlYes

t = WorksheetFunction.Match(ListBox_Policeler, .Range("A:A"), 0)
VrStr = t + WorksheetFunction.Match(ListBox_Policeler.Column(12), .Range("M" & t & ":M" & SonStr), 0) - 1
End With

bulunan bu satır VrStr ile silme yordamına yollanır Call DeleteRow(VrStr)
HTML:
Kod:
İçeriği görebilmek için Giriş yap ya da Üye ol.
sadece seçili satır mı silinecek yoksa ilgili ID'e ait tüm kayıtlar mı?
çünkü daha önceden tüm ID silinecek gibi bir şeyden bahsetmiştiniz
 
Son düzenleme:
Konu Sahibi
sadece seçili satır mı silinecek yoksa ilgili ID'e ait tüm kayıtlar mı?
çünkü daha önceden tüm ID silinecek gibi bir şeyden bahsetmiştiniz
Haklısınız programın mantığında aslında tüm ID'nin silinmesi gerekiyor ama ben burada tek tek sildirmekten yanayım halily hocam, fakat sizi çok yormayacaksa opsiyonel olarak tümünün de silinmesini sağlayacak kodu da öğreneyim. İlerde duruma göre belki başka bir menüde kullanırım. Çok teşekkür ederim.
 
tek kayıt Silme kodu:
önce seçili satırı bulma kodu ile ilgili satır bulunur
seçili satırı bulma kodu
With sayfaPoliceler
SonStr = .Cells(.Rows.Count, "A").End(xlUp).row
.Columns.Sort key1:=.Columns("A"), Order1:=xlAscending, _
Key2:=.Columns("M"), Order2:=xlAscending, Header:=xlYes

t = WorksheetFunction.Match(ListBox_Policeler, .Range("A:A"), 0)
VrStr = t + WorksheetFunction.Match(ListBox_Policeler.Column(12), .Range("M" & t & ":M" & SonStr), 0) - 1
End With

bulunan bu satır VrStr ile silme yordamına yollanır Call DeleteRow(VrStr)
HTML:
Kod:
İçeriği görebilmek için Giriş yap ya da Üye ol.
silme yordamının DeleteRow kodu
HTML:
Kod:
İçeriği görebilmek için Giriş yap ya da Üye ol.


Toplu kayıt Silme kodu:
seçili satırın ID'i ListBox_Policeler'den alınıp silme yordamına yollanır
HTML:
Kod:
İçeriği görebilmek için Giriş yap ya da Üye ol.
silme yordamı ilgili ID'e sahip verileri filtreleyip tüm görünen kayıtları siler (başlığın silinmemesi için ofset ile bir satır kaydırılır)
HTML:
Kod:
İçeriği görebilmek için Giriş yap ya da Üye ol.
Not: her iki Silme işleminden sonrada liste kutusunun güncellenmesi gerekir ilgili kodu siz eklersiniz?
Not2: hata denetleme kodları eklenmemiştir diyelim ki siz ilgili satır/satırları sildiniz ama liste kutusunu güncellemediğiniz için liste kutusunda hala duruyor silmek istediğinizde hata verebilir
 
Çözüm
dikkati mi çekti N sütunu tarih olmasına rağmen neden gerçek tarih değil?
eğer gerçek tarih olsaydı filtreleme ile daha kolay alınabilirdi sanki
 
Konu Sahibi
dikkati mi çekti N sütunu tarih olmasına rağmen neden gerçek tarih değil?
eğer gerçek tarih olsaydı filtreleme ile daha kolay alınabilirdi sanki
halily hocam sayfadaki hücre biçiminden bahsediyorsunuz sanırım Policeler sayfasındaki tüm tarihler Genel biçim ayarıyla sayfaya kaydoldu. Tarih formatıyla kaydettiğimde 44607 44608 gibi kaydolmuştu ve tarih biçimiyle 22.06.2022 şeklinde kaydettiremediğim için genel ayarları altında biçimlendirdim. Yazdığınız kodları da akşam eve geçtiğimde uygulayıp bilgi vereceğim. İlginiz için teşekkür ederim.
 
Konu Sahibi
tek kayıt Silme kodu:
önce seçili satırı bulma kodu ile ilgili satır bulunur
seçili satırı bulma kodu
With sayfaPoliceler
SonStr = .Cells(.Rows.Count, "A").End(xlUp).row
.Columns.Sort key1:=.Columns("A"), Order1:=xlAscending, _
Key2:=.Columns("M"), Order2:=xlAscending, Header:=xlYes

t = WorksheetFunction.Match(ListBox_Policeler, .Range("A:A"), 0)
VrStr = t + WorksheetFunction.Match(ListBox_Policeler.Column(12), .Range("M" & t & ":M" & SonStr), 0) - 1
End With

bulunan bu satır VrStr ile silme yordamına yollanır Call DeleteRow(VrStr)
HTML:
Kod:
İçeriği görebilmek için Giriş yap ya da Üye ol.
silme yordamının DeleteRow kodu
HTML:
Kod:
İçeriği görebilmek için Giriş yap ya da Üye ol.


Toplu kayıt Silme kodu:
seçili satırın ID'i ListBox_Policeler'den alınıp silme yordamına yollanır
HTML:
Kod:
İçeriği görebilmek için Giriş yap ya da Üye ol.
silme yordamı ilgili ID'e sahip verileri filtreleyip tüm görünen kayıtları siler (başlığın silinmemesi için ofset ile bir satır kaydırılır)
HTML:
Kod:
İçeriği görebilmek için Giriş yap ya da Üye ol.
Not: her iki Silme işleminden sonrada liste kutusunun güncellenmesi gerekir ilgili kodu siz eklersiniz?
Not2: hata denetleme kodları eklenmemiştir diyelim ki siz ilgili satır/satırları sildiniz ama liste kutusunu güncellemediğiniz için liste kutusunda hala duruyor silmek istediğinizde hata verebilir
halily hocam seçili satırın ait olduğu ID'nin tüm kayıtlarını sildirecek şekilde düzenledim listsboxıda kayıt sonrası hemen güncelledim sorunsuz çalışıyor. Çok çok teşekkürler. Tek sorunum kaldı listboxta bir satır seçili değilken yanlışlıkla sil veya düzenle butonlarına bastığımda kod hataya düşüyor normal olarak. Önce sil ve düzenle tuşarını form yüklendiğinde enabled özelliğini false yapayım bir satır seçilirse true olsunlar dedim yada hiç bunla uğraşmadan direk sil veya düzenle tuşuna basıldığında eğer bir kayda ait satır seçili değilse mesajboxla uyarı verdireyim ve sub dışına atayım dedim ama her iki yöntemde de listbox içinde bir satırın seçili olup olmadığı kontrol edecek olan kodu nette bulamadım yada google amcaya doğru soruyu soramadım. Bununla ilgili formda konu açacağım bu konuyu da halledince bu program ana hatlarıyla bitmiş olacak. Verdiğiniz destek için çok çok teşekkürler minnettarım.
 
Yanılmıyorsam eğer listbox degeri -1 ise secim yapılmamış demektir
 
Rica ederim
İyi çalışmalar
 
Durum
Konu Çözümlendiği İçin Kapatılmıştır.
Geri
Üst