EXCEL VBA CHARTS

 

EXCEL VBA CHARTS NEDİR?

VBA Grafikleri, kullanıcının seçtiği grafik türüne göre verileri görsel olarak temsil eder. VBA Grafiklerinin nesne türünde olduğunu unutmayın; bunlara başvurmamız gerektiğinde, bunlara nesne olarak başvurmayı unutmamalıyız.



Bir Excel çalışma sayfasında, verileri görselleştirmek için bir grafik oluşturmanın manuel sürecinden geçeriz, ancak VBA grafiklerinde bu süreç bazı basit kodlarla otomatikleştirilebilir. Örneğin, Excel'deki aşağıdaki verilere bakın.

VBA Grafik Giriş Örneği

A1'den B6'ya kadar ürün bazında satış bilgisi tablomuz var. Aşağıdaki kodu kullanabilir ve basit VBA grafikleri ekleyebiliriz. 


Sub VBA_Charts()
Dim Ws As Worksheet
Dim Product_Chart As Object
Set Ws = ActiveSheet
Set Product_Chart = Ws.Shapes.AddChart2
With Product_Chart.Chart
.SetSourceData Range(“A1:B6”)
.ChartType = xlColumnClustered
.ChartTitle.Text = “Product-wise Sales Performance”
End With
End Sub


Bu kodu çalıştırdığımızda aşağıdaki grafiği elde edeceğiz.

VBA Grafik Giriş Örneği - Çıktı

ÖNEMLİ NOKTALAR

  • VBA Grafik koleksiyonu VBA nesne koleksiyonunun bir parçasıdır.
  • Varsayılan olarak grafik ayrı bir çalışma sayfasına eklenecektir.
  • Aynı çalışma sayfasına bir grafik eklemek için çalışma sayfası referansını kullanmalıyız ve bu çalışma sayfasında chart.add metodunu kullanmalıyız.
  • FOR EACH döngüsünü kullanarak tüm grafikler arasında dolaşabiliriz.
  • VBA Grafik başlığı ChartTitle.Text özelliğini kullanarak değiştirilebilir.
  • VBA Grafiklerinin PDF'e aktarımı, grafiğin PDF formatında kaydedilmesiyle yapılabilir.

Excel'de VBA Kodu Kullanarak Grafikler Nasıl Eklenir?

VBA kodunu kullanarak VBA grafikleri oluşturmak için adım adım bir yaklaşım gösterelim. Aşağıda listelenen örnekleri ve adımları izleyin.


Örnek 1 – VBA Kodlamasını Kullanarak Grafikler Oluşturma

Herhangi bir grafik oluşturmak için veriye sahip olmak hayati önem taşır; grafikler yalnızca verilerin görsel bir temsilidir. Bu nedenle, VBA Grafikleri kullanarak bir grafik eklemek için kullanacağımız aşağıdaki verilere sahibiz.

VBA Grafikleri Örnek 1

Bir ayda cep telefonu satan satış elemanı sayısına ilişkin veridir. Bu veriyi VBA Grafikleri kullanarak görselleştirelim.

Adım 1: Makroya isim vererek alt rutin prosedürünü başlatın.

VBA Grafikleri Örnek 1 - Adım 1

Adım 2: Bir değişkeni Grafik nesnesi veri türü olarak tanımlamalıyız.

VBA Grafikleri Örnek 1 - Adım 2

Adım 3: Tanımlı değişken “Sales_Chart” bir nesne değişkenidir; dolayısıyla “Set” anahtar sözcüğünü kullanarak grafiğe ait referansı ayarlamalıyız.

VBA Grafikleri Örnek 1 - Adım 3

Adım 4: “Set” anahtar sözcüğünü kullanarak referansı ayarladıktan sonra, “Sales_Chart” değişken adını kullanarak Grafiğin tüm özelliklerine ve yöntemlerine erişebiliriz. Grafiğin tüm kullanılabilir özelliklerini ve yöntemlerini gösteren IntelliSense listesini görmek için değişken adını ve ardından bir noktayı girin.

VBA Grafikleri Örnek 1 - Adım 4

Adım 5: Grafiklerle yapmamız gereken ilk şey veri aralığı alanını ayarlamak. Bunu yapmak için, Charts nesnesinin “SetSourceData” metodunu kullanın.

VBA Grafikleri Örnek 1 - Adım 5

“SetSourceData” metodunu seçtiğimizde argümanlarını görebiliriz   .

VBA Grafikleri Örnek 1 - Adım 5 - setsourcedata

Adım 6: “Kaynak Olarak Aralık” argümanı için, çalışma sayfasından veri aralığını seçmeliyiz. A1'den B8'e kadar veri aralığını sağlayalım.

Veri aralığını vermeden önce bir hususu aklımızda tutmamız gerekiyor; çalışma sayfası adıyla birlikte veri aralığını da vermemiz gerekiyor.

Burada veriler “Satış Verileri” çalışma sayfasındadır.

VBA Grafikleri Örnek 1 - Adım 6 - Satış Verileri

Çalışma sayfası adıyla birlikte veri aralığını da verelim.

VBA Grafikleri Örnek 1 - Adım 6 - Çalışma Sayfası

Adım 7: Sonra, kaynak verileri görselleştirmek için hangi tür grafiğin eklenmesi gerektiğini, yani "grafik türünü" seçmeliyiz.

“Sales_Chart” grafik değişkenini girin ve IntelliSense listesinden grafik türünü seçin.

VBA Grafikleri Örneği 1 - Adım 7

Adım 8: Grafik türü özelliğini seçtikten sonra. Eşittir işareti girin; önceden tanımlanmış tüm grafiklerin listelendiğini göreceğiz.

VBA Grafikleri Örnek 1 - Adım 8

Adım 9: Sütun çubuk grafiğini eklemek için “xlColumnClustered” öğesini seçin .

VBA Grafikleri Örnek 1 - Adım 9

Adım 10: Grafik türüne karar verildikten sonra bir grafik başlığı eklemeliyiz. Bunun için “ChartTitle” özelliğini kullanın ve eşittir işareti girerek ayarlayın.

VBA Grafikleri Örnek 1 - Adım 10

VBA Grafikleri ile başlamak için bu yeterlidir. Aşağıda tam kod bulunmaktadır:

Sub VBA_Charts_Example1()
Dim Sales_Chart As Chart
Set Sales_Chart = Charts.Add
Sales_Chart.SetSourceData Worksheets(“Sales Data”).Range(“A1:B8”)
Sales_Chart.ChartType = xlColumnClustered
Sales_Chart.ChartTitle.Text = “Sales Performance”
End Sub

Kodu çalıştıralım. Aşağıdaki gibi bir grafik elde ederiz.

VBA Grafikleri Örnek 1 - Adım 9 - Grafik

Grafiği ayrı bir çalışma sayfasında alıyoruz çünkü grafiğin konumunu tanımlamamız gerekiyor. Bu nedenle, varsayılan olarak Excel grafiği yepyeni bir çalışma sayfasına ekler.

Tablonun Tüm Özelliklerini ve Yöntemlerini With İfadesine Dahil Edin

Yukarıdaki kodda, her seferinde, Chart nesnesiyle ilişkili tüm özelliklere ve yöntemlere erişmek için "Sales_Chart" adlı grafik değişkenini kullandık. Ancak, bu en iyi kodlama uygulaması değildir. Chart nesnesiyle ilişkili tüm özellikleri ve yöntemleri dahil etmek için WITH ifadesini kullanacağız. Aşağıdaki koda bakın.

Sub VBA_Charts_Example1()
Dim Sales_Chart As Chart
Set Sales_Chart = Charts.Add
With Sales_Chart
.SetSourceData Worksheets(“Sales Data”).Range(“A1:B8”)
.ChartType = xlColumnClustered
.ChartTitle.Text = “Sales Performance”
End With
End Sub

Sarı renkli koddan da görebileceğiniz gibi, WITH ifadesinin içerisinde değişken ismini bir kez kullandık ve içerisinde de Chart nesnesine ait tüm özellikleri ve metodları kullandık.

Verilerin bulunduğu çalışma sayfasına grafiği eklemeyi deneyelim.

Örnek 2 – Şekil Olarak Aynı Excel Sayfasıyla Bir Grafik Oluşturun

Tabloyu aynı sayfaya eklemek için biraz farklı bir yaklaşım izlememiz gerekiyor. Aşağıda listelenen adımları takip edelim.

Adım 1: Çalışma sayfası referansını ayarlamak için bir değişken tanımlayın.

VBA Grafikleri Örneği 2 - Adım 1

Adım 2: Hedeflenen çalışma sayfası referansını, nihai grafiği ekleyeceğimiz tanımlanmış değişkene ayarlayın. Bu durumda, grafiği veri sayfası çalışma sayfasına, yani "Satış Verileri"ne eklemeliyiz.

VBA Grafikleri Örneği 2 - Adım 2

Adım 3: VBA'da Aralık referansını ayarlamak için bir değişken tanımlayın .

VBA Grafikleri Örneği 2 - Adım 3

Adım 4: Veri çalışma sayfası dahil olmak üzere veri aralığı referansını Aralık değişkenine ayarlayın.

VBA Grafikleri Örneği 2 - Adım 4

Adım 5: Nesne türünde bir değişken tanımlayın.

VBA Grafikleri Örneği 2 - Adım 5

Adım 6: Çalışma sayfası değişkeni Ws'yi kullanarak, tanımlanan değişken için grafik referansını hedef sayfada Şekil olarak ayarlayın.

VBA Grafikleri Örneği 2 - Adım 6

Adım 7: WITH ifadesini ve grafik değişken adını kullanın.

VBA Grafikleri Örneği 2 - Adım 7

Adım 8: Daha önce kullanılan kodu kullanarak WITH ifadesinin içerisinde bir grafik oluşturun.

Sub VBA_Charts_Example2()
Dim Ws As Worksheet
Set Ws = Worksheets(“Sales Data”)
Dim Rng As Range
Set Rng = Ws.Range(“A1:B8”)
Dim MyChart As Object
Set MyChart = Ws.Shapes.AddChart2
With MyChart.Chart
.SetSourceData Rng ‘Here we are using the data range variable RNG to hold the data range
.ChartType = xlPie ‘We are using the PIE chart
.ChartTitle.Text = “Product-wise Sales Performance”
.ApplyDataLabels
End With
End Sub

Kodu çalıştırdığımızda, aynı çalışma sayfasında şekil olarak PIE grafiğini excelde elde edeceğiz .


VBA Grafikleri Örneği 2 - Pasta Grafikleri

Grafiği daha iyi tasarlamak için grafiğin diğer özelliklerini ve yöntemlerini kullanırız ve gerekli ayarları uygularız.

Örnek 3 – Grafikler Arasında Döngü Oluşturmak İçin Kod

Hücreler ve çalışma sayfaları arasında döngü yapmak için döngüler kullanmış olmalısınız. Benzer şekilde, döngüler bir çalışma kitabındaki tüm grafikler arasında döngü yapabilir. Örneğin, bir sayfadaki aşağıdaki grafiklere bakın.

VBA Grafikleri Örnek 3

Aynı veriler ve aynı çalışma sayfası için üç farklı türde grafiğimiz var. Bu üç grafikte değiştirmemiz gereken ortak bir şey başlıktır.

Bunu aynı anda yapabilmek için, bu çalışma sayfaları arasında dolaşıp grafik başlığını değiştirmeliyiz.

Sub VBA_Charts_Example3()
Dim MyChart As ChartObject
For Each MyChart In ActiveSheet.ChartObjects
If MyChart.Name <> “Chart 6” Then
MyChart.Chart.ChartTitle.Text = “Product-wise Sales Performance”
End If
Next MyChart
End Sub

Yazdığımız basit bir döngü kodudur. Çalışma sayfasındaki tüm mevcut grafikler arasında döngü yapacak ve grafik başlığını "Ürün bazında Satış Performansı" olarak değiştirecektir.

Kodu çalıştırdığımızda tüm grafiklerde aşağıdaki değişikliği göreceğiz.

VBA Grafikleri Örnek 3 - Grafikler

Tüm grafiklerin başlığı “Ürün Bazında Satış Performansı” olarak değiştirildi.

Bu döngünün tüm grafiklerde geçerli olması, yapacağımız değişikliklerin tüm grafiklerde aynı olacak olmasıdır.

Ancak, belirli bir grafiği değişikliklerden hariç tutmak istiyorsak, IF mantıksal ifadesini ve grafik adını kullanarak bunları yoksaymalı veya değişiklik yapmak için yalnızca o grafikleri dahil etmeliyiz.

Grafik adlarını görüntülemek için, düzenleme bölümünün altındaki GİRİŞ sekmesine gidin ve “Bul ve Seç” açılır menüsüne tıklayın . “Seçim Bölmesi” seçeneğini belirleyin .

Örnek 3 - Seçim Bölmesi

Çalışma sayfasındaki tüm nesneleri sergileyecek ve isimlerini gösterecektir.

Örnek 3 - Seçim

Herhangi bir grafiğin üzerine çift tıklayıp grafik ismini değiştirebiliriz.

Döngünün içindeki grafiğin başlığını değiştirirken “Chart6”yı dahil etmek istemediğimizi varsayalım. Aşağıdaki kodu yazıyoruz.

Sub VBA_Charts_Example3()
Dim MyChart As ChartObject
For Each MyChart In ActiveSheet.ChartObjects
If MyChart.Name <> “Chart 6” Then
MyChart.Chart.ChartTitle.Text = “Product-wise Sales Performance”
End If
Next MyChart
End Sub

Bu kod, IF mantıksal koşulunu kullanarak “Grafik 6” grafik adını arayacaktır. Grafik adı “Grafik 6”ya eşit değilse, “Ürün bazında Satış Performansı”na değişecektir. Grafik adı “Grafik 6”ya eşitse, grafiğin başlık adını değiştirmeyecektir.

Örnek #4 – Grafik Oluşturmak İçin Alternatif Yöntem

Görüldüğü gibi, Chart nesnesini kullanarak bir grafik oluşturabiliriz. Başka bir alternatif yöntem de Chart nesnesi yöntemini kullanmaktır. Aşağıdaki kod, Chart nesnesi yöntemini kullanarak bir grafik oluşturacaktır.

Sub VBA_Charts_Example4()
Dim Ws As Worksheet
Set Ws = Worksheets(“Sales Data”)
Dim Rng As Range
Set Rng = Ws.Range(“A1:B8”)
Dim MyChart As ChartObject
Set MyChart = Ws.ChartObjects.Add(Left:=ActiveCell.Left, Width:=300, Top:=ActiveCell.Top, Height:=200)
With MyChart.Chart
.SetSourceData Rng ‘Here we are using the data range variable RNG to hold the data range
.ChartType = xlPie ‘We are using the PIE chart
.ChartTitle.Text = “Product-wise Sales Performance”
.ApplyDataLabels
End With

End Sub

Önceki ve güncel metotlar arasındaki tek fark, burada “ChartObject” veri tipini kullanmış olmamızdır.

Sonraki adımda  chartobject.add  metodunu kullanarak değişken chart özelliğini ayarlıyoruz. Kodun geri kalanı bir öncekiyle aynı.

Kodu çalıştıralım. Aşağıdaki pasta grafiğini elde edeceğiz.

Örnek 4 - Grafikler

Dikkat Edilmesi Gereken Önemli Noktalar

  • VBA Charts bir nesnedir; nesne referansını bir değişken kullanarak ayarlamazsak hata verecektir.
  • Bir grafik eklediğimizde, veri aralığını ve verilerin bulunduğu çalışma sayfası referansını sağlamalıyız.
  • Bir çalışma sayfasındaki tüm grafikler arasında döngü oluşturduğumuzda, yaptığımız değişiklikler tüm grafikleri etkileyecektir. Ancak, IF mantıksal koşulunu kullanarak grafiğe adıyla atıfta bulunarak belirli grafikleri hariç tutabiliriz .
  • Veri aralığı dinamik değilse ve artarsa, VBA kodu yine de yalnızca eski verileri dikkate alacak, genişletilmiş veri aralığını değil. Bunu önlemek için dinamik aralığı kullanmalıyız.


1. Excel VBA'da Dinamik Grafik nasıl oluşturulur?

Dinamik bir grafik oluşturmak için kod güncellenmiş veri aralığını dinamik olarak alabilmelidir. Aşağıdaki kod veri aralığını dinamik olarak bulacak ve ardından bu veri aralığını kullanarak dinamik bir grafik oluşturacaktır.

Sub VBA_Charts_Example_FAQ()
Dim Ws As Worksheet
Set Ws = Worksheets(“Sales Data”)
'Son kullanılan satırı dinamik olarak bul
Dim LR As Long
LR = Ws.Cells(Rows.Count, 1).End(xlUp).Row
'Son kullanılan sütunu dinamik olarak bul
Dim LC As Long
LC = Ws.Cells(1, Columns.Count).End(xlToLeft).Column
'Aralığı, yeniden boyutlandırma özelliğini ve LR ve LC'yi tutan değişkenleri kullanarak ayarla
Dim Rng As Range
Set Rng = Cells(1, 1).Resize(LR, LC)
Rng.Select
Dim MyChart As Object
Set MyChart = Ws.Shapes.AddChart2
With MyChart.Chart
.SetSourceData Rng 'Burada veri aralığını tutmak için veri aralığı değişkeni RNG'yi kullanıyoruz
.ChartType = xlPie 'PIE grafiğini kullanıyoruz.ChartTitle.Text
= “Ürün bazında Satış Performansı”
.ApplyDataLabels
End With
End Sub

2. VBA'da bir grafiği nasıl taşırım?

Excel çalışma sayfasında bir grafiği taşımak için chart.parent metodunu kullanmalıyız. Aşağıda bir grafiği taşıma örneği verilmiştir.

With MyChart.Parent
        .Left = Sheets(“Sales Data”).Range(“B1”).Left
        .Top = Sheets(“Sales Data”).Range(“B1”).Top
        .Width = Sheets(“Sales Data”).Range(“B1:G1”).Width
        .Height = Sheets(“Sales Data”).Range(“B1:G10”).Height
  End With

3. VBA'da bir grafiğin adını nasıl değiştirebilirim?

Bir grafiği yeniden adlandırmak için, grafik referansını tutan değişkeni kullanmamız ve ardından o grafiğin “Ad” özelliğini kullanmamız gerekir.

Aşağıdaki kod grafiği “Satış Performans Grafiği” olarak yeniden adlandıracaktır.

MyChart.Name = “Satış Performans Grafiği”

4. ChartObject ile Chart arasındaki fark nedir?

Her ikisi de bir grafik oluşturmak için kullanılır; ancak, bu ikisi arasındaki farka bakalım.

Grafik Nesnesi: Gömülü bir grafik, grafiğin diğer özelliklerine ve yöntemlerine geçmeden önce boyut ve yönelimin ayarlanmasını gerektirir.

Grafik: Grafiğin özelliklerine ve yöntemlerine geçmeden önce hiçbir şeyin ayarlanmasını gerektirmeyen bir nesnedir . Sadece Charts.Add yöntemini gerektirir.

Yorum Gönder

DT KARİYER KPSS Dünyasına Hoş Geldiniz
Sevgili dostum nasıl yardımcı olabilirim?
Bu alana yazınız...