Приведенный ниже код отлично подходит для изменения размера одной диаграммы на листе или для выбора нескольких диаграмм одного размера. То, что я ищу, - это метод по размеру (и положению) каждой диаграммы по-разному в зависимости от значений ячеек на этом листе.Как изменить размер диаграмм на разные размеры в Excel VBA для Mac?
Sub UpdateChart()
Dim objCht As ChartObject
For Each objCht In ActiveSheet.ChartObjects
With objCht.Chart
With .Axes(xlValue)
.MaximumScale = ActiveSheet.Range("E6").Value
.MinimumScale = ActiveSheet.Range("E5").Value
End With
.Parent.Height = ActiveSheet.Range("E7").Value
With .Axes(xlCategory)
.MaximumScale = ActiveSheet.Range("D6").Value
.MinimumScale = ActiveSheet.Range("D5").Value
End With
.Parent.Width = ActiveSheet.Range("D7").Value
End With
Next objCht
End Sub
В то время как внутри For/Next цикла я попытался ссылки названия диаграммы или значения индекса objCht без успеха.
Sub UpdateSomeCharts()
Dim objCht As ChartObject
For Each objCht In ActiveSheet.ChartObjects
With objCht.Chart
If objCht.Chart.Name = "Part 1 Chart_Plan" Then
With .Axes(xlValue)
.MaximumScale = ActiveSheet.Range("E6").Value
.MinimumScale = ActiveSheet.Range("E5").Value
End With
Parent.Height = ActiveSheet.Range("E7").Value
With .Axes(xlCategory)
.MaximumScale = ActiveSheet.Range("D6").Value
.MinimumScale = ActiveSheet.Range("D5").Value
End With
.Parent.Width = ActiveSheet.Range("D7").Value
GoTo Size_Charts_Done
Else:
If objCht.Chart.Name = "Part 1 Chart_Right" Then
With .Axes(xlValue)
.MaximumScale = ActiveSheet.Range("E6").Value
.MinimumScale = ActiveSheet.Range("E5").Value
End With
Parent.Height = ActiveSheet.Range("E7").Value
With .Axes(xlCategory)
.MaximumScale = ActiveSheet.Range("D10").Value
.MinimumScale = 0
End With
.Parent.Width = ActiveSheet.Range("D10").Value
GoTo Size_Charts_Done
Else:
If objCht.Chart.Name = "Part 1 Chart_Left" Then
With .Axes(xlValue)
.MaximumScale = ActiveSheet.Range("E6").Value
.MinimumScale = ActiveSheet.Range("E5").Value
End With
Parent.Height = ActiveSheet.Range("E7").Value
With .Axes(xlCategory)
.MaximumScale = 0
.MinimumScale = -(ActiveSheet.Range("D10").Value)
End With
.Parent.Width = ActiveSheet.Range("D10").Value
GoTo Size_Charts_Done
Size_Charts_Done:
End If
End If
End If
End With
Next objCht
End Sub
Использование Debug.Print я могу видеть, что заявления, если работают, но это не будет работать на .Parent.Height. говоря, что он не поддерживается в excel для mac, но эта же строка работает с исходным кодом.
Насколько я понимаю, VBA для Mac - это подмножество того, что доступно на окнах, поэтому не все в этом мире работает в Macville.