VBA for Charts

VBA for Charts

Change Chart Max Axis

Sub ChartMaxAxis()
Dim ct As Chart
Dim AxisMaxValue As Integer
Dim sh1 As String
Dim sh2 As String
Dim sh3 As String
sh1 = "Slide 7 (1)" '< change sheet name here
sh2 = "Slide 7 (2)" '< change sheet name here
sh3 = "Slide 7 (3)" '< change sheet name here
AxisMaxValue = 2000 '< change to any cell
'sheet Slide 7 (1)
Set ct = Sheets(sh1).ChartObjects("Chart 2").Chart
    With ct
        .Axes(xlValue).MaximumScale = AxisMaxValue
    End With
Set ct = Nothing
'sheet Slide 7 (2)
Set ct = Sheets(sh2).ChartObjects("Chart 2").Chart
    With ct
        .Axes(xlValue).MaximumScale = AxisMaxValue
    End With
Set ct = Nothing
'sheet Slide 7 (3)
Set ct = Sheets(sh3).ChartObjects("Chart 2").Chart
    With ct
        .Axes(xlValue).MaximumScale = AxisMaxValue
    End With
Set ct = Nothing
End Sub

Code explanation:

Excel VBA से Chart Axis का Maximum Value कैसे Set करें

यह VBA Macro (ChartMaxAxis) Excel में बने हुए charts के Y-Axis (Value Axis) का Maximum Scale एक साथ set करने के लिए उपयोग किया जाता है। जब अलग-अलग sheets पर बने charts का scale अलग-अलग होता है, तब data comparison मुश्किल हो जाता है। यह macro इस समस्या को आसानी से solve करता है।

ChartMaxAxis Macro क्या करता है?

यह macro:

  • तीन अलग-अलग worksheets को refer करता है
  • हर sheet में मौजूद “Chart 2” नाम के chart को select करता है
  • Y-Axis का Maximum Value एक fixed number (जैसे 2000) पर set करता है

इससे सभी charts का scale समान हो जाता है।

Code की आसान समझ

  • Dim ct As Chart
    Chart object को store करने के लिए variable।
  • AxisMaxValue = 2000
    यह value Y-Axis का maximum limit तय करती है।
    आप इसे किसी भी number या cell value से बदल सकते हैं।
  • Sheets(sh1).ChartObjects("Chart 2").Chart
    दिए गए sheet से specific chart को select करता है।
  • .Axes(xlValue).MaximumScale = AxisMaxValue
    Y-Axis का maximum scale set करता है।
  • Set ct = Nothing
    Memory clear करता है।

यह Macro कहाँ उपयोगी है?

✔ MIS और Management dashboards में
✔ Multiple charts का comparison करने में
✔ Automated reporting systems में
✔ Professional Excel presentations में

Important Notes

  • Sheet name और Chart name सही होना चाहिए
  • Chart sheet नहीं, बल्कि Worksheet chart होना चाहिए

Conclusion

ChartMaxAxis macro Excel VBA में charts को professional और consistent बनाने का आसान तरीका है। अगर आप Excel dashboards या automated reports बनाते हैं, तो यह macro आपके लिए बहुत उपयोगी साबित होगा।


Create a Chart from Data

Sub CreateChart()
    Dim ws As Worksheet
    
Dim chartObj As ChartObject
    
    Set ws = ThisWorkbook.Sheets("Sheet1")
    
    ' Create a new chart
    
Set chartObj = ws.ChartObjects.Add(Left:=100, Top:=100, Width:=400, Height:=300)
    
    ' Set data range
    chartObj.Chart.SetSourceData Source:=ws.Range("A1:B10")
    
    ' Set chart type
    chartObj.Chart.ChartType = xlColumnClustered
End Sub

Code explanation:

Excel VBA से Automatically Chart कैसे Create करें

यह VBA Macro (CreateChart) Excel worksheet पर automatically एक नया chart बनाने के लिए उपयोग किया जाता है। जब आपको बार-बार manually chart बनाना पड़ता है, तब यह macro आपका समय बचाता है और chart creation को पूरी तरह automate कर देता है।

CreateChart Macro क्या करता है?

यह macro:

  • Sheet1 worksheet को select करता है
  • उसी sheet पर एक नया Chart Object बनाता है
  • दिए गए data range से chart को link करता है
  • Chart type को Clustered Column Chart में set करता है

Code की आसान समझ

  • Dim ws As Worksheet
    Worksheet को store करने के लिए variable declare किया गया है।
  • Set ws = ThisWorkbook.Sheets("Sheet1")
    Chart जिस sheet पर बनाना है, उसे refer करता है।
  • ChartObjects.Add
    Sheet पर नया chart create करता है।
    • Left, Top → chart की position
    • Width, Height → chart का size
  • SetSourceData
    Chart के लिए data range set करता है।
    यहाँ range A1:B10 ली गई है।
  • ChartType = xlColumnClustered
    Chart को Column Chart में convert करता है।

यह Macro कहाँ उपयोगी है?

✔ Automated reports बनाने में
✔ Dashboards और MIS reports में
✔ Large data analysis में
✔ Professional Excel presentations में

Important Notes

  • Data range में headers होने चाहिए
  • Sheet name और range सही होना चाहिए
  • Chart worksheet पर बनेगा, chart sheet पर नहीं

Conclusion

CreateChart VBA macro Excel में chart creation को बहुत आसान बना देता है। अगर आप Excel VBA सीख रहे हैं और automation के ज़रिए charts बनाना चाहते हैं, तो यह macro आपके लिए एक बेहतरीन शुरुआत है।


Change Chart Type

Sub ChangeChartType()
    ActiveChart.ChartType = xlLine
End Sub

Code explanation:

यह macro Excel में currently selected (Active) chart का chart type बदलकर Line Chart बना देता है। जब आप पहले से किसी chart को select करते हैं और फिर यह macro run करते हैं, तो वही chart Line Chart (xlLine) में convert हो जाता है।

इस code में:

  • ActiveChart का मतलब है वह chart जो इस समय Excel में selected है
  • ChartType = xlLine chart का प्रकार Line Chart set करता है

यह macro तब काम आता है जब आप:

  • Column chart को line chart में बदलना चाहते हों
  • Data trend को clearly दिखाना चाहते हों
  • Charts को quickly format करना चाहते हों

Macro चलाने से पहले chart select करना जरूरी है, वरना error आ सकता है।


Add Chart Title

Sub AddChartTitle()
    With ActiveChart
        .HasTitle = True
        .ChartTitle.text = "Monthly Sales Performance"
    End With
End Sub

Code explanation:

यह Excel VBA Macro – AddChartTitle active chart में chart title add करने के लिए उपयोग किया जाता है।
जब आप किसी chart को select करके यह macro run करते हैं, तो यह code उस chart में title enable कर देता है और उसमें लिखा हुआ text “Monthly Sales Performance” दिखाता है।

इस code में:

  • ActiveChart का मतलब है वह chart जो इस समय selected है
  • .HasTitle = True chart में title को on करता है
  • .ChartTitle.Text से title का text set किया जाता है

यह macro charts को professional और समझने में आसान बनाता है।
Macro चलाने से पहले chart select होना जरूरी है, नहीं तो error आ सकता है।


Add Axis Titles

Sub AddAxisTitles()
    With ActiveChart
        .HasTitle = True
        .Axes(xlCategory, xlPrimary).HasTitle = True
        .Axes(xlCategory, xlPrimary).AxisTitle.text = "Month"
        
        .Axes(xlValue, xlPrimary).HasTitle = 
True
        .Axes(xlValue, xlPrimary).AxisTitle.text = "Revenue ($)"
    End With
End Sub

Code explanation:

यह Excel VBA Macro – AddAxisTitles active chart में X-Axis और Y-Axis के titles add करने के लिए इस्तेमाल होता है।
जब आप किसी chart को select करके यह macro run करते हैं, तो यह code:

  • Chart को title-ready बनाता है
  • X-Axis (Category Axis) का title “Month” set करता है
  • Y-Axis (Value Axis) का title “Revenue ($)” set करता है

इस code में:

  • ActiveChart मतलब selected chart
  • xlCategory → X-Axis
  • xlValue → Y-Axis
  • HasTitle = True से axis title enable होता है

यह macro charts को professional, clear और easy to understand बनाता है।
Macro चलाने से पहले chart select होना जरूरी है, नहीं तो error आ सकता है।


Change Chart Colors

Sub ChangeChartColors()
    Dim s As Series
    For Each s In ActiveChart.SeriesCollection
        s.Format.Fill.ForeColor.RGB = RGB(0, 128, 255)
    Next s
End Sub

Code explanation:

यह Excel VBA Macro – ChangeChartColors active chart की सभी data series का रंग बदलने के लिए उपयोग किया जाता है।
जब आप किसी chart को select करके यह macro run करते हैं, तो यह code chart में मौजूद हर Series पर loop चलाता है और उसका fill color एक जैसा set कर देता है।

इस code में:

  • ActiveChart.SeriesCollection chart की सभी series को represent करता है
  • For Each s loop हर series को एक-एक करके select करता है
  • RGB(0, 128, 255) से blue color set किया जाता है

यह macro charts को uniform और professional look देता है।
Macro चलाने से पहले chart select होना जरूरी है, वरना error आ सकता है।


Add Data Labels

Sub AddDataLabels()
    Dim s As Series
    For Each s In ActiveChart.SeriesCollection
        s.HasDataLabels = True
    Next s
End Sub

Code explanation:

यह Excel VBA Macro – AddDataLabels active chart में data labels दिखाने के लिए इस्तेमाल होता है।
जब आप किसी chart को select करके यह macro run करते हैं, तो यह code chart की सभी data series पर loop चलाता है और हर series के लिए data labels enable कर देता है।

इस code में:

  • ActiveChart.SeriesCollection chart की सभी series को दर्शाता है
  • For Each s loop हर series को एक-एक करके select करता है
  • s.HasDataLabels = True से chart के ऊपर values दिखाई देने लगती हैं

इस macro से chart ज्यादा clear और informative बनता है, क्योंकि हर bar या line पर उसका exact value दिखता है।
Macro चलाने से पहले chart select होना जरूरी है, नहीं तो error आ सकता है।


Create a Pie Chart

Sub CreatePieChart()
    Dim ws As Worksheet
    
Dim chartObj As ChartObject
    
    Set ws = ActiveSheet
    
Set chartObj = ws.ChartObjects.Add(100, 100, 400, 300)
    
    chartObj.Chart.SetSourceData Source:=ws.Range("A1:B5")
    chartObj.Chart.ChartType = xlPie
End Sub

Code explanation:

यह Excel VBA Macro – CreatePieChart Excel में automatically Pie Chart बनाने के लिए उपयोग किया जाता है।
जब आप यह macro run करते हैं, तो यह ActiveSheet पर एक नया chart create करता है और उसे दिए गए data range से जोड़ देता है।

इस code में:

  • ActiveSheet वह sheet होती है जो इस समय खुली है
  • ChartObjects.Add से sheet पर नया chart बनता है
  • A1:B5 range से chart का data लिया जाता है
  • ChartType = xlPie chart को Pie Chart में बदल देता है

यह macro तब बहुत उपयोगी है जब आपको:

  • Data का percentage distribution दिखाना हो
  • Reports और dashboards जल्दी बनानी हों

Macro चलाने से पहले data सही format में होना जरूरी है।


Move Chart to a New Sheet

Sub MoveChartToSheet()
    ActiveChart.Location Where:=xlLocationAsNewSheet, Name:="Sales Chart"
End Sub

Code explanation:

यह Excel VBA Macro – MoveChartToSheet active chart को नई Chart Sheet में move करने के लिए उपयोग किया जाता है।
जब आप किसी chart को select करके यह macro run करते हैं, तो selected chart worksheet से हटकर एक अलग chart sheet में चला जाता है, जिसका नाम “Sales Chart” होता है।

इस code में:

  • ActiveChart मतलब selected chart
  • Location method chart की location बदलने के लिए इस्तेमाल होती है
  • xlLocationAsNewSheet chart को नई sheet में ले जाता है
  • Name से नई chart sheet का नाम तय होता है

यह macro charts को clean, professional और presentation-ready बनाता है।
Macro चलाने से पहले chart select होना जरूरी है, नहीं तो error आ सकता है।


Update Chart Data Dynamically

Sub UpdateChartData()
    Dim ws As Worksheet
    
Dim ch As ChartObject
    
    Set ws = Sheet1
    Set ch = ws.ChartObjects("Chart 1")
    
    ch.Chart.SetSourceData Source:=ws.Range("A1:B20")
End Sub

Code explanation:

यह Excel VBA Macro – UpdateChartData किसी existing chart का data range update करने के लिए उपयोग किया जाता है।
यह macro Sheet1 में मौजूद “Chart 1” नाम के chart को select करता है और उसके data source को नए range से जोड़ देता है।

इस code में:

  • Dim ws As Worksheet worksheet को store करता है
  • Set ws = Sheet1 उस sheet को refer करता है जहाँ chart मौजूद है
  • Set ch = ws.ChartObjects("Chart 1") specific chart को select करता है
  • SetSourceData से chart का नया data range A1:B20 set किया जाता है

यह macro तब उपयोगी है जब data बढ़ जाए और chart को automatically update करना हो।
Sheet और chart का नाम सही होना जरूरी है, वरना error आ सकता है।


Loop Through All Charts and Refresh

Sub RefreshAllCharts()
    Dim ws As Worksheet
    
Dim ch As ChartObject
    
    For Each ws In ThisWorkbook.Sheets
        For Each ch In ws.ChartObjects
            ch.Chart.Refresh
        Next ch
    
Next ws
End Sub

Code explanation:

यह Excel VBA Macro – RefreshAllCharts workbook में मौजूद सभी charts को एक साथ refresh करने के लिए इस्तेमाल होता है।
जब आप यह macro run करते हैं, तो यह:

  • Workbook की हर worksheet पर जाता है
  • उस sheet में मौजूद सभी ChartObjects को select करता है
  • हर chart को Refresh करता है, ताकि latest data दिखाई दे

इस code में:

  • For Each ws In ThisWorkbook.Sheets सभी sheets पर loop चलाता है
  • For Each ch In ws.ChartObjects हर sheet के charts पर loop करता है
  • ch.Chart.Refresh chart को update करता है

यह macro तब बहुत उपयोगी है जब:

  • Data source change हुआ हो
  • Multiple charts हों
  • Dashboard automatically update करना हो

यह Excel reports को accurate और up-to-date रखता है।


Add a Secondary Axis

Sub AddSecondaryAxis()
    With ActiveChart.SeriesCollection.NewSeries
        .Name = "Profit"
        .Values = Range("C2:C10")
        .AxisGroup = xlSecondary
    End With
End Sub

Code explanation:

यह Excel VBA Macro – AddSecondaryAxis active chart में secondary axis (दूसरा Y-Axis) जोड़ने के लिए उपयोग किया जाता है।
जब आप किसी chart को select करके यह macro run करते हैं, तो यह chart में एक नई data series जोड़ता है, जिसका नाम “Profit” रखा जाता है। यह series C2:C10 range से data लेती है और उसे secondary axis पर plot किया जाता है।

इस code में:

  • NewSeries से नई series add होती है
  • .Values से data range set होता है
  • .AxisGroup = xlSecondary से series दूसरा Y-Axis इस्तेमाल करती है

यह macro तब उपयोगी है जब Sales और Profit जैसे अलग-अलग scale वाले data एक ही chart में दिखाने हों।


Export Chart as an Image

Sub ExportChartAsImage()
    Dim ch As Chart
    Set ch = ActiveChart
    ch.Export Filename:="C:\Users\Public\Documents\ChartImage.png", FilterName:="PNG"
End Sub

Code explanation:

यह Excel VBA Macro – ExportChartAsImage active chart को image file (PNG) के रूप में export करने के लिए इस्तेमाल होता है।
जब आप किसी chart को select करके यह macro run करते हैं, तो selected chart C:\Users\Public\Documents folder में ChartImage.png नाम से save हो जाता है।

इस code में:

  • ActiveChart मतलब वह chart जो अभी selected है
  • Export method chart को image में convert करता है
  • Filename से file का path और नाम तय होता है
  • FilterName = "PNG" image का format बताता है

यह macro तब बहुत उपयोगी है जब:

  • Chart को email में भेजना हो
  • Report या presentation में image के रूप में इस्तेमाल करना हो

Macro चलाने से पहले chart select होना जरूरी है।


Resize and Move Chart

Sub ResizeAndMoveChart()
    
Dim ch As ChartObject
    Set ch = ActiveSheet.ChartObjects("Chart 1")
    
    ch.Left = 50
    ch.Top = 50
    ch.Width = 500
    ch.Height = 350
End Sub

Code explanation:

यह Excel VBA Macro – ResizeAndMoveChart Excel worksheet पर मौजूद किसी chart की position और size बदलने के लिए उपयोग किया जाता है।
यह macro ActiveSheet में मौजूद “Chart 1” नाम के chart को select करता है और उसे एक तय जगह पर move करके उसका size adjust करता है।

इस code में:

  • ChartObjects("Chart 1") specific chart को refer करता है
  • Left = 50 और Top = 50 से chart की नई position set होती है
  • Width = 500 और Height = 350 से chart का नया size तय होता है

यह macro charts को properly align, professional layout और dashboard-friendly बनाने में मदद करता है।
Chart का नाम सही होना जरूरी है, वरना error आ सकता है।


Change Chart Style

Sub ChangeChartStyle()
    ActiveChart.ChartStyle = 4 ' Choose from 1–48
End Sub

Code explanation:

यह Excel VBA Macro – ChangeChartStyle active chart का visual style बदलने के लिए इस्तेमाल होता है।
जब आप किसी chart को select करके यह macro run करते हैं, तो selected chart का Chart Style नंबर 4 apply हो जाता है। Excel में chart styles पहले से बने हुए designs होते हैं, जिनसे chart का color, layout और look तुरंत बदल जाता है।

इस code में:

  • ActiveChart मतलब selected chart
  • ChartStyle = 4 से predefined style apply होता है
  • Excel में 1 से 48 तक अलग-अलग chart styles उपलब्ध होते हैं

यह macro charts को quickly attractive और professional बनाने में मदद करता है।
Macro चलाने से पहले chart select होना जरूरी है, नहीं तो error आ सकता है।


Add Trendline

Sub AddTrendline()
    ActiveChart.SeriesCollection(1).Trendlines.Add Type:=xlLinear
End Sub

Code explanation:

यह Excel VBA Macro – AddTrendline active chart में trendline जोड़ने के लिए उपयोग किया जाता है।
जब आप किसी chart को select करके यह macro run करते हैं, तो यह chart की पहली data series पर एक Linear Trendline add कर देता है। Trendline data के trend या direction को दिखाने में मदद करती है, जैसे बढ़ता हुआ या घटता हुआ pattern।

इस code में:

  • ActiveChart.SeriesCollection(1) पहली series को refer करता है
  • Trendlines.Add से नई trendline add होती है
  • Type:=xlLinear से linear trendline बनती है

यह macro analysis और reporting के लिए बहुत उपयोगी है।
Macro चलाने से पहले chart में कम से कम एक data series होनी चाहिए।


Add Chart Legend

Sub AddChartLegend()
    With ActiveChart
        .HasLegend = True
        .Legend.Position = xlLegendPositionBottom
    End With
End Sub

Code explanation:

यह Excel VBA Macro – AddChartLegend active chart में legend जोड़ने और उसकी position set करने के लिए इस्तेमाल होता है।
जब आप किसी chart को select करके यह macro run करते हैं, तो यह chart में legend enable कर देता है और उसे chart के bottom (नीचे) में show करता है। Legend chart में अलग-अलग data series के नाम दिखाता है, जिससे chart को समझना आसान हो जाता है।

इस code में:

  • ActiveChart मतलब selected chart
  • .HasLegend = True से legend on होता है
  • .Legend.Position = xlLegendPositionBottom से legend नीचे set होता है

यह macro charts को clear, informative और professional बनाता है।
Macro चलाने से पहले chart select होना जरूरी है।


Create a Line Chart Automatically

Sub CreateLineChart()
    Dim ws As Worksheet
    
Dim ch As ChartObject
    
    Set ws = ActiveSheet
    
Set ch = ws.ChartObjects.Add(100, 100, 400, 300)
    
    ch.Chart.SetSourceData Source:=ws.Range("A1:B12")
    ch.Chart.ChartType = xlLineMarkers
    ch.Chart.HasTitle = True
    ch.Chart.ChartTitle.text = "Yearly Sales Growth"
End Sub

Code explanation:

यह Excel VBA Macro – CreateLineChart Excel में automatically Line Chart बनाने के लिए उपयोग किया जाता है।
जब आप यह macro run करते हैं, तो यह ActiveSheet पर एक नया chart create करता है और उसे दिए गए data range से जोड़ देता है। Chart का type Line with Markers होता है, जिससे हर point साफ दिखाई देता है।

इस code में:

  • ChartObjects.Add से नया chart बनता है
  • A1:B12 range से data लिया जाता है
  • xlLineMarkers से line chart markers के साथ बनता है
  • HasTitle = True से chart title enable होता है
  • Title “Yearly Sales Growth” set किया जाता है

यह macro trends दिखाने और reports को professional बनाने में बहुत उपयोगी है।


Delete All Charts

Sub DeleteAllCharts()
    Dim ws As Worksheet
    
Dim ch As ChartObject
    
    For Each ws In ThisWorkbook.Sheets
        For Each ch 
In ws.ChartObjects
            ch.Delete
        Next ch
    
Next ws
End Sub

Code explanation:

यह Excel VBA Macro – DeleteAllCharts workbook में मौजूद सभी charts को एक साथ delete करने के लिए उपयोग किया जाता है।
जब आप यह macro run करते हैं, तो यह:

  • Workbook की हर worksheet पर जाता है
  • हर sheet में मौजूद सभी ChartObjects को select करता है
  • और उन्हें permanently delete कर देता है

इस code में:

  • For Each ws In ThisWorkbook.Sheets सभी sheets पर loop चलाता है
  • For Each ch In ws.ChartObjects हर sheet के charts पर loop करता है
  • ch.Delete chart को हटा देता है

यह macro तब बहुत उपयोगी है जब:

  • आपको सभी charts remove करने हों
  • Workbook को clean करना हो

⚠️ ध्यान दें: Delete हुए charts वापस नहीं आते, इसलिए backup जरूर लें।


Copy Chart to Another Sheet

Sub CopyChartToAnotherSheet()
    Sheets("Sheet1").ChartObjects("Chart 1").Copy
    Sheets("Sheet2").Paste
End Sub

Code explanation:

यह Excel VBA Macro – CopyChartToAnotherSheet एक worksheet से chart को copy करके दूसरी worksheet में paste करने के लिए उपयोग किया जाता है।
जब आप यह macro run करते हैं, तो यह:

  • Sheet1 में मौजूद “Chart 1” को select करके copy करता है
  • फिर उसे Sheet2 में paste कर देता है

इस code में:

  • ChartObjects("Chart 1").Copy chart को clipboard में copy करता है
  • Sheets("Sheet2").Paste chart को दूसरी sheet में paste करता है

यह macro तब बहुत उपयोगी है जब:

  • एक ही chart को multiple sheets में दिखाना हो
  • Reports और dashboards तैयार करने हों

Sheet और Chart का नाम सही होना जरूरी है, वरना error आ सकता है।


Automatically Create Charts for Each Column

Sub CreateChartsForEachColumn()
    Dim ws As Worksheet
    Dim i As Integer, chartObj As ChartObject
    
    Set ws = ActiveSheet
    
    For i = 2 To ws.Cells(1, Columns.Count).End(xlToLeft).Column
        Set chartObj = ws.ChartObjects.Add(Left:=100 * i, Top:=50, Width:=300, Height:=200)
        chartObj.Chart.SetSourceData Source:=ws.Range(ws.Cells(1, 1), ws.Cells(10, i))
        chartObj.Chart.ChartType = xlColumnClustered
        chartObj.Chart.HasTitle = True
        chartObj.Chart.ChartTitle.text = ws.Cells(1, i).Value
    Next i
End Sub

Code explanation:

यह Excel VBA Macro – CreateChartsForEachColumn Excel में हर data column के लिए अलग-अलग chart automatically बनाने के लिए उपयोग किया जाता है।
जब आप यह macro run करते हैं, तो यह ActiveSheet पर मौजूद data को पढ़ता है और पहली row के headers के आधार पर हर column के लिए एक Column Chart बनाता है।

इस code में:

  • For i = 2 To ... loop हर column पर चलता है
  • ChartObjects.Add से नया chart create होता है
  • Data range Row 1 से Row 10 तक लिया जाता है
  • xlColumnClustered chart type set होता है
  • Chart का title column header से लिया जाता है

यह macro dashboards और analysis के लिए बहुत उपयोगी है।

एक टिप्पणी भेजें

Please do not enter any spam link in the comment box.

और नया पुराने