• DİKKAT

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

  • Forum yazılımı güncelenmiştir.

    Beklenmedik durumlar görürseniz lütfen yönetime iletin.

Listboxdan hücre seçme Hk.

Katılım
9 Eylül 2023
Mesajlar
24
Excel Vers. ve Dili
Excel 2019 For Mac
İyi günler kolay gelsin,
Benim sorum filtreleme yaptığım veriyi listbox üzerinde çift tıkladığım bir verinin bulunduğu satırda ki ilk hücreyi seçsin, bunu yaptım ama filtre yaptığımda sectigim veri listbox üzerinde kaçıncı sıradaysa o satırı seçiyor.
örneğin; 15 tane veri listeledi sıra numarası 600 olan veri 8. Satırda ise 600. Satıra gitmiyor 8. Satırı seçiyor bu konuda yardımcı olabilirseniz sevinirim.

Kod:
Dim i As Integer
For i = 0 To ListBox1.ListCount - 1
If ListBox1.Selected(i) = True Then
Sheets("Veri Girişi").Select
Sheets("Veri Girişi").Range("A" & ListBox1.ListIndex + 2).Select
End If
Next
 
Siz Listboxa tıklayınca filtrelenen aralıktaki A sütunundaki son eşleşen satırı mı bulmak istiyorsunuz?
 
Merhaba,

Filtre yaptıktan sonra veriyi Listbox'a yüklerken satır numarasınıda yükleyebilirsiniz. Bu alanı listbox üzerinde gizleyebilirsiniz. Sonrasında tıkladığınızda bu satır numarası alanını seçtirebilirsiniz. İkinci bir yöntem ise FIND metodunu kullanmaktır.
 
Siz Listboxa tıklayınca filtrelenen aralıktaki A sütunundaki son eşleşen satırı mı bulmak istiyorsunuz?

Ana liste üzerinde kaçıncı satırdaysa o satırın ilk hücresini seçsin.
Filtreleme yapıp Listboxta listelendiğinde, listbox üzerinde 5. Satirdaysa ana liste üzerinde 5. Satırı seçiyor oysa veri 200. Satırda gibi.
 
Şöyle yol göstereyim. Aslında Korhan hocam da bunu ifade etmeye çalıştı.
Filtreleme yaptıktan sonra Listboxda tek bir sütun olarak listeliyorsunuz.
Listbox için 2 kolon kullanın.
1.kolona filtrelenen satırların numarasını, 2 kolona normal listesinizde görmek istediğiniz sütundaki verileri yerleştirin.
1.Kolonun kolon genişiğini 0 olarak ayarlayın. ( Eğer satır numarasının gözükmesini istemiyorsanız)
Sonrasında
kodunuzdaki aşağıdaki satırı değiştirin.
C++:
Sheets("Veri Girişi").Range("A" & ListBox1.ListIndex + 2).Select

Sheets("Veri Girişi").Range("A" & ListBox1.List(ListBox1.ListIndex + 2,0).Select
 
Şöyle yol göstereyim. Aslında Korhan hocam da bunu ifade etmeye çalıştı.
Filtreleme yaptıktan sonra Listboxda tek bir sütun olarak listeliyorsunuz.
Listbox için 2 kolon kullanın.
1.kolona filtrelenen satırların numarasını, 2 kolona normal listesinizde görmek istediğiniz sütundaki verileri yerleştirin.
1.Kolonun kolon genişiğini 0 olarak ayarlayın. ( Eğer satır numarasının gözükmesini istemiyorsanız)
Sonrasında
kodunuzdaki aşağıdaki satırı değiştirin.
C++:
Sheets("Veri Girişi").Range("A" & ListBox1.ListIndex + 2).Select

Sheets("Veri Girişi").Range("A" & ListBox1.List(ListBox1.ListIndex + 2,0).Select
Yardımınız için teşekkür ederim gayet güzel çalışıyor fakat şöyle bir problem oluştu benim seçtirmek istediğim veri listindeksin 1 satır üzerinde yani listindeks 700 ama seçmesini istediğim 701 gibi.
Yazdığınız kodu bu şekilde düzenledim indeks olarak bir üst satırı offset ile nasıl seçtirebilirim
Kod:
ListBox1.List(ListBox1.ListIndex,0).Select
 
C++:
Sheets("Veri Girişi").Range("A" & ListBox1.List(ListBox1.ListIndex + 2,0).Select

ListBox1.ListIndex + 2 kısmında +2 ifadesini değiştirerek bulabilirsiniz.
 
C++:
Sheets("Veri Girişi").Range("A" & ListBox1.List(ListBox1.ListIndex + 2,0).Select

ListBox1.ListIndex + 2 kısmında +2 ifadesini değiştirerek bulabilirsiniz.
Cevabınız için teşekkür ederim,
tabi öncesinde denedim ama filtre yapınca doğru sonuç vermiyor listenin tamamını seçince doğru yeri seçiyor ama filtre yapınca farklı farklı yerleri seçiyor
 
Filtre edip Listboxa verileri çektiğiniz kodlarınız paylaşır mısınız?
 
Kod:
LisBoxtan seçmek için;
---------------------------
Private Sub ListBox1_Click()
Dim i As Integer
For i = 0 To ListBox1.ListCount - 1
If ListBox1.Selected(i) = True Then
Sheets("Veri Girişi").Select
Sheets("Veri Girişi").Range("A" & ListBox1.List(ListBox1.ListIndex + 1, 0)).Select

End If
Next
End Sub

---------------------------
TexBox arama alanı
---------------------------

Private Sub CommandButton1_Click()
On Error Resume Next
Me.ListBox1.Clear
Dim r, last_row As Integer
last_row = Sayfa2.Range("A10000").End(xlUp).Row
For r = 2 To last_row
          a = Len(Me.TextBox1.Text)
          If UCase(Left(Sayfa2.Cells(r, criterion).Value, a)) = UCase(Me.TextBox1.Text) Then
          With Me.ListBox1
          .AddItem Sayfa2.Cells(r, "A").Value
          .List(.ListCount - 1, 1) = Sayfa2.Cells(r, "B").Value
          .List(.ListCount - 1, 2) = Sayfa2.Cells(r, "C").Value
          .List(.ListCount - 1, 3) = Sayfa2.Cells(r, "D").Value
          .List(.ListCount - 1, 4) = Sayfa2.Cells(r, "E").Value
          .List(.ListCount - 1, 5) = Sayfa2.Cells(r, "F").Value
          .List(.ListCount - 1, 6) = Sayfa2.Cells(r, "G").Value
          .List(.ListCount - 1, 7) = Sayfa2.Cells(r, "H").Value
          .List(.ListCount - 1, 8) = Sayfa2.Cells(r, "I").Value

          End With
          End If
          Next r

End Sub
------------------------------
Private Sub ComboBox1_Change()
Dim c As Integer
Dim column_headers
column_headers = Array("A", "B", "C", "D", "E", "F", "G", "H", "I")

For c = 1 To 9
If Sayfa2.Cells(1, c).Value = Me.ComboBox1.Value Then
criterion = column_headers(c - 1)
End If
Next

Me.ListBox1.Clear
Me.TextBox1.Value = ""
Me.ListBox1.SetFocus

End Sub
-------------------------------
 
Bu kodlarda #5 nolu mesajımda dediğim işlemi yapmamışsınız ki !!
 
Butona aid kodlarınızı yeniden düzenledim.
Kolon genişliklerinizi verilerin uzunluğunu bilemediğim için ayarlamadım.
Siz görsel olarak düzgün olacak şekilde ListBox Properties kısmından gerekli ayarlamayı yapınız.
İlk kolon için genişliği 0-SIFIR olarak girin.

C++:
Private Sub CommandButton1_Click()
On Error Resume Next
Me.ListBox1.Clear
Me.ListBox1.ColumnCount = 10
Dim r, last_row As Integer
last_row = Sayfa2.Range("A10000").End(xlUp).Row
For r = 2 To last_row
          a = Len(Me.TextBox1.Text)
          If UCase(Left(Sayfa2.Cells(r, criterion).Value, a)) = UCase(Me.TextBox1.Text) Then
          With Me.ListBox1
          .AddItem r
          .List(.ListCount - 1, 1) = Sayfa2.Cells(r, "A").Value
          .List(.ListCount - 1, 2) = Sayfa2.Cells(r, "B").Value
          .List(.ListCount - 1, 3) = Sayfa2.Cells(r, "C").Value
          .List(.ListCount - 1, 4) = Sayfa2.Cells(r, "D").Value
          .List(.ListCount - 1, 5) = Sayfa2.Cells(r, "E").Value
          .List(.ListCount - 1, 6) = Sayfa2.Cells(r, "F").Value
          .List(.ListCount - 1, 7) = Sayfa2.Cells(r, "G").Value
          .List(.ListCount - 1, 8) = Sayfa2.Cells(r, "H").Value
          .List(.ListCount - 1, 9) = Sayfa2.Cells(r, "I").Value

          End With
          End If
          Next r

End Sub
 
Butona aid kodlarınızı yeniden düzenledim.
Kolon genişliklerinizi verilerin uzunluğunu bilemediğim için ayarlamadım.
Siz görsel olarak düzgün olacak şekilde ListBox Properties kısmından gerekli ayarlamayı yapınız.
İlk kolon için genişliği 0-SIFIR olarak girin.

C++:
Private Sub CommandButton1_Click()
On Error Resume Next
Me.ListBox1.Clear
Me.ListBox1.ColumnCount = 10
Dim r, last_row As Integer
last_row = Sayfa2.Range("A10000").End(xlUp).Row
For r = 2 To last_row
          a = Len(Me.TextBox1.Text)
          If UCase(Left(Sayfa2.Cells(r, criterion).Value, a)) = UCase(Me.TextBox1.Text) Then
          With Me.ListBox1
          .AddItem r
          .List(.ListCount - 1, 1) = Sayfa2.Cells(r, "A").Value
          .List(.ListCount - 1, 2) = Sayfa2.Cells(r, "B").Value
          .List(.ListCount - 1, 3) = Sayfa2.Cells(r, "C").Value
          .List(.ListCount - 1, 4) = Sayfa2.Cells(r, "D").Value
          .List(.ListCount - 1, 5) = Sayfa2.Cells(r, "E").Value
          .List(.ListCount - 1, 6) = Sayfa2.Cells(r, "F").Value
          .List(.ListCount - 1, 7) = Sayfa2.Cells(r, "G").Value
          .List(.ListCount - 1, 8) = Sayfa2.Cells(r, "H").Value
          .List(.ListCount - 1, 9) = Sayfa2.Cells(r, "I").Value

          End With
          End If
          Next r

End Sub
İlgilendiğiniz için teşekkür ederim kolay gelsin
 
Geri
Üst