• DİKKAT

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

Seçili Kulüp(lere) üye listesini sorgula

antonio

Destek Ekibi
Destek Ekibi
Katılım
13 Şubat 2011
Mesajlar
1,167
Excel Vers. ve Dili
Microsoft Office Professional Plus 2013 Türkçe
Beyin sulandıran bir makro ile karşı karşıyayım. Ekte ki dosyada açılan formda külüplere ait CheckBox(lar) işaretlendikten sonra altında ki "SEÇİLİ KULÜP(LERE) ÜYE LİSTESİNİ SORGULA" Butonuna basıldığı zaman ListBox1 e ilgili kişilerin listesinin gelmesi gerekmektedir. Kendim bu işin içinden çıkmadım. Çıkabilene de helal olsun diyorum.
 

Ekli dosyalar

Beyin sulandıran bir makro ile karşı karşıyayım. Ekte ki dosyada açılan formda külüplere ait CheckBox(lar) işaretlendikten sonra altında ki "SEÇİLİ KULÜP(LERE) ÜYE LİSTESİNİ SORGULA" Butonuna basıldığı zaman ListBox1 e ilgili kişilerin listesinin gelmesi gerekmektedir. Kendim bu işin içinden çıkmadım. Çıkabilene de helal olsun diyorum.

Merhaba

Tabi işin içinden çıkamazsınız dosyanızda kurgu yok kodlarınızdada bir birine parelel uyum yok.

Projenizde yola çıkarken ya
1-RowSource
ile yola çıkacaksınız yada
2-(AddItem,Column,List)
ile yola çıkacaksınız

Burada birinci ve ikinci durum ile kodlarınız mevcut, ikinci durum ile yazılan kodlarda listbox nesnesine mutlaka satırın index değerinide almanız gerekiyor yoksa aramada veya güncellemede veya silmede yada verileri text nesnelerine çağırmada ya hata verecektir yada yanlış satır numarasıyla ilişiklendirecektir.

Ekli dosyada ikinci durumla ilgili A sutünundaki sıra sayı numarasına göre işlemler yapılmaktadır.

not:Burada sadece size yol göstermek amacı ile cevap verilmiştir.
 

Ekli dosyalar

Halit Hocam, Form2 ye çok büyük bir emek vermişsiniz. Keşke bu kadar karmaşık bir görsellik vermeseydiniz.
Eklemiş olduğunuz dosyadaki işlemi; sıra no yerine ad soyad başta olacak şekilde yapmak istesek kodları nasıl değiştirmemiz lazım?
 
Son düzenleme:
Halit Hocam, Form2 ye çok büyük bir emek vermişsiniz. Keşke bu kadar karmaşık bir görsellik vermeseydiniz.
Eklemiş olduğunuz dosyadaki işlemi; sıra no yerine ad soyad başta olacak şekilde yapmak istesek kodları nasıl değiştirmemiz lazım?

Form2 öylesine ekledim.

Diğer taraftan mesajımı anlıyamadığınızı algılıyorum.
Kodların hepsinin çalışma durumu sıra no ya göre çalışıyor yani bu sıra nı satır index si demek bu sıra no olmazsa kodlar çalışmaz.
 
Form2 öylesine ekledim.

Diğer taraftan mesajımı anlıyamadığınızı algılıyorum.
Kodların hepsinin çalışma durumu sıra no ya göre çalışıyor yani bu sıra nı satır index si demek bu sıra no olmazsa kodlar çalışmaz.
Demek istediğim, örneğin şöyle yapsak olmaz mı? Başka bir deyişle, satır numarası ile ilgili her şeyi anlarım ama ayrıca sıra no neden zorunlu olsun, bunu izah ederseniz sevinirim.
Kod:
Private Sub UserForm_Initialize()
Dim sh As Worksheet, ss As Integer
Set sh = Worksheets(1)
sh.Activate
ss = sh.Range("B" & Rows.Count).End(3).Row
chbs = Application.WorksheetFunction.CountA(sh.Range("G1:X1"))
For i = 1 To chbs
    Controls("CheckBox" & i).Caption = Cells(1, i + 6).Value
Next i
'*************************************************************
ListBox1.ColumnCount = 4
ListBox1.ColumnHeads = False
ListBox1.ColumnWidths = "120;60;145;70"
ListBox1.RowSource = "personel!B2:E" & ss
Label7.Caption = ListBox1.ListCount
For a = 1 To 16
Set chk(a).chk = Controls("checkbox" & a)
Next
End Sub

Kod:
Private Sub CommandButton5_Click()
Dim k As Range, adrs As String, j As Byte, a As Long, sh As Worksheet, ss As Integer
For T = 1 To 5
Controls("textbox" & T) = ""
Next
Set sh = Worksheets("personel")
ss = sh.Range("B" & Rows.Count).End(3).Row
   ListBox1.RowSource = ""
ReDim myarr(2 To 5, 1 To 1)
For M = 2 To ss
For i = 1 To 15
If Controls("CheckBox" & i).Value = True Then
If sh.Cells(M, i + 6).Value = "X" Then
 a = a + 1
            ReDim Preserve myarr(2 To 5, 1 To a)
            For j = 2 To 5
                myarr(j, a) = sh.Cells(M, j).Value
            Next j 
            Exit For
End If
End If
Next
Next
        ListBox1.Column = myarr
Label7.Caption = ListBox1.ListCount
End Sub
Bu şekliyle denediğimde sıra no kayboluyor ve bir sorun da görünmüyor.
 
Son düzenleme:
İllaki sıra no yu görmemek istiyorsanız aşağıdaki kırmızı yeri sıfır yapın

Kod:
ListBox1.ColumnWidths = "[COLOR="Red"]20[/COLOR];120;60;145;70"

Kod:
ListBox1.ColumnWidths = "[COLOR="Red"]0[/COLOR];120;60;145;70"
 
Demek istediğim, örneğin şöyle yapsak olmaz mı? Başka bir deyişle, satır numarası ile ilgili her şeyi anlarım ama ayrıca sıra no neden zorunlu olsun, bunu izah ederseniz sevinirim.
Kod:
Private Sub UserForm_Initialize()
Dim sh As Worksheet, ss As Integer
Set sh = Worksheets(1)
sh.Activate
ss = sh.Range("B" & Rows.Count).End(3).Row
chbs = Application.WorksheetFunction.CountA(sh.Range("G1:X1"))
For i = 1 To chbs
    Controls("CheckBox" & i).Caption = Cells(1, i + 6).Value
Next i
'*************************************************************
ListBox1.ColumnCount = 4
ListBox1.ColumnHeads = False
ListBox1.ColumnWidths = "120;60;145;70"
ListBox1.RowSource = "personel!B2:E" & ss
Label7.Caption = ListBox1.ListCount
For a = 1 To 16
Set chk(a).chk = Controls("checkbox" & a)
Next
End Sub

Kod:
Private Sub CommandButton5_Click()
Dim k As Range, adrs As String, j As Byte, a As Long, sh As Worksheet, ss As Integer
For T = 1 To 5
Controls("textbox" & T) = ""
Next
Set sh = Worksheets("personel")
ss = sh.Range("B" & Rows.Count).End(3).Row
   ListBox1.RowSource = ""
ReDim myarr(2 To 5, 1 To 1)
For M = 2 To ss
For i = 1 To 15
If Controls("CheckBox" & i).Value = True Then
If sh.Cells(M, i + 6).Value = "X" Then
 a = a + 1
            ReDim Preserve myarr(2 To 5, 1 To a)
            For j = 2 To 5
                myarr(j, a) = sh.Cells(M, j).Value
            Next j 
            Exit For
End If
End If
Next
Next
        ListBox1.Column = myarr
Label7.Caption = ListBox1.ListCount
End Sub
Bu şekliyle denediğimde sıra no kayboluyor ve bir sorun da görünmüyor.

Kendi dosyanızda textbox1 herhangibir değer yazınca süzme işlemi yapılıyor süzme işlemi bitince listbox1 çift tıklayınca veriler textbox nesnelerine gelirken hata vermiyormu?

Bu yüzden listbox nesnesine süzerken satırların index değerinide almak gerekiyor.

Süzme işlemi yapmazsanız kodunuz tabiki düzenli çalışacaktır ama işin içine süzme işlemi gelince kodunuz devamlı hata verecektir.
 
Kendi dosyanızda textbox1 herhangibir değer yazınca süzme işlemi yapılıyor süzme işlemi bitince listbox1 çift tıklayınca veriler textbox nesnelerine gelirken hata vermiyormu?

Bu yüzden listbox nesnesine süzerken satırların index değerinide almak gerekiyor.

Süzme işlemi yapmazsanız kodunuz tabiki düzenli çalışacaktır ama işin içine süzme işlemi gelince kodunuz devamlı hata verecektir.

Textbox un süzme işlemiyle ilgili müdahalesini belirtseydiniz sizi bu kadar yormazdım. Ona; tavsiyeniz doğrultusunda bir çözüm zaten düşünüyordum. (arama için kullanılmayan yeni textboxlar ilave etmek ve onlara aktarmak gibi).
Yani dosyanın tümüne göre değil de, sadece açtığım konuya ilişkin kodlara odaklanmıştım.
Olay anlaşıldı. Tekrar teşekkürler, hakkınızı helal edin.
 
Geri
Üst