• DİKKAT

    DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
    Altın Üyelik Hakkında Bilgi

Listboxda satır silme

  • Konbuyu başlatan Konbuyu başlatan fehdur
  • Başlangıç tarihi Başlangıç tarihi
Katılım
26 Eylül 2020
Mesajlar
171
Excel Vers. ve Dili
excel 2019 pro.Türkçe
Listboxdan seçili satırı kod yardımıyla nasıl silebiliriz.İnternetden bulduğum kodlar sürekli olarak üst satırı siliyor benim istediğim seçili satırı silmesi.Yalnız selected argümanı hata veriyor başka bir komut varmı bilmiyorum.Şimdiden teşekkürler.
 
Merhaba,
Listboxa değerleri rowsource yöntemiyle almıyosanız tek seçim için ListBox1.RemoveItem (ListBox1.ListIndex) kodu; çoklu seçim için ise aşağıdaki gibi ters bir döngü kurabilirsiniz.
Rich (BB code):
For a = UBound(ListBox1.List) To LBound(ListBox1.List) Step -1
    If ListBox1.Selected(a) = True Then ListBox1.RemoveItem (a)
Next
 
Ömer Bey Merhaba.kod seçili satırı sildi ancak sayfadan da silinmesi gerekiyor.Bunu nasıl yapabiliriz.
 
Son düzenleme:
Dosyanızın yapısına göre değişir...
Değerleri listboxa sıralı alıyorsanız aynı kodla silme yapabilirsiniz. Yalnız burada dikkat edilecek husus listbox listelemeye 0 ile başlar. Bu sıfırı sizin sayfanızdaki satır sayısına uydurmanız gerekir.
Sıralı almıyorsanız o zaman durum biraz daha farklılaşacaktır.
Şahsım adına ben silme isşlemi yapacağım durumlarda listboxa veri alırken sütunun birine de satır numarasını aldırıyorum. Silme yaparken hesap kitap yapmadan direkt ilgili sütundaki değeri kullanıyorum.
 
Hocam verdiğiniz koda ilave yaptım.çalışıyor gibi. Bır de siz bakın.Problem varsa söyleyin.

For a = UBound(ListBox1.List) To LBound(ListBox1.List) Step -1
If ListBox1.Selected(a) = True Then ListBox1.RemoveItem (a)
Next
Set BUL = Sheets("Sayfa5").Range("a:a").Find(ListBox1.Value, LookAt:=xlWhole)
If Not BUL Is Nothing Then
Sheets("Sayfa5").Rows(BUL.Row).Delete
End If
 
Dosyayı siz biliyorsunuz, çalıştığını söylüyorsanız çalışıyordur.
A sütununda mükerrer veri yoksa problem olmayacaktır.
 
Hocam verdiğiniz koda ilave yaptım.çalışıyor gibi. Bır de siz bakın.Problem varsa söyleyin.

For a = UBound(ListBox1.List) To LBound(ListBox1.List) Step -1
If ListBox1.Selected(a) = True Then ListBox1.RemoveItem (a)
Next
Set BUL = Sheets("Sayfa5").Range("a:a").Find(ListBox1.Value, LookAt:=xlWhole)
If Not BUL Is Nothing Then
Sheets("Sayfa5").Rows(BUL.Row).Delete
End If
Meehaba.
Bu koda göre sanırım tek olarak siliniyor.Öyleyse döngüye gerek olmadan listindex olayı ilede silinir bence.
ListBox1.RemoveItem (Listbox1.Listindex) gibi kodu kafadan yazdım hata olabilir.
 
Meehaba.
Bu koda göre sanırım tek olarak siliniyor.Öyleyse döngüye gerek olmadan listindex olayı ilede silinir bence.
ListBox1.RemoveItem (Listbox1.Listindex) gibi kodu kafadan yazdım hata olabilir.
Tabii If ListBox1.Selected(a) = True Then burdaki a yerinede Listbox1.Listindex yazılanilir.
 
Tabii If ListBox1.Selected(a) = True Then burdaki a yerinede Listbox1.Listindex yazılanilir.
Yazmış olduğunuz kod veriyi listbox dan siliyor ama esas yapılmak istenen sayfadan da silinmesi.Mümkünse yazabilirmisin.Uğraştım yapamadım bir de sizin yazacağınız kodu deneyim.
 
Alttaki gibi deneyin .0 yerine belki 1 gelebilir kafadan yazdım hatam olabilir.
Alttaki 0 listboxun ilk sütunudur.

Kod:
Set BUL = Sheets("Sayfa5").Range("a:a").Find(ListBox1.list(ListBox1.Listindex,0), LookAt:=xlWhole)
 
Son düzenleme:
Ayrıca verdiğim kodu 5.mesajdakş ilgili satı ile değiştirin.Ve döngüyü end if satırının altına alın.
 
Eğer tek seçim olacaksa alttaki gibi deneyin.

Rich (BB code):
    Dim bul As Range, satir As Long
    With Me.ListBox1
        If .ListIndex <> -1 Then
            satir = .ListIndex
            If MsgBox("Silinsin mi?", vbQuestion + vbYesNo, "Silme") = vbYes Then
                Set bul = Sheets("Sayfa5").Range("a:a").Find(.List(satir, 0), LookAt:=xlWhole)
                If Not bul Is Nothing Then Sheets("Sayfa5").Rows(bul.Row).Delete
                If satir <> -1 Then
                    .RemoveItem satir
                    MsgBox "Silindi"
                End If
            End If
        End If
    End With
    Set bul = Nothing
 
Geri
Üst