کریس یک کتاب کار دارد که شامل تعداد زیادی نمودار کوچک و یکسان است. او میخواهد برخی از ویژگیهای عناصر در هر نمودار - مانند رنگ یا اندازه قلم - را در یک زمان تغییر دهد.
اگر متوجه میشوید که اغلب از نمودار «غیر پیشفرض» استفاده میکنید (که به معنای تغییر ظاهر برخی عناصر نمودار پس از ایجاد نمودار است)، یک روش عالی ایجاد یک نمودار سفارشی و ذخیره آن قالب در اکسل است. سپس می توانید از فرمت ذخیره شده برای ایجاد تمام نمودارهای جدید خود استفاده کنید و بدین ترتیب میزان قالب بندی بعدی را که باید انجام دهید به حداقل برسانید. نحوه ذخیره فرمت های نمودار سفارشی در شماره های دیگر ExcelTips پوشش داده شده است.
قالبهای نمودار سفارشی ممکن است برای آینده عالی باشند، اما اگر از قبل تعداد زیادی نمودار در یک کتاب کار موجود داشته باشید، کمکی نمیکند. در این صورت، بهترین راه حل استفاده از یک ماکرو است که بتواند تمام نمودارهای یک کتاب کار را طی کند و تغییر دلخواه را ایجاد کند. شما فقط باید از قبل تصمیم بگیرید که کدام آیتم ها را می خواهید تغییر دهید و سپس ماکرو را طوری برنامه ریزی کنید که به طور خاص آن موارد را تغییر دهد.
به عنوان مثال، ماکرو زیر رنگ فونت و اندازه برچسب های محور Y را تغییر می دهد. از طریق تمام نمودارهای کتاب کار، چه برگه ها و چه نمودارهای جاسازی شده، حلقه می زند.
Sub ChangeAllCharts1()
Dim cht As Chart
Dim sht
Dim ChtObj As ChartObject
For Each cht In ActiveWorkbook.Charts
With cht.Axes(xlValue).TickLabels.Font
.Size = 20
.Color = vbRed
End With
Next
For Each sht In ActiveWorkbook.Sheets
For Each ChtObj In sht.ChartObjects
With ChtObj.Chart.Axes(xlValue).TickLabels.Font
.Size = 20
.Color = vbRed
End With
Next
Next
End Sub
همانطور که در اینجا نوشته شده است، ماکرو اندازه فونت را به 20 و رنگ را به قرمز تغییر می دهد. اگر میخواهید ماکرو عناصر دیگر را تغییر دهد، تنها کاری که باید انجام دهید این است که عبارات With را تغییر دهید تا عناصری را که میخواهید تغییر کنند منعکس شود، یا میتوانید از حلقه For...Next برای عبور از تمام عناصر نمودار استفاده کنید. ماکرو زیر این تکنیک را نشان میدهد و رنگ پسزمینه نمودارها را در یک کتاب کار تغییر میدهد.
Sub ChangeAllCharts2()
On Error Resume Next
NewChartAreaColor = 34
For J = 1 To ActiveWorkbook.Charts.Count
ActiveWorkbook.Charts(J).Select
The pairs of line code indicate desired changes
ActiveChart.ChartArea.Select
Selection.Interior.ColorIndex = NewChartAreaColor
Next J
For J = 1 To ActiveWorkbook.Sheets.Count
For K = 1 To Sheets(J).ChartObjects.Count
Sheets(J).Select
Sheets(J).ChartObjects(K).Activate
The pairs of line code indicate desired changes
ActiveChart.ChartArea.Select
Selection.Interior.ColorIndex = NewChartAreaColor
Next K
Next J
End Sub