Sub Worksheet_Change(ByVal Target As Range)
Const Formul1 = "SUMPRODUCT((B4:B32=1)*(C4:C32))"
Const Formul2 = "SUMPRODUCT((B4:B32=0)*(C4:C32))"
Const Formul3 = "SUMPRODUCT((E4:E32=1)*(F4:F32))"
Const Formul4 = "SUMPRODUCT((E4:E32=0)*(F4:F32))"
Const Formul5 = "SUMPRODUCT((H4:H32=1)*(I4:I32))"
Const Formul6 = "SUMPRODUCT((H4:H32=0)*(I4:I32))"
Const Formul7 = "SUMPRODUCT((K4:K32=1)*(L4:L32))"
Const Formul8 = "SUMPRODUCT((K4:K32=0)*(L4:L32))"
Const Formul9 = "SUMPRODUCT((N4:N32=1)*(O4:O32))"
Const Formul10 = "SUMPRODUCT((N4:N32=0)*(O4:O32))"
Const Formul11 = "SUMPRODUCT((Q4:Q32=1)*(R4:R32))"
Const Formul12 = "SUMPRODUCT((Q4:Q32=0)*(R4:R32))"
Const Formul13 = "SUMPRODUCT((T4:T32=1)*(U4:U32))"
Const Formul14 = "SUMPRODUCT((T4:T32=0)*(U4:U32))"
UserForm1.Label4 = Evaluate(Formul1) + Evaluate(Formul3) + Evaluate(Formul5) + Evaluate(Formul7) + Evaluate(Formul9) + Evaluate(Formul11) + Evaluate(Formul13)
UserForm1.Label5 = Evaluate(Formul2) + Evaluate(Formul4) + Evaluate(Formul6) + Evaluate(Formul8) + Evaluate(Formul10) + Evaluate(Formul12) + Evaluate(Formul14)
UserForm1.Label6 = UserForm1.Label4 - UserForm1.Label5
End Sub
Private Sub UserForm_Activate()
Dim SeriIsmi(1)
Dim Degerler(3)
Dim Sabitler
Dim YeniGrafik
SeriIsmi(0) = "Örnek Değer"
Degerler(0) = Val(Me.Label4.Caption)
Degerler(1) = Val(Me.Label5.Caption)
Degerler(2) = Val(Me.Label6.Caption)
Set Sabitler = ChartSpace1.Constants
' Chartspace1'e yeni bir grafik ekler.
Set YeniGrafik = ChartSpace1.Charts.Add
' Grafik türünü belirler.
YeniGrafik.Type = Sabitler.chChartTypePie3D
' Grafiği dizilere bağlar.
YeniGrafik.SetData Sabitler.chDimSeriesNames, _
Sabitler.chDataLiteral, SeriIsmi
YeniGrafik.SeriesCollection(0).SetData Sabitler.chDimValues, _
Sabitler.chDataLiteral, Degerler
End Sub
Yukarıdaki kodlardan anlaşılıyorki;sayfa1 de yapılan toplamlar SUMPRODUCT ile toplanıyor ve labellar üzerinden sonuçlar alınıyor.
Daha sonra labellardan alınan bu veriler chartspace 'de grafik halinde gösteriliyor.
Ama userform her çalıştığında chartspace'de yanyana 1,2,3.... grafik ekliyor.
Benim sorum ise; userforma 1 adet grafik ekledikten sonra labellardaki değişim bu grafik üzerinde olsun
bu kodları kaldırıp;
Dim YeniGrafik
' Chartspace1'e yeni bir grafik ekler.
Set YeniGrafik = ChartSpace1.Charts.Add
' Grafik türünü belirler.
YeniGrafik.Type = Sabitler.chChartTypePie3D
aşağıda yazan kodlara dizileri bağlamaya çalışmak;
' Grafiği dizilere bağlar.
YeniGrafik.SetData Sabitler.chDimSeriesNames, _
Sabitler.chDataLiteral, SeriIsmi
YeniGrafik.SeriesCollection(0).SetData Sabitler.chDimValues, _
Sabitler.chDataLiteral, Degerler
sevgi ve saygıyla
Const Formul1 = "SUMPRODUCT((B4:B32=1)*(C4:C32))"
Const Formul2 = "SUMPRODUCT((B4:B32=0)*(C4:C32))"
Const Formul3 = "SUMPRODUCT((E4:E32=1)*(F4:F32))"
Const Formul4 = "SUMPRODUCT((E4:E32=0)*(F4:F32))"
Const Formul5 = "SUMPRODUCT((H4:H32=1)*(I4:I32))"
Const Formul6 = "SUMPRODUCT((H4:H32=0)*(I4:I32))"
Const Formul7 = "SUMPRODUCT((K4:K32=1)*(L4:L32))"
Const Formul8 = "SUMPRODUCT((K4:K32=0)*(L4:L32))"
Const Formul9 = "SUMPRODUCT((N4:N32=1)*(O4:O32))"
Const Formul10 = "SUMPRODUCT((N4:N32=0)*(O4:O32))"
Const Formul11 = "SUMPRODUCT((Q4:Q32=1)*(R4:R32))"
Const Formul12 = "SUMPRODUCT((Q4:Q32=0)*(R4:R32))"
Const Formul13 = "SUMPRODUCT((T4:T32=1)*(U4:U32))"
Const Formul14 = "SUMPRODUCT((T4:T32=0)*(U4:U32))"
UserForm1.Label4 = Evaluate(Formul1) + Evaluate(Formul3) + Evaluate(Formul5) + Evaluate(Formul7) + Evaluate(Formul9) + Evaluate(Formul11) + Evaluate(Formul13)
UserForm1.Label5 = Evaluate(Formul2) + Evaluate(Formul4) + Evaluate(Formul6) + Evaluate(Formul8) + Evaluate(Formul10) + Evaluate(Formul12) + Evaluate(Formul14)
UserForm1.Label6 = UserForm1.Label4 - UserForm1.Label5
End Sub
Private Sub UserForm_Activate()
Dim SeriIsmi(1)
Dim Degerler(3)
Dim Sabitler
Dim YeniGrafik
SeriIsmi(0) = "Örnek Değer"
Degerler(0) = Val(Me.Label4.Caption)
Degerler(1) = Val(Me.Label5.Caption)
Degerler(2) = Val(Me.Label6.Caption)
Set Sabitler = ChartSpace1.Constants
' Chartspace1'e yeni bir grafik ekler.
Set YeniGrafik = ChartSpace1.Charts.Add
' Grafik türünü belirler.
YeniGrafik.Type = Sabitler.chChartTypePie3D
' Grafiği dizilere bağlar.
YeniGrafik.SetData Sabitler.chDimSeriesNames, _
Sabitler.chDataLiteral, SeriIsmi
YeniGrafik.SeriesCollection(0).SetData Sabitler.chDimValues, _
Sabitler.chDataLiteral, Degerler
End Sub
Yukarıdaki kodlardan anlaşılıyorki;sayfa1 de yapılan toplamlar SUMPRODUCT ile toplanıyor ve labellar üzerinden sonuçlar alınıyor.
Daha sonra labellardan alınan bu veriler chartspace 'de grafik halinde gösteriliyor.
Ama userform her çalıştığında chartspace'de yanyana 1,2,3.... grafik ekliyor.
Benim sorum ise; userforma 1 adet grafik ekledikten sonra labellardaki değişim bu grafik üzerinde olsun
bu kodları kaldırıp;
Dim YeniGrafik
' Chartspace1'e yeni bir grafik ekler.
Set YeniGrafik = ChartSpace1.Charts.Add
' Grafik türünü belirler.
YeniGrafik.Type = Sabitler.chChartTypePie3D
aşağıda yazan kodlara dizileri bağlamaya çalışmak;
' Grafiği dizilere bağlar.
YeniGrafik.SetData Sabitler.chDimSeriesNames, _
Sabitler.chDataLiteral, SeriIsmi
YeniGrafik.SeriesCollection(0).SetData Sabitler.chDimValues, _
Sabitler.chDataLiteral, Degerler
sevgi ve saygıyla