Listboxtaki verilerin son yedi tanesi ekranda gözüksün...

Korhan Ayhan

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

Userform üzerinde kullandığım bir Listbox var. Benim yapmak istediğim Userform aktif olduğunda Listboxta son girilen 7 satır gözükmesini sağlamak. Arama yaptım. Aşağıdaki kodu buldum. Fakat bana 2. sütunu (yani B sütununu) baz alarak son 7 satırı gösterebilecek bir kod lazım.

KOD:
ListBox1.ListIndex = ListBox1.ListCount - 1

İyi çalışmalar dilerim.
 
Katılım
8 Haziran 2005
Mesajlar
114
Kod:
Private Sub UserForm_Initialize()
  Dim rng As Range
  For Each rng In Range("B" & [B65536].End(3).Row - 6 & ":" & [B65536].End(3).Address)
    ListBox1.AddItem rng
  Next rng
End Sub
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,239
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Sayın VisualBasic;

Vermiş olduğunuz kodlar hata verdi. (Permission Denied)

Benim kodlarım aşağıdaki şekilde;

Private Sub UserForm_Initialize()
Dim SONHÜCRE1
Dim Rng As Range
ComboBox1.ListRows = 10
SONHÜCRE1 = WorksheetFunction.CountA(Worksheets("PARAMETRELER").Range("B8:B57")) + 7
ComboBox1.RowSource = "PARAMETRELER!B8:B" & SONHÜCRE1
ListBox1.RowSource = "KURLAR!A8:F16808"
ListBox1.ColumnCount = 6
ListBox1.ColumnWidths = 55 & ";" & 55 & ";" & 55 & ";" & 55 & ";" & 55 & ";" & 5
ListBox1.ColumnHeads = True
For Each Rng In Range("B" & [B65536].End(3).Row - 6 & ":" & [B65536].End(3).Address)
ListBox1.AddItem Rng
Next Rng
End Sub

Listboxa 6 sütunluk veri bilgisi geliyor.

Ben 2. sütuna göre son 7 satırı göstermek istiyorum. Neden diye sorarsanız.
Sayfada A sütununda tarihler var ve günlük kur giriyorum. Tarihler 2050 yılına kadar olduğundan B sütununu kullanmak istiyorum.

İyi çalışmalar dilerim. :hey:
 
Katılım
8 Haziran 2005
Mesajlar
114
Sayın COST_CONTROL;
Fakat bana 2. sütunu (yani B sütununu) baz alarak son 7 satırı gösterebilecek bir kod lazım.
Demişsiniz

Soruya bağlı olarak çözümünüzü sunmuştum.

Bu kod hata vermiyor olmalı, soruya göre sunulan çözüm tarafımdan denenerek gönderildi. Ã?ncelikle göndermiş olduğum kodların soruya göre Hata vermediğinin ispatı olarak ektek dosyayı inceleyiniz.

Sorunuza sonradan yaptığınız eklemlerden dolayı birebir çözüm sunulmamış oldu, çünkü sorunuz böyle değildi. Diğer sorunuzuda cevaplamaya çalışayım.

:?
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,239
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Sayın VisualBasic;

İlk olarak sizden özür diliyorum. :oops:

Evet sizin verdiğiniz kodlar doğru çalışıyor.

Doğal olarak siz benim sorduğum şekilde cevap verdiniz. Bende soruyu yanlış sorduğum için cevabınız bana çözüm olmadı.

Ã?rnek dosyayı yolluyorum.

Günlük Döviz Kurları kısmında bulunan Listbox taki 2. sütuna göre son 7 kaydı göstersin istiyorum.

İyi çalışmalar dilerim. :hey:
 

veyselemre

Özel Üye
Katılım
9 Mart 2005
Mesajlar
3,646
Excel Vers. ve Dili
Pro Plus 2021
listbox a ait kodları şu şekilde düzeltirsen son 7 kaydı gösterir sütun isimlerini de
labellere yazman gerekecek

Private Sub UserForm_Initialize()
Dim SONHÜCRE1
ComboBox1.ListRows = 10
SONHÜCRE1 = WorksheetFunction.CountA(Worksheets("PARAMETRELER").Range("B8:B57")) + 7
ComboBox1.RowSource = "PARAMETRELER!B8:B" & SONHÜCRE1

son = [KURLAR!b65536].End(3).Row
ListBox1.RowSource = "KURLAR!A" & son - 6 & ":F" & son

ListBox1.ColumnCount = 6
ListBox1.ColumnWidths = 55 & ";" & 55 & ";" & 55 & ";" & 55 & ";" & 55 & ";" & 5
ListBox1.ColumnHeads = False
End Sub
 
Katılım
8 Haziran 2005
Mesajlar
114
COST_CONTROL' Alıntı:
Sayın VisualBasic;

İlk olarak sizden özür diliyorum. :oops:

Evet sizin verdiğiniz kodlar doğru çalışıyor.

Doğal olarak siz benim sorduğum şekilde cevap verdiniz. Bende soruyu yanlış sorduğum için cevabınız bana çözüm olmadı.

Ã?rnek dosyayı yolluyorum.

Günlük Döviz Kurları kısmında bulunan Listbox taki 2. sütuna göre son 7 kaydı göstersin istiyorum.

İyi çalışmalar dilerim. :hey:
Ã?zür dilemenize gerek yok, ortada özür dilenecek bir mevzu yok ki :hey:

Sadece yanlış anlaşılmaları ortadan kaldırıp çözüm sunmak amacındayım.


Gönderdiğiniz tabloya göre ListBox'un son 7 satırı sütununa göre almasını istiyorsunuz, eğer soru bu ise cevap;

Kod:
Private Sub UserForm_Initialize()
  ListBox1.ColumnCount = 6
  i = 0
  For Each rng In Range("B" & [B65536].End(3).Row - 6 & ":" & [B65536].End(3).Address)
    ListBox1.AddItem
    With ListBox1
      .List(i, 0) = rng.Offset(0, -1)
      .List(i, 1) = rng
      .List(i, 2) = rng.Offset(0, 1)
      .List(i, 3) = rng.Offset(0, 2)
      .List(i, 4) = rng.Offset(0, 3)
      .List(i, 5) = rng.Offset(0, 4)
    End With
    i = i + 1
  Next rng
End Sub
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,239
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Sayın VisualBasic;

Kodları aşağıdaki şekilde uyguladım. Fakat listbox üzerinde hiçbir kaydı göstermedi. Acaba yanlış yeremi yazdım kodları.

Ayrıca Sayın veyselemre nin kodları işimi gördü fakat son 7 kayıdın dışındakileride görmek istiyorum ben. Yani bu formu açtığımda sadece görüntü olarak son 7 kaydı gösterecek ama diğer kayıtlarıda dikey kaydırma çubuğu yardımı ile görmek istiyorum.

Private Sub UserForm_Initialize()
Dim SONHÜCRE1
ComboBox1.ListRows = 10
SONHÜCRE1 = WorksheetFunction.CountA(Worksheets("PARAMETRELER").Range("B8:B57")) + 7
ComboBox1.RowSource = "PARAMETRELER!B8:B" & SONHÜCRE1

ListBox1.ColumnCount = 6
i = 0
For Each rng In Range("B" & [B65536].End(3).Row - 6 & ":" & [B65536].End(3).Address)
ListBox1.AddItem
With ListBox1
.List(i, 0) = rng.Offset(0, -1)
.List(i, 1) = rng
.List(i, 2) = rng.Offset(0, 1)
.List(i, 3) = rng.Offset(0, 2)
.List(i, 4) = rng.Offset(0, 3)
.List(i, 5) = rng.Offset(0, 4)
End With
i = i + 1
Next rng
ListBox1.ColumnWidths = 55 & ";" & 55 & ";" & 55 & ";" & 55 & ";" & 55 & ";" & 5
ListBox1.ColumnHeads = True
End Sub

İyi çalışmalar dilerim.
 

veyselemre

Özel Üye
Katılım
9 Mart 2005
Mesajlar
3,646
Excel Vers. ve Dili
Pro Plus 2021
Private Sub UserForm_Initialize()
Dim SONHÜCRE1
ComboBox1.ListRows = 10
SONHÜCRE1 = WorksheetFunction.CountA(Worksheets("PARAMETRELER").Range("B8:B57")) + 7
ComboBox1.RowSource = "PARAMETRELER!B8:B" & SONHÜCRE1
son = [KURLAR!b65536].End(3).Row
ListBox1.RowSource = "KURLAR!A8:F" & son
ListBox1.ColumnCount = 6
ListBox1.ColumnWidths = 55 & ";" & 55 & ";" & 55 & ";" & 55 & ";" & 55 & ";" & 5
ListBox1.ColumnHeads = True
ListBox1.ListIndex = ListBox1.ListCount - 1
End Sub
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,239
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Sayın veyselemre;

Çok teşekkür ederim. :hey:
 
Katılım
8 Haziran 2005
Mesajlar
114
Kodlar doğru yerde.

Kod:
Kodları aşağıdaki şekilde uyguladım. Fakat listbox üzerinde hiçbir kaydı göstermedi. Acaba yanlış yeremi yazdım kodları.
End komutu kullnıldığında sayfa adı veya indeksini belirtmek gerekir.

Set prm = Sheets("Parametreler")

prm kelimesi artık Sheets("Parametreler")'i ifade edecek. Bu şekilde kullanırsanız sorun ortadan kalkacaktır.

Madem ki Sayın Veysel EMRE'nin kodları işinizi gördü sorun yok demektir.
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,239
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Sayın VisualBasic;

Tabiki sizede çok teşekkür ediyorum. (Zaman ayırıp sorumla ilgilendiniz.)

Sizede iyi çalışmalar dilerim. :hey:
 
Üst