Listview additem yöntemi

walabi

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

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

Ekli dosyada kasa kaydı tutmak için hazırlamaya çalıştığım bir excel dosyası mevcut.

Çözemediğim problem ise şu;

Listbox1 ile yaptığım işlemin aynısını Listview1 ile yapmaya çalışıyorum. Ancak takıldığım bir nokta var.

Listbox1 için kodlar
Kod:
Dim i As Long
Dim Liste As Worksheet, Kasa As Worksheet
Set Liste = Sheets("Liste")
Set Kasa = Sheets("Kasa_Case")


On Error Resume Next


For i = 2 To Sheets("Liste").Range("A1048576").End(3).Row

    With ListBox1
    .AddItem Liste.Cells(i, 1)
    .List(.ListCount - 1, 0) = Liste.Cells(i, 0)
    .List(.ListCount - 1, 1) = Format(WorksheetFunction.SumIfs(Kasa.Range("G:G"), Kasa.Range("B:B"), Liste.Cells(i, 1), Kasa.Range("E:E"), Liste.Cells(i, 2)), "#,##0.00")
    .List(.ListCount - 1, 2) = Format(WorksheetFunction.SumIfs(Kasa.Range("G:G"), Kasa.Range("B:B"), Liste.Cells(i, 1), Kasa.Range("E:E"), Liste.Cells(i, 3)), "#,##0.00")
    .List(.ListCount - 1, 3) = Format(WorksheetFunction.SumIfs(Kasa.Range("G:G"), Kasa.Range("B:B"), Liste.Cells(i, 1), Kasa.Range("E:E"), Liste.Cells(i, 4)), "#,##0.00")
    .List(.ListCount - 1, 4) = Format(WorksheetFunction.SumIfs(Kasa.Range("G:G"), Kasa.Range("B:B"), Liste.Cells(i, 1), Kasa.Range("E:E"), Liste.Cells(i, 5)), "#,##0.00")

    End With

Next i

Listview1 için kodlar;

Kod:
Dim i As Long
Dim Liste As Worksheet, Kasa As Worksheet
Set Liste = Sheets("Liste")
Set Kasa = Sheets("Kasa_Case")



    ListView1.ListItems.Clear






        For i = 2 To Sheets("Liste").Range("A1048576").End(3).Row
        With ListView1
        
            ListView1.ListItems.Add , , Liste.Cells(i, 1)
            ListView1.ListItems(i - 1).SubItems(1) = Format(WorksheetFunction.SumIfs(Kasa.Range("G:G"), Kasa.Range("B:B"), Liste.Cells(i, 1), Kasa.Range("E:E"), Liste.Cells(i, 2)), "#,##0.00")
            ListView1.ListItems(i - 1).SubItems(2) = Format(WorksheetFunction.SumIfs(Kasa.Range("G:G"), Kasa.Range("B:B"), Liste.Cells(i, 1), Kasa.Range("E:E"), Liste.Cells(i, 3)), "#,##0.00")
            ListView1.ListItems(i - 1).SubItems(3) = Format(WorksheetFunction.SumIfs(Kasa.Range("G:G"), Kasa.Range("B:B"), Liste.Cells(i, 1), Kasa.Range("E:E"), Liste.Cells(i, 4)), "#,##0.00")
            ListView1.ListItems(i - 1).SubItems(4) = Format(WorksheetFunction.SumIfs(Kasa.Range("G:G"), Kasa.Range("B:B"), Liste.Cells(i, 1), Kasa.Range("E:E"), Liste.Cells(i, 5)), "#,##0.00")
        
    
            ListView1.ListItems.Item(i - 1).ListSubItems(0).ForeColor = vbRed
            ListView1.ListItems.Item(i - 1).ListSubItems(1).ForeColor = vbRed
            ListView1.ListItems.Item(i - 1).ListSubItems(2).ForeColor = vbBlue
            ListView1.ListItems.Item(i - 1).ListSubItems(3).ForeColor = vbBlue
            ListView1.ListItems.Item(i - 1).ListSubItems(4).ForeColor = vbBlue
         End With
        Next i
listview in listboxın verdiği sonuç gibi sonuç vermemesinin sebebi nedir.

Listbox1 üzerinde ilk sütuna Liste adlı excel sayfasındaki veriler sıralanıyor, ancak listview1 de sadece ilk veri satırı geliyor. kaçırdığım nokta nedir, yada kodlarda nerei nasıl düzeltmeliyim
 

Ekli dosyalar

walabi

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

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

Konuyla ilgili olarak destek alabilir miyim, konu günceldir.
 

Ziynettin

Destek Ekibi
Destek Ekibi
Katılım
18 Nisan 2008
Mesajlar
1,106
Excel Vers. ve Dili
office2010
Form 4 üzerinde çalışma kendinize göre uyarlama yaparsınız.
 

Ekli dosyalar

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,298
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Varolan kodunuzu aşağıdaki gibi değiştirip kullanabilirsiniz.

C++:
Private Sub ListView_Topla()
    Dim X As Long, S1 As Worksheet, S2 As Worksheet, WF As WorksheetFunction
    
    Set S1 = Sheets("Liste")
    Set S2 = Sheets("Kasa_Case")
    Set WF = WorksheetFunction

    With ListView1
        .ListItems.Clear
        .View = lvwReport
        .Gridlines = True
        .FullRowSelect = True
        
        .ColumnHeaders.Add , , "GELİR YERLERİ", 80, lvwColumnLeft
        .ColumnHeaders.Add , , "KASA TL", 80, lvwColumnRight
        .ColumnHeaders.Add , , "KASA USD", 80, lvwColumnRight
        .ColumnHeaders.Add , , "KASA EURO", 80, lvwColumnRight
        .ColumnHeaders.Add , , "KASA DİĞER", 80, lvwColumnRight
        
        For X = 2 To S1.Cells(S1.Rows.Count, 1).End(3).Row
            .ListItems.Add , , S1.Cells(X, 1)
            .ListItems(X - 1).SubItems(1) = Format(WF.SumIfs(S2.Range("G:G"), S2.Range("B:B"), S1.Cells(X, 1), S2.Range("E:E"), S1.Cells(X, 2)), "#,##0.00")
            .ListItems(X - 1).SubItems(2) = Format(WF.SumIfs(S2.Range("G:G"), S2.Range("B:B"), S1.Cells(X, 1), S2.Range("E:E"), S1.Cells(X, 3)), "#,##0.00")
            .ListItems(X - 1).SubItems(3) = Format(WF.SumIfs(S2.Range("G:G"), S2.Range("B:B"), S1.Cells(X, 1), S2.Range("E:E"), S1.Cells(X, 4)), "#,##0.00")
            .ListItems(X - 1).SubItems(4) = Format(WF.SumIfs(S2.Range("G:G"), S2.Range("B:B"), S1.Cells(X, 1), S2.Range("E:E"), S1.Cells(X, 5)), "#,##0.00")
        
            .ListItems(X - 1).ForeColor = vbRed
            .ListItems(X - 1).ListSubItems(1).ForeColor = vbRed
            .ListItems(X - 1).ListSubItems(2).ForeColor = vbBlue
            .ListItems(X - 1).ListSubItems(3).ForeColor = vbBlue
            .ListItems(X - 1).ListSubItems(4).ForeColor = vbBlue
        Next
    End With

    Set S1 = Nothing
    Set S2 = Nothing
    Set WF = Nothing
End Sub
 

walabi

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

excel 2013
Altın Üyelik Bitiş Tarihi
06-08-2025
Varolan kodunuzu aşağıdaki gibi değiştirip kullanabilirsiniz.

C++:
Private Sub ListView_Topla()
    Dim X As Long, S1 As Worksheet, S2 As Worksheet, WF As WorksheetFunction
   
    Set S1 = Sheets("Liste")
    Set S2 = Sheets("Kasa_Case")
    Set WF = WorksheetFunction

    With ListView1
        .ListItems.Clear
        .View = lvwReport
        .Gridlines = True
        .FullRowSelect = True
       
        .ColumnHeaders.Add , , "GELİR YERLERİ", 80, lvwColumnLeft
        .ColumnHeaders.Add , , "KASA TL", 80, lvwColumnRight
        .ColumnHeaders.Add , , "KASA USD", 80, lvwColumnRight
        .ColumnHeaders.Add , , "KASA EURO", 80, lvwColumnRight
        .ColumnHeaders.Add , , "KASA DİĞER", 80, lvwColumnRight
       
        For X = 2 To S1.Cells(S1.Rows.Count, 1).End(3).Row
            .ListItems.Add , , S1.Cells(X, 1)
            .ListItems(X - 1).SubItems(1) = Format(WF.SumIfs(S2.Range("G:G"), S2.Range("B:B"), S1.Cells(X, 1), S2.Range("E:E"), S1.Cells(X, 2)), "#,##0.00")
            .ListItems(X - 1).SubItems(2) = Format(WF.SumIfs(S2.Range("G:G"), S2.Range("B:B"), S1.Cells(X, 1), S2.Range("E:E"), S1.Cells(X, 3)), "#,##0.00")
            .ListItems(X - 1).SubItems(3) = Format(WF.SumIfs(S2.Range("G:G"), S2.Range("B:B"), S1.Cells(X, 1), S2.Range("E:E"), S1.Cells(X, 4)), "#,##0.00")
            .ListItems(X - 1).SubItems(4) = Format(WF.SumIfs(S2.Range("G:G"), S2.Range("B:B"), S1.Cells(X, 1), S2.Range("E:E"), S1.Cells(X, 5)), "#,##0.00")
       
            .ListItems(X - 1).ForeColor = vbRed
            .ListItems(X - 1).ListSubItems(1).ForeColor = vbRed
            .ListItems(X - 1).ListSubItems(2).ForeColor = vbBlue
            .ListItems(X - 1).ListSubItems(3).ForeColor = vbBlue
            .ListItems(X - 1).ListSubItems(4).ForeColor = vbBlue
        Next
    End With

    Set S1 = Nothing
    Set S2 = Nothing
    Set WF = Nothing
End Sub

Teşekkürler Korhan bey, ellerinize sağlık.
 
Üst