Listbox DblClick İle Textboxa Veri Girme

walabi

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

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

Şöylesi birşey yapmaya çalışıyorum. Userform14 üzerindeki textbox2 ye metin( firma ünvanı ) girdikçe listbox2 üzerinde veriler süzülmekte. Karşıma çıkan listeden bir satırı çift tıklama ile seçtiğimde textbox2 ye ve textbox3 e veri girilmesini sağlamaya çalışıyorum. Listbox2 toplamda iki sütundan oluşmakta ve textbox2 = birinci sütun , textbox3 = ikinci sütun şeklinde.

Aşağıdaki kod ve buna benzer bir kaç ile deneme yaptım ancak her seferinde listedeki ilk sırada olan veriler seçilebiliyor, yani textboxlara veri giriliyor ancak ikinci ve sonraki satırları seçtiğimde kodda hata alıyorum. Bunun sebebi nedir ve düzgün nasıl bir kod ile çalışabilirim


Kod:
Private Sub ListBox2_DblClick(ByVal Cancel As MSForms.ReturnBoolean)


sat = ListBox2.ListIndex
Controls("TextBox2") = ListBox2.List(sat, 0) 'Listbox2 deki ilk sütun verisi
Controls("TextBox3") = ListBox2.List(sat, 1) 'Listbox2 deki ikinci sütun verisi


'ListBox2.Clear

TextBox4.SetFocus
Me.ListBox2.Visible = False


End Sub
 

Ekli dosyalar

walabi

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

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

Şöylesi birşey yapmaya çalışıyorum. Userform14 üzerindeki textbox2 ye metin( firma ünvanı ) girdikçe listbox2 üzerinde veriler süzülmekte. Karşıma çıkan listeden bir satırı çift tıklama ile seçtiğimde textbox2 ye ve textbox3 e veri girilmesini sağlamaya çalışıyorum. Listbox2 toplamda iki sütundan oluşmakta ve textbox2 = birinci sütun , textbox3 = ikinci sütun şeklinde.

Aşağıdaki kod ve buna benzer bir kaç ile deneme yaptım ancak her seferinde listedeki ilk sırada olan veriler seçilebiliyor, yani textboxlara veri giriliyor ancak ikinci ve sonraki satırları seçtiğimde kodda hata alıyorum. Bunun sebebi nedir ve düzgün nasıl bir kod ile çalışabilirim


Kod:
Private Sub ListBox2_DblClick(ByVal Cancel As MSForms.ReturnBoolean)


sat = ListBox2.ListIndex
Controls("TextBox2") = ListBox2.List(sat, 0) 'Listbox2 deki ilk sütun verisi
Controls("TextBox3") = ListBox2.List(sat, 1) 'Listbox2 deki ikinci sütun verisi


'ListBox2.Clear

TextBox4.SetFocus
Me.ListBox2.Visible = False


End Sub

Açmış olduğum konuyla ilgili sanırım bir sonuca ulaştım ama doğrumudur değilmidir anlamadım. Kodlarda hata sürekli son satırda ortaya çıkıyordu, ikinci sütunun kod satırını önceye aldım ve aradığım sonucu vermeye başladı ama hata nedenini ya da yaptığımın mantığını anlayabilmiş değilim.

Controls("TextBox3") = ListBox2.List(sat, 1)
Controls("TextBox2") = ListBox2.List(sat, 0)

Kod satırlarını bu şekilde sıralayınca her seçim textboxlara yerleşir oldu. Acaba mantığı nedir?
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,330
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Merhaba,

Sorun şu;

Siz TextBox2 ilse arama yapıyorsunuz ve sonucu ListBox2'ye yazdırıyorsunuz.
Sonra listelenen kayıtlar üzerinde çift tıklayıp tekrar ilgili veriyi TextBox2'ye yazdırıyorsunuz. Bu esnada sistem tekrar arama yapmaya çalışıyor. Bu çakışma sorun çıkarıyor.

Bu gibi durumları önlemek için BOOLEAN bir değişken tanımlayıp kullanabilirsiniz.

Formunuzun kod bölümünde en üst satıra (deklarasyon bölümü) aşağıdaki satırı ekleyin.

Dim Kontrol As Boolean


TextBox2 kod bölümünü ise aşağıdaki gibi revize edin.

C++:
Private Sub TextBox2_Change()
    If Kontrol Then
        Kontrol = False
        Exit Sub
    End If
    Firma_Ara
    
    If TextBox2 = "" Then
    TextBox3 = ""
    ListBox2.Clear
    Me.ListBox2.Visible = False
    Else
    Me.ListBox2.Visible = True
    End If
End Sub
ListBox2 kod bölümünü ise aşağıdaki gibi revize edip deneyiniz.

C++:
Private Sub ListBox2_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
    Kontrol = True
    TextBox2 = ListBox2.Column(0)
    TextBox3 = ListBox2.Column(1)
    TextBox4.SetFocus
    Me.ListBox2.Visible = False
End Sub
 

walabi

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

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

Sorun şu;

Siz TextBox2 ilse arama yapıyorsunuz ve sonucu ListBox2'ye yazdırıyorsunuz.
Sonra listelenen kayıtlar üzerinde çift tıklayıp tekrar ilgili veriyi TextBox2'ye yazdırıyorsunuz. Bu esnada sistem tekrar arama yapmaya çalışıyor. Bu çakışma sorun çıkarıyor.

Bu gibi durumları önlemek için BOOLEAN bir değişken tanımlayıp kullanabilirsiniz.

Formunuzun kod bölümünde en üst satıra (deklarasyon bölümü) aşağıdaki satırı ekleyin.

Dim Kontrol As Boolean


TextBox2 kod bölümünü ise aşağıdaki gibi revize edin.

C++:
Private Sub TextBox2_Change()
    If Kontrol Then
        Kontrol = False
        Exit Sub
    End If
    Firma_Ara
   
    If TextBox2 = "" Then
    TextBox3 = ""
    ListBox2.Clear
    Me.ListBox2.Visible = False
    Else
    Me.ListBox2.Visible = True
    End If
End Sub
ListBox2 kod bölümünü ise aşağıdaki gibi revize edip deneyiniz.

C++:
Private Sub ListBox2_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
    Kontrol = True
    TextBox2 = ListBox2.Column(0)
    TextBox3 = ListBox2.Column(1)
    TextBox4.SetFocus
    Me.ListBox2.Visible = False
End Sub
Korhan Bey, Teşekkürler.
 
Üst