• DİKKAT

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

ListBox'ın son sütununda çarpma işlemi

Katılım
8 Haziran 2007
Mesajlar
401
Excel Vers. ve Dili
excel fonksiyonlar
Forumda emeği geçen herkese merhaba. arkadaşlar basit bir dosya hazırladım.
Derdim listbox a her veri alışımda listboxın son sütunundaki verileri çarparak TextBox1 e yazdırmak. Ben ComboBox1 den A yı seçtiğimde son sütundaki değer 2 olduğu için TextBox1 e 2 yazacak. Üstüne combobox1 den B yi seçtiğimde
2 ile (son sütündaki değer 3 olduğu için) 3 ü çarpacak TextBox1 'e 6 yazacak.
Bu böyle devam eder gider. Her veri eklediğimde ListBox1 in son sütunundaki verileri çarpacak TextBox1 e yazacak. İlgilenen arkadaşlara şimdiden teşekkürler. :)
 

Ekli dosyalar

Son düzenleme:
Combobox nesnesinin tıklama olayındaki kodun ilgili bölümünü aşağıdaki gibi düzenleyin.

Kod:
....
With ListBox1
.AddItem
.List(.ListCount - 1, 0) = ActiveCell.Offset(0, 0)
.List(.ListCount - 1, 1) = ActiveCell.Offset(0, 1)
.List(.ListCount - 1, 2) = ActiveCell.Offset(0, 2)
[COLOR="Red"]If TextBox1 = "" Then
    TextBox1 = ActiveCell.Offset(0, 2)
Else
    TextBox1 = TextBox1 * ActiveCell.Offset(0, 2)
End If[/COLOR]
End With
....
 
Combobox nesnesinin tıklama olayındaki kodun ilgili bölümünü aşağıdaki gibi düzenleyin.

Kod:
....
With ListBox1
.AddItem
.List(.ListCount - 1, 0) = ActiveCell.Offset(0, 0)
.List(.ListCount - 1, 1) = ActiveCell.Offset(0, 1)
.List(.ListCount - 1, 2) = ActiveCell.Offset(0, 2)
[COLOR="Red"]If TextBox1 = "" Then
    TextBox1 = ActiveCell.Offset(0, 2)
Else
    TextBox1 = TextBox1 * ActiveCell.Offset(0, 2)
End If[/COLOR]
End With
....

Hocam süper :) Aslında bu sorunun yanıtını pek beklemiyordum. Tek kelimeyle
harika. Emeğinize sağlık . :)
 
Excel ile yapabilecekleriniz hayallerinizle sınırlıdır. Exceli küçümsemeyin. Forumda çok ilginç ve güzel çözümler var. İnceledikçe bunların farkına varabilirsiniz.
 
Excel ile yapabilecekleriniz hayallerinizle sınırlıdır. Exceli küçümsemeyin. Forumda çok ilginç ve güzel çözümler var. İnceledikçe bunların farkına varabilirsiniz.

Korhan hocam aynı dosya üzerinden şöyle bir şey yapabilir miyiz ? ListBox'ın multiselect özelliği açıkken listbox da seçtiğimiz satırların son sütunlarının çarpımını textbox a yazsın. ComboBox dan seçip ListBox a aktarıyorum. Ama çarpma işlemi için seçimi bu sefer ListBox dan yapıyorum. Sizin verdiğiniz örnek üzerinden epey uğraştım ama başaramadım. İlginize şimdiden teşekkürler. :)
 
Formunuza bir buton ekleyin ve aşağıdaki kodu deneyin.

Kod:
Private Sub CommandButton1_Click()
    For X = 0 To ListBox1.ListCount - 1
        If ListBox1.Selected(X) = True Then
            If Sonuc = 0 Then
                Sonuc = ListBox1.List(X, 2)
            Else
                Sonuc = Sonuc * ListBox1.List(X, 2)
            End If
        End If
    Next
    
    TextBox1 = Sonuc
End Sub
 
Formunuza bir buton ekleyin ve aşağıdaki kodu deneyin.

Kod:
Private Sub CommandButton1_Click()
    For X = 0 To ListBox1.ListCount - 1
        If ListBox1.Selected(X) = True Then
            If Sonuc = 0 Then
                Sonuc = ListBox1.List(X, 2)
            Else
                Sonuc = Sonuc * ListBox1.List(X, 2)
            End If
        End If
    Next
    
    TextBox1 = Sonuc
End Sub


Hocam teşekkürler. :)
 
listbox da ondalık sayı çarpımı

Hocam teşekkürler. :)

Hocam 7 nolu mesajdaki kodları ondalık sayılarla denedim.Fakat sonuç alamadım. Val ,CDbl herşeyi denedim. İlk mesajımdaki ekli dosyayı yeniledim. Son sütuna ondalık sayılar ekledim. ListBox da seçili satırların son sütunlarını çarpıp textbox a yazacak. İlginiz için şimdiden teşekkürler. :)
 
Alternatif kod

Kod:
deg1 = 0
For i = 1 To ListBox1.ListCount - 1
deg1 = deg1 + Replace(ListBox1.List(i, 2), ".", ",")
Next
TextBox1.Text = deg1
 
Alternatif kod

Kod:
deg1 = 0
For i = 1 To ListBox1.ListCount - 1
deg1 = deg1 + Replace(ListBox1.List(i, 2), ".", ",")
Next
TextBox1.Text = deg1

Hocam ilginiz için teşekkürler. Bu kodları çarpma işlemi için nasıl değiştirebiliriz ?
Benim yazdığım kodlarda son satıra kadar bir sorun olmuyor. Fakat nasıl oluyorsa
ListBox daki son satırı kodlar sayı olarak algılamıyor herhalde. Break Point ile kontrol ettiğimde atadığım değişkenler son satıra kadar alması gereken ondalık değerleri alıyor. Son satırda almıyor. Atıyorum 2.1 i 21 gibi görüyor.

Dim sonuc As Double

For c = 1 To ListBox1.ListCount - 1

If sonuc = 0 Then
sonuc = ListBox1.List(c, 2)
Else
sonuc = sonuc * ListBox1.List(c, 2)
End If

Next

TextBox1 = sonuc
 
Bunu denermisiniz.

Kod:
Dim sonuc As Double
sonuc = 0
For c = 1 To ListBox1.ListCount - 1
If sonuc = 0 Then
sonuc = Replace(ListBox1.List(c, 2), ".", ",")
Else
sonuc = sonuc * Replace(ListBox1.List(c, 2), ".", ",")
End If
Next
TextBox1 = sonuc
 
Bunu denermisiniz.

Kod:
[CODE]Dim sonuc As Double
sonuc = 0
For c = 1 To ListBox1.ListCount - 1
If sonuc = 0 Then
sonuc = Replace(ListBox1.List(c, 2), ".", ",")
Else
sonuc = sonuc * Replace(ListBox1.List(c, 2), ".", ",")
End If
Next
TextBox1 = sonuc
[/CODE]

Halit hocam kodları aşağıdaki gibi düzenleyince oldu. Tesadüf müdür bilemiyorum ama epeyce bir deneme yaptım. Sanki bu şekilde oldu gibi.


Kod:
Dim sonuc As Double

For c = 1 To ListBox1.ListCount - 1

If sonuc = 0 Then
sonuc = Val(ListBox1.List(c, 2))
Else
sonuc = sonuc * Val(ListBox1.List(c, 2))
End If

Next

TextBox1 = sonuc
 
Geri
Üst