Listview Checkbox işaretleyince toplamlarını alma

Katılım
15 Haziran 2007
Mesajlar
115
Excel Vers. ve Dili
2003 Türkçe
Selam arkadaşlar,
Hazırladığım komple bir muhasebe programı var. hotels programıma benziyor.
Userform da ListView öğesine checkbox ekledim. Burada işaretlediğim checkbox ların toplamını almak istiyorum fakat başaramadım. kod şöyle;
Nerede hata yaptığımı bulamadım. Yardımcı olursanız memnun olurum.

Dim ChequeTotal As Double
Sheets("ChequeBook").Select
Set Sh = ActiveSheet
EndRow = Sh.Cells(65536, 1).End(xlUp).Row
With ListView1
.ListItems.Clear
For i = StartRow To EndRow
.ListItems.Add , , Sh.Cells(i, 1)
x = x + 1
With .ListItems(x).ListSubItems
.Add , , Sh.Cells(i, 2)
.Add , , FormatDateTime(Sh.Cells(i, 3), vbGeneralDate)
.Add , , Sh.Cells(i, 4)
.Add , , Format(Sh.Cells(i, 5), "#,##0.00")
.Add , , i

'Checkbox işaretlediğim zaman toplam alsın istiyorum...
If ListView1.ListItems.Item(x).Checked = True Then
ChequeTotal = ChequeTotal + ListView1.ListItems x).SubItems(4)
Else
' Burada Listview toplamlarını alıyor....
ChequeTotal = ChequeTotal + ListView1.ListItems(x).SubItems(4)
End If
End With
Next i
End With
TextBox18.Value = Format(ChequeTotal, "#,##0.00")

------ BENZER YARDIM ARAYAN OLURSA AŞAĞIDAKİ KODDA Checkbox SEÇİLİNCE EXCEL E AKTARMAK İÇİN ÖRNEK----

EndRow = ListView1.ListItems.count
For S = 1 To ListView1.ListItems.count
If ListView1.ListItems.Item(S).Checked = True Then
s1.Cells(S + 19, "A") = ListView1.ListItems(S) * 1
s1.Cells(S + 19, "B") = ListView1.ListItems(S).SubItems(1)
s1.Cells(S + 19, "C") = ListView1.ListItems(S).SubItems(2)
s1.Cells(S + 19, "D") = ListView1.ListItems(S).SubItems(3)
s1.Cells(S + 19, "E") = ListView1.ListItems(S).SubItems(4)
s1.Cells(S + 19, "F") = ListView1.ListItems(S).SubItems(5)
s1.Cells(S + 19, "G") = Format(ListView1.ListItems(S).SubItems(6), "#,##0.00") * 1
ChequeTotal = ChequeTotal + ListView1.ListItems(S).SubItems(6)
End If
Next
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
43,029
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Selamlar,

Bu tarz sorularınızda küçükte olsa bir örnek dosya eklerseniz yardım almanız kolaylaşacaktır.

Ekteki örnek dosyayı incelermisiniz. Sanırım kendinize uyarlayabilirsiniz.
 

Ekli dosyalar

halit3

Uzman
Uzman
Katılım
18 Ocak 2008
Mesajlar
12,853
Excel Vers. ve Dili
2003 excell türkçe
ve
2007 excell türkçe
böyle denermisiniz.

If ListView1.ListItems.Item(x).Checked = True Then
ChequeTotal = ChequeTotal + (Round(ListView1.ListItems(x).SubItems(4), 2) * 1)
Else
ChequeTotal = ChequeTotal + (Round(ListView1.ListItems(x).SubItems(4), 2) * 1)
End If
 

halit3

Uzman
Uzman
Katılım
18 Ocak 2008
Mesajlar
12,853
Excel Vers. ve Dili
2003 excell türkçe
ve
2007 excell türkçe
kotda eksiklik olmuş

If ListView1.ListItems.Item(x).Checked = True Then
ChequeTotal = ChequeTotal + (Round(ListView1.ListItems(x).SubItems(4), 2) * 1)
Else
ChequeTotal = ChequeTotal + (Round(ListView1.ListItems(x).SubItems(4), 2) * 1)
End If
 
Katılım
15 Haziran 2007
Mesajlar
115
Excel Vers. ve Dili
2003 Türkçe
İlginize Teşekkürler, olmadı başka bir çözüm buldum, command button yardımıyla hallettim. Diğer arkadaşlara yardımı olur diye kodu ekliyorum. Checkbox ları direk işaretleyince toplama ulaşılamıyor.

Private Sub Toplam_Click()
Dim ChequeTotal As Double
Dim i As Integer
With ListView1
For i = 1 To .ListItems.count
If ListView1.ListItems.Item(i).Checked = True Then
ChequeTotal = Format(ChequeTotal + ListView1.ListItems(i).SubItems(7))
End If
Next i
TextBox18.Value = Format(ChequeTotal, "#,##0.00")
End With
End Sub

Not:
Üzerinde çalıştığım proje, 4 mb "Cari, fatura, makbuz, stok, kasa, banka, çek, gelir tablo, bilanço dan oluşan ve tüm modüller entegre çalışan komple bir muhasebe paketi" onun için ekleyemedim, kısalttığım zaman, tüm veriler şaşıyor.

Tekrar Teşekkürler,

Korhan Bey, örnek dosyada hata veriyor. Windows common controls 6.0 nereden indirebilirim? Galiba istediğim bu modül
Private Sub ListView1_ItemCheck(ByVal Item As MSComctlLib.ListItem)
 

halit3

Uzman
Uzman
Katılım
18 Ocak 2008
Mesajlar
12,853
Excel Vers. ve Dili
2003 excell türkçe
ve
2007 excell türkçe
listviewde yapar toplamları
bu kodu denermisiniz.

Private Sub ListView1_ItemCheck(ByVal Item As MSComctlLib.ListItem)
For i = 1 To ListView1.ListItems.Count
If ListView1.ListItems.Item(i).Checked = True Then
On Error Resume Next
ChequeTotal = ChequeTotal + (Round(ListView1.ListItems(i).SubItems(8), 2) * 1)
End If
Next i
TextBox18.Value = Format(ChequeTotal, "#,##0.00")
End Sub
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
43,029
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Selamlar,

Sn. Terkanlı versiyon farklılığından hata ile karşılaşıyor olabilirsiniz. Eklediğim örnek dosyayı açın. Kod editörünü açın ve TOOLS-REFERENCES menüsünü açın. "MISSING" ile başlayan satır varsa onay işaretini pasif yapın ve formu açmayı deneyin.

Ayrıca üstteki mesajımdaki dosyada listeden seçim yapılıp aynı item tekrar pasif yapılınca toplama işlemi hatalı oluyordu. Bunu küçük bir ekleme yaparak düzelttim. Yeni dosyayı ineceleyebilirsiniz.
 
Katılım
15 Haziran 2007
Mesajlar
115
Excel Vers. ve Dili
2003 Türkçe
listviewde yapar toplamları
bu kodu denermisiniz.
Halit Bey,
Kod Çalıştı, toplamları alıyor, burada maksadım örneğin 20.000 TL borcum var, checkboxlardan işaretleyip toplamı denk getiriyorum.
Gerçi sadece hobi, normalde Netsis fusion kullanıyoruz.:)

Teşekkür ederim.

Korhan Bey,
Kod çalışıyor
İlginize Teşekkür ederim.
 
Son düzenleme:
Katılım
15 Haziran 2007
Mesajlar
115
Excel Vers. ve Dili
2003 Türkçe
CheckItem

Selam Arkadaşlar,

Aynı konuda başka bir sorum olacak.
Aşağıdaki kodu kullanarak, seçilen ListView öğesinin çek çıkış kaydını yapabiliyorum. Benim istediğim, checkbox seçerek işaretli öğelerin kaydının yapılması. Projeden Örnek dosyayı kısaltarak ekledim.
Yardımcı olabilirseniz sevinirim.

Saygılarımla
Tansu

Dim FindRecordCheque As String
FindRecordCheque = ListView1.ListItems(ListView1.SelectedItem.index)
lastrow = ActiveSheet.UsedRange.Rows.count
For r = lastrow To 1 Step -1
If UCase(Cells(r, 1).Value) = FindRecordCheque Then
Cells(r, 14).Value = TextBox17.Text 'ciro
Cells(r, 15).Value = TextBox13.Text 'verilenin kodu
Cells(r, 16).Value = TextBox14.Text 'verilenin ismi
Cells(r, 17).Value = TextBox15.Text 'çıkış tarihi
End If
Next r
 

Ekli dosyalar

halit3

Uzman
Uzman
Katılım
18 Ocak 2008
Mesajlar
12,853
Excel Vers. ve Dili
2003 excell türkçe
ve
2007 excell türkçe
bu kodu denermisiniz.

Private Sub CommandButton1_Click()
sat = [a65536].End(3).Row + 1
For i = 1 To Me.ListView1.ListItems.count 'Sıra numarası için dönüyor
If Me.ListView1.ListItems(i).Checked = True Then
Cells(sat, 1).Value = ListView1.ListItems(i).Text
For j = 1 To Val(ListView1.ColumnHeaders.count) - 1 'Ayrıntı için dönüyor
Cells(sat, j + 1).Value = ListView1.ListItems(i).ListSubItems(j).Text 'Ayrıntı
Next j
sat = sat + 1
End If
Next i
MsgBox "işlem tamam"
End Sub
 
Üst