2017-01-13 1 views
0

Я пытаюсь использовать функцию Max внутри макроса, чтобы вертикальные оси диаграммы автоматически настраивались на максимальное число в диапазоне ячеек. Я запустил макрос, который не работает, но ниже - своего рода суть того, что я собираюсь сделать. Буду признателен за любую оказанную помощь.Использовать функцию Max в макросе, чтобы настроить вертикальную ось диаграммы

ActiveSheet.ChartObjects(1).Chart.Axes(xlValue).MaximumScale = Application.WorksheetFunction.Max(Range("D26:D100")) 
+1

Код, отправленный в вопрос, должен работать без ошибок. Какая ошибка? Когда вы запускаете эту строку, у вас есть фактически выбранная диаграмма? у вас есть имя листа Wtaerfall? есть ли значение ошибки в диапазоне D26: D100? – cyboashu

+0

Он продолжал давать мне ошибку компиляции: Ожидаемый: разделитель списка или) на этом макросе. Я изменил кодировку в своем исходном вопросе, потому что понял, что она всегда должна быть в активной таблице, поэтому я не указал книгу, а диаграмма - диаграмма 1, но она все еще не работает. –

+1

Включите диапазон: Application.WorksheetFunction.Max (Range («D26: D100»)) –

ответ

1

Ниже приведено правильное кодирование. VBA Pete помог мне придумать, еще раз спасибо!

ActiveSheet.ChartObjects(1).Chart.Axes(xlValue).MaximumScale = Application.WorksheetFunction.Max(Range("D26:D100")) 
0

Для будущих случаев и хорошей практики кодирования, стараются избегать использования ActiveSheet и использовать привязанные объекты вместо этого.

Dim Sht As Worksheet 
Dim ChtObj As ChartObject 

Set Sht = Worksheets("YourSheetName") '<-- set the worksheet your charts are in 
Set ChtObj = Sht.ChartObjects(1) '<-- set the chart object to the specific chart object you want to modify 

' now modify the chartobject properties 
With ChtObj 
    .Chart.Axes(xlValue).MaximumScale = Application.WorksheetFunction.Max(Sht.Range("D26:D100")) '<-- when defining the range, also fully qualify it with the worksheet name 
End With