Listbox Üzerinde Listelenen satırın excel sayfa satırını bulma / ListBox1_DblClick

walabi

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

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

Ekli dosyada Userform20 üzerinde bir adet listbox var. Bu listboxa Çek_Senet adlı excel sayfasından iki tarih arasında vadesi gelecek olan çek, senet bilgilerini almaya çalışıyorum ve bunu yapabilmekteyim. İki tarih arasındaki mantığım ise bugün ile 01.01.3000 tarihleri arası.

Yapmayı istediğim şey ise şu. Listbox1 üzerinde listelenen satırlardan birine çift tıkladığımda aşağıda ki kodda olduğu gibi ödeme yapmak istersem msgboxda evet seçicem, Listbox üzerine alınan verinin excel sayfasındaki karşılığına K sütünundaki hücreye Ödendi şeklinde yazdırcam.

Acaba bu mümkün olabilir mi? Excel sayfasındaki satır sayısı ile Listboxta listelenen satır sayısı aynı olmadığı için mantığı çetrefilli geldi bana. Tarih kısıtlamasını kaldırmam mı gerekir çözüm üretmek için.


Kod:
Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
Dim cevap As Integer
cevap = MsgBox("Ödeme Kaydı Yapılsın mı?", vbYesNo + vbQuestion, "ONAY")
If cevap = vbNo Then
    MsgBox "İşlem İptal Edildi"
    Exit Sub
Else
 ' Ödeme yapma kodları


    MsgBox "Ödeme Kaydı Tamamlandı"
End If


End Sub
 

Ekli dosyalar

Zeki Gürsoy

Uzman
Uzman
Katılım
31 Aralık 2005
Mesajlar
4,356
Excel Vers. ve Dili
Office 365 (64 bit) - Türkçe
.... Excel sayfasındaki satır sayısı ile Listboxta listelenen satır sayısı aynı olmadığı için mantığı çetrefilli geldi bana....
Bu nedenle tekil sayılar içeren bir sütuna daha ihtiyaç var. Veritabanı mantığı gibi yani...
 

Levent Menteşoğlu

Administrator
Yönetici
Admin
Katılım
13 Ekim 2004
Mesajlar
16,058
Excel Vers. ve Dili
Excel 2010-32 bit-Türkçe
Excel 365 -32 bit-Türkçe
Bu nedenle tekil sayılar içeren bir sütuna daha ihtiyaç var. Veritabanı mantığı gibi yani...
Zeki beye katılıyorum. Dosyanıza ilave bir sütun eklemeden şöyle yapabilirsiniz; Listboxa bir sütun daha ekleyin ve bu sütuna aldığınız verinin satır numarasını yada döngüdeki "i" değişkenini kaydedin. Daha sonra listboxtan geriye veri kaydederken bu sütundaki satır numarasını kullanırsınız. Ayrıca bu kolonun genişliğini "0 pt" yaparsanız listboxtada görünmez.
 
Son düzenleme:

walabi

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

excel 2013
Altın Üyelik Bitiş Tarihi
06-08-2025
Bu nedenle tekil sayılar içeren bir sütuna daha ihtiyaç var. Veritabanı mantığı gibi yani...
Zeki beye katılıyorum. dosyanıza ilave bir sütun eklemeden şöyle yapabilirsiniz; Listboxa bir sütun daha ekleyin ve bu sütuna aldığınız verinin satır numarasını yada döngüdeki "i" değişkenini kaydedin. Daha sonra listboxtan geriye veri kaydederken bu sütundaki satır numarasını kullanırsınız.
Teşekkürler Levent Bey, denemeye çalışacağım. Benim anladığım kadarı ile durum kısaca ID numarası. Tekil sayıdan kasıt sanırım bu.
 

walabi

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

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

Açmış olduğum konu ile ilgili olarak çalışma dosyasına ID sütunu ekledim ve excel sayfasında L sütunu (12. sütun) ID sütunu. Listbox1 üzerinde ise 5. sütun yani .List(.ListCount - 1, 4) = ceksenet.Cells(i, 12) satırı ile ( wit kullanarak ) ile excel sayfasından ID numarasını listboxa alıyorum.

Aşağıdaki kod nasıl düzeltilmeli. Kod hata vermedi, yani hata vermeden çalışıyor ama K sütunu hücresine "Ödendi" şeklinde bir ibare yazdıramadım. Nerede hata var acaba.


Kod:
Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
Dim cevap As Integer
Dim ceksenet As Worksheet
Set ceksenet = Sheets("Çek_Senet")
cevap = MsgBox("Ödeme Kaydı Yapılsın mı?", vbYesNo + vbQuestion, "ONAY")


If cevap = vbNo Then
    MsgBox "İşlem İptal Edildi"
    Exit Sub
Else


    For i = 2 To Sheets("Çek_Senet").Range("A1048576").End(3).Row
    'For i = 2 To ListBox1.List(ListBox1.ListCount - 1, 4)
        If ListBox1.List(ListBox1.ListCount - 1, 4) = ceksenet.Cells(i, 12) Then
            ceksenet.Cells(i, 11) = "Ödendi"
            
        End If

    Next i


    MsgBox "Ödeme Kaydı Tamamlandı"
End If


End Sub
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,314
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
For-Next döngüsü yerine Find (Ctrl+F) metodunu araştırınız. Biraz daha performanslı sonuç alabilirsiniz.
 
Üst