2016-01-28 3 views
0

Я написал приведенный ниже код для создания диаграммы, когда выбрана опция выпадающего меню. Проблема в том, что моя диаграмма небольшая, и я хочу написать дополнительный код, чтобы увеличить диаграмму, показанную пользователю. Как мне это сделать?Увеличить диаграмму - VBA Excel 2010

Function Categorical_Chart_Creation(Category As String, Range_A As String, Range_B As String) 

'Creates column chart 

Set objSelection = Worksheets("Summary Data").Range(Range_A, Range_B) 'Select area to chart 

Dim objChart As Chart 

Set objChart = Charts.Add 

With objChart 

.SetSourceData objSelection 

.ChartType = xlColumnStacked 

.PlotBy = xlColumns 

.Axes(xlCategory).CategoryType = xlCategoryScale 

.HasLegend = False 

.HasTitle = True 

.ChartTitle.Text = Category 

.Axes(xlCategory, xlPrimary).HasTitle = True 

.Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "Week Beginning" 

.Axes(xlValue, xlPrimary).HasTitle = True 

.Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "Total Hours" 

.Name = Category 

.Location Where:=xlLocationAsObject, Name:="Charts" 

End With 

End Function 
+0

дело с 'С objChart' вы можете напрямую изменить его с' .Height' (вся высота объекта) или '.width '... Но подсказка: function = return of value/object any и sub = делать что-то реально ... лучше изменить его на sub в первую очередь ... также вы никогда не используете свой' objChart' после 'With' ... поэтому в этом примере вы можете напрямую перейти с помощью' With Charts.Add': P –

ответ

0

Вы можете получить доступ к ширине и высоте диаграммы.

Dim ws As Excel.Worksheet 
Set ws = ActiveWorkbook.Sheets("Sheet1") 

Dim cht As ChartObject 

Dim c As ChartObject 
Set c = ws.ChartObjects(1) 
c.Chart.ChartArea.Width = 4 
c.Chart.ChartArea.Height= 4 

Или настроить графики ScaleHeight & ScaleWidth

ActiveSheet.Shapes("Chart 1").ScaleWidth 0.6775, msoFalse, msoScaleFromTopLeft 
ActiveSheet.Shapes("Chart 1").ScaleHeight 0.7638888889, msoFalse, msoScaleFromTopLeft 

Примечание:
Манипулирование размер диаграммы, кажется, были удалены из автономных диаграмм в более поздних версиях Excel (2010+). https://social.msdn.microsoft.com/Forums/en-US/ded0b457-b9ba-4633-ac75-4ff36472b40c/resizing-charts-in-chart-sheet-problem-in-different-version-of-excel?forum=isvvba

Если вы посмотрите на свойства диаграммы, находящейся на листе. Вы видите

enter image description here

Если вы смотрите на автономном графике. У вас нет параметров размера.

enter image description here

+0

Они не работают – excelvbabeginner2016

+0

Могу изменить размеры диаграмм, которые находятся на листе, но th Кажется, проблема связана с изменением размеров отдельных графиков в новых версиях excel. Может быть, что-то с этим связано. https://social.msdn.microsoft.com/Forums/en-US/ded0b457-b9ba-4633-ac75-4ff36472b40c/resizing-charts-in-chart-sheet-problem-in-different-version-of-excel? forum = isvvba Я бы добавил вашу диаграмму на листе, а затем вы можете изменить размер по своему усмотрению. – MatthewD

+1

Код, созданный OP, создает лист диаграммы, а затем перемещает его на рабочий лист. Поэтому ему нужно изменить размер диаграммы на листе. –

0

Крепление ваш код ...

Function Categorical_Chart_Creation(Category As String, Range_A As String, Range_B As String) 
    'Creates column chart 

    Dim objSelection As Range 
    Dim objChart As Chart 

    Set objSelection = Worksheets("Summary Data").Range(Range_A, Range_B) 'Select area to chart 

    Set objChart = Worksheets("Charts").Shapes.AddChart.Charts 
    With objChart 
    .SetSourceData objSelection 
    .ChartType = xlColumnStacked 
    .PlotBy = xlColumns 
    .Axes(xlCategory).CategoryType = xlCategoryScale 
    .HasLegend = False 
    .HasTitle = True 
    .ChartTitle.Text = Category 
    .Axes(xlCategory, xlPrimary).HasTitle = True 
    .Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "Week Beginning" 
    .Axes(xlValue, xlPrimary).HasTitle = True 
    .Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "Total Hours" 
    .Name = Category 
    With .Parent ' ChartObject (container of embedded chart) 
     ' size in points 
     .Height = 350 
     .Width = 500 
    End With 
    End With 
End Function 
Смежные вопросы