Listboxda satır silme

Katılım
26 Eylül 2020
Mesajlar
171
Excel Vers. ve Dili
excel 2019 pro.Türkçe
Altın Üyelik Bitiş Tarihi
26-09-2021
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.
 

ÖmerBey

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2012
Mesajlar
4,114
Excel Vers. ve Dili
2007 Türkçe
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
 
Katılım
26 Eylül 2020
Mesajlar
171
Excel Vers. ve Dili
excel 2019 pro.Türkçe
Altın Üyelik Bitiş Tarihi
26-09-2021
Ömer Bey Merhaba.kod seçili satırı sildi ancak sayfadan da silinmesi gerekiyor.Bunu nasıl yapabiliriz.
 
Son düzenleme:

ÖmerBey

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2012
Mesajlar
4,114
Excel Vers. ve Dili
2007 Türkçe
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.
 
Katılım
26 Eylül 2020
Mesajlar
171
Excel Vers. ve Dili
excel 2019 pro.Türkçe
Altın Üyelik Bitiş Tarihi
26-09-2021
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
 

ÖmerBey

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2012
Mesajlar
4,114
Excel Vers. ve Dili
2007 Türkçe
Dosyayı siz biliyorsunuz, çalıştığını söylüyorsanız çalışıyordur.
A sütununda mükerrer veri yoksa problem olmayacaktır.
 
Katılım
5 Kasım 2006
Mesajlar
572
Excel Vers. ve Dili
TÜRKCE Excel 2021 32bit
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.
 
Katılım
5 Kasım 2006
Mesajlar
572
Excel Vers. ve Dili
TÜRKCE Excel 2021 32bit
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.
 
Katılım
26 Eylül 2020
Mesajlar
171
Excel Vers. ve Dili
excel 2019 pro.Türkçe
Altın Üyelik Bitiş Tarihi
26-09-2021
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.
 
Katılım
5 Kasım 2006
Mesajlar
572
Excel Vers. ve Dili
TÜRKCE Excel 2021 32bit
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:
Katılım
5 Kasım 2006
Mesajlar
572
Excel Vers. ve Dili
TÜRKCE Excel 2021 32bit
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.
 
Katılım
5 Kasım 2006
Mesajlar
572
Excel Vers. ve Dili
TÜRKCE Excel 2021 32bit
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
 
Üst