İki Listbox üzerinde satır silme

walabi

Altın Üye
Katılım
22 Eylül 2012
Mesajlar
417
Excel Vers. ve Dili
excel 2010

excel 2013
Altın Üyelik Bitiş Tarihi
06-08-2025
Merhaba,

Herkeze hayırlı Bayramlar,

Userform üzerinde iki adet Listbox ım var. Veri girdikçe ikisinin de satırları aynı anda artıyor. Yapmak istediğim şey, Listboxlardan birinde Silmek üzere bir satır seçildiğinde diğer listboxdaki satırın da seçilip silinmesi. Aşağıdaki kodlar ile listboxlarda ayrı ayrı seçim yapıp silme yapabiliyorum, ancak yanlış seçim yapmanın önüne geçmeye çalışıyorum. Kodlar nasıl olmalı.


Private Sub CommandButton1_Click()
' satır sil kodları
If ListBox1.ListIndex = -1 Then Exit Sub
ListBox1.RemoveItem ListBox1.ListIndex
If ListBox2.ListIndex = -1 Then Exit Sub
ListBox2.RemoveItem ListBox2.ListIndex

End Sub

İnternet üzerinde aşağıdaki kodları buldum örnek olarak, bunların uyarlanmış hali işimi görür mü acaba diye düşündüm ancak kodlar vba yamı ait başka bir program dilinemi emin olamadım.

Dim i As Integer = list_urun_fiyati.SelectedIndex
list_urun_fiyati.Items.RemoveAt(i)
list_urun_adi.Items.RemoveAt(i)
 

ÖmerFaruk

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2017
Mesajlar
4,698
Excel Vers. ve Dili
Microsoft 365 Tr-64
Bunu yapabilmeniz için Listboxlara verileri RowSource değil de List özelliğiyle alıyor olmanız önemli.
Sizin nasıl aldığınızı bilemedim.

Ben aşağıdaki kodlarla örnek olarak userform initialize olayında List özelliğiyle her iki listboxa da eşit satır sayısında veriyi aldım.
Buton ile de hangi listboxda seçili öğe varsa her iki listboxda da ilgil satırları siliyorum.

C++:
Private Sub CommandButton1_Click()
If ListBox1.ListIndex > -1 Then
    ListBox2.RemoveItem (ListBox1.ListIndex)
    ListBox1.RemoveItem (ListBox1.ListIndex)
    ListBox2.ListIndex = -1
End If
If ListBox2.ListIndex > -1 Then
    ListBox1.RemoveItem (ListBox2.ListIndex)
    ListBox2.RemoveItem (ListBox2.ListIndex)
    ListBox1.ListIndex = -1
End If
End Sub

Private Sub UserForm_Initialize()
    With Worksheets("Sayfa1")
        Me.ListBox1.List = Application.Transpose(.Range("B2:B8").Cells)
        Me.ListBox2.List = Application.Transpose(.Range("D2:D8").Cells)
    End With
End Sub
 

walabi

Altın Üye
Katılım
22 Eylül 2012
Mesajlar
417
Excel Vers. ve Dili
excel 2010

excel 2013
Altın Üyelik Bitiş Tarihi
06-08-2025
Bunu yapabilmeniz için Listboxlara verileri RowSource değil de List özelliğiyle alıyor olmanız önemli.
Sizin nasıl aldığınızı bilemedim.

Ben aşağıdaki kodlarla örnek olarak userform initialize olayında List özelliğiyle her iki listboxa da eşit satır sayısında veriyi aldım.
Buton ile de hangi listboxda seçili öğe varsa her iki listboxda da ilgil satırları siliyorum.

C++:
Private Sub CommandButton1_Click()
If ListBox1.ListIndex > -1 Then
    ListBox2.RemoveItem (ListBox1.ListIndex)
    ListBox1.RemoveItem (ListBox1.ListIndex)
    ListBox2.ListIndex = -1
End If
If ListBox2.ListIndex > -1 Then
    ListBox1.RemoveItem (ListBox2.ListIndex)
    ListBox2.RemoveItem (ListBox2.ListIndex)
    ListBox1.ListIndex = -1
End If
End Sub

Private Sub UserForm_Initialize()
    With Worksheets("Sayfa1")
        Me.ListBox1.List = Application.Transpose(.Range("B2:B8").Cells)
        Me.ListBox2.List = Application.Transpose(.Range("D2:D8").Cells)
    End With
End Sub

Ömer Bey merhaba ve hayırlı bayramlar

List ile almaktayım ve buton için verdiğiniz kodlar istediğimi yapıyor. Teşekkürler.
Userform_initialize altında çalışan kodların ne işe yaradığını sorabilirmiyim. Bunlar yanlış değilsem benim istediğim kodların haricinde ekstradan kendiniz eklediniz. Ancak ne işe yaradıklarını anlamadım şahsen. Açıklarsanız memnun olurum.

Tekrardan teşekkürler, ve nice bayramlara
 

vural-305-10

office 2010
Altın Üye
Katılım
17 Nisan 2012
Mesajlar
12
Excel Vers. ve Dili
2010 office
Altın Üyelik Bitiş Tarihi
03-10-2024
Örneği inceleyebilirsiniz.
merhaba hocam benimde yukarıdaki bilgilerin tam tersi
SAYFA 1 VERİM VAR
SAYFA 2 VERİM VAR

iki userformda ayrı ayrı listboxlarımda sayfa 1 ve sayfa 2 ayrı ayrı listeleniyor. benim istediğim ise
bir listbox seçtiğim satırı silinde diğerinden de silsin ve yenilesin...
 
Üst