ListView1'e Sayfa İsimlerini almak ve ListView1'de seçilen sayfayı ListView2'de görme

programer

Altın Üye
Katılım
26 Mayıs 2005
Mesajlar
604
Excel Vers. ve Dili
Office 2022 - Türkçe
Altın Üyelik Bitiş Tarihi
16-03-2025
Arkadaşlar merhaba aşağıdaki kodları kullanarak ListBox1'e Sayfa isimlerini alıyordum. ListBox1 deki sayfaya tıkladığım zaman ListBox2' de tıkladığım sayfanın içeriğini görüyordum. Bunu ListView kullanarak yapabilirmiyiz.

Kod:
Private Sub ListBox1_Click()
    Maliyet.Mod_Des = ListBox1.Value
    Sheets(ListBox1.Text).Select
    ListBox2.RowSource = [a1].CurrentRegion.Address
End Sub
Kod:
Private Sub UserForm_Activate()
kacsayfa = Sheets.Count
For X = 9 To kacsayfa
ListBox1.AddItem Sheets.Item(X).Name
Next
End Sub
 

programer

Altın Üye
Katılım
26 Mayıs 2005
Mesajlar
604
Excel Vers. ve Dili
Office 2022 - Türkçe
Altın Üyelik Bitiş Tarihi
16-03-2025
Arkadaşlar merhaba baya araştırdım ama bi sonuca varamadım. ListView'in böyle bi özelliği varmı yokmu. Yoksa ListBox ile devam edicez galiba.
 

Mahmut Kök

Özel Üye
Katılım
14 Temmuz 2006
Mesajlar
878
Excel Vers. ve Dili
Excel 2007 - Türkçe
Sayfanın içeriği derken neyi kast ediyorsunuz? Eğer belli bir sütun aralığı varsa, bunu listviewde gösterebilirsiniz. Dosyanızı ekleyebilirseniz daha iyi anlayabileceğimi sanıyorum. İyi çalışmalar.
 
Katılım
15 Haziran 2006
Mesajlar
3,704
Excel Vers. ve Dili
Excel 2003, 2007, 2010 (TR)
Ekteki örneği inceleyiniz. Burada, sol taraftaki listbox'a sayfa isimleri gelmekte, sayfa ismine tıklandıktan sonra da; sağ tarafta bulunan Listview ve ListBox'a aynı anda veriler yüklenmektedir.

NOT : Şahsen, bu işlem için benim düşüncem ne listview ne de listbox olurdu... Eğer sayfa içeriklerini görüntülemek istiyorsanız, Spreadshet nesnesi bunun için en ideal çözümdür.
Kod:
Option Explicit
Private Sub ListBox1_Click()
Dim arrVeri() As Integer
Dim sh As Worksheet, rng As Range, baslik As Range
Dim i%, j%, y%
Dim bas As Variant
Set sh = Sheets(ListBox1.Text)
Set rng = sh.[A1].CurrentRegion
Set baslik = sh.Range(sh.Cells(1, 1), sh.Cells(1, sh.Cells(1, 255).End(1).Column))
ReDim arrVeri(1 To rng.Rows.Count, 1 To rng.Columns.Count)
For i = 1 To rng.Rows.Count
    For j = 1 To rng.Columns.Count
        arrVeri(i, j) = sh.Cells(i + 1, j)
    Next j
Next i
'------------------------------------------
'LISTBOX'a veri yükleme
'------------------------------------------
With ListBox2
    .Clear
    .ColumnCount = rng.Columns.Count
    .List = arrVeri
End With
'------------------------------------------
'LISTVIEW'e veri yükleme
'------------------------------------------
With ListView1
   .ListItems.Clear
   .ColumnHeaders.Clear
   .View = lvwReport
   .Gridlines = True
   .FullRowSelect = True
    For Each bas In baslik
        .ColumnHeaders.Add , , bas.Text
    Next
On Error Resume Next
    For i = 1 To rng.Rows.Count
        y = y + 1
        .ListItems.Add , , arrVeri(i, 1)
        For j = 1 To rng.Columns.Count
            .ListItems(y).SubItems(j) = arrVeri(i, 2)
        Next j
    Next i
End With
Set sh = Nothing
Set rng = Nothing
Set baslik = Nothing
End Sub
Private Sub UserForm_Initialize()
Dim sh As Worksheet
Me.Caption = "ÖRNEK LISTVIEW ve LISTBOX uygulaması"
For Each sh In Sheets
    ListBox1.AddItem sh.Name
Next
End Sub
 

programer

Altın Üye
Katılım
26 Mayıs 2005
Mesajlar
604
Excel Vers. ve Dili
Office 2022 - Türkçe
Altın Üyelik Bitiş Tarihi
16-03-2025
Sayın fpc tam sitediğim gibi olmuş. Dediğiniz gibi Spreadshet nesnesi bunun için en ideal çözüm olabilir. Bu nesne hakkında fazla bilgim olmadığı için yorum yapamıyacağım.
 
Katılım
15 Haziran 2006
Mesajlar
3,704
Excel Vers. ve Dili
Excel 2003, 2007, 2010 (TR)
Yalnız kodların bir yerinde hata var..
Aşağıdaki satırı;
Kod:
.ListItems(y).SubItems(j) = arrVeri(i, [COLOR=red][B]2[/B][/COLOR])
şu şekilde değiştirin
Kod:
.ListItems(y).SubItems(j) = arrVeri(i, [B][COLOR=red]j+1[/COLOR][/B])
Böylelikle, Listview'e doğru bilgiler yüklenecektir. Yazdıktan sonra kontrol etmemişim bu kısmı galiba :)
 
Üst