我有一张Excel电子表格,在一张纸上有多个图表,这些图表是根据用户选择隐藏或显示的。我想要做的是通过在工作表更改时以编程方式调整其高度和宽度来保护图形免受用户错误的影响。我在工作表更改中有代码,以便隐藏/显示图形并希望在此处插入高度和宽度代码,但我遇到的问题是我找到了调整一个图形的高度和宽度的代码:
With ChartObjects("Test")
.height = 300
.width = 500
End With
但是将它应用于许多图表会很难看,而我发现的代码会调整所有图表:
Dim cht As ChartObject
For Each cht In ActiveSheet.ChartObjects
cht.Height = Application.InchesToPoints(2)
cht.Width = Application.InchesToPoints(4)
Next
意味着所有图表都具有相同的大小,而我有两种不同的图表大小(小图和大图),可以通过图表名称区分,因为小图表在图表名称中包含“小”并且大图表名称中的图表有“大”。
那么可以根据图表名称中是否包含“small”或“large”这个词来运行会改变图表大小的代码吗?
请注意我使用的是Excel 2010。
答案 0 :(得分:2)
为什么不使用instr
和if
语句在循环中测试名称。只需使用正确的尺寸
Dim cht As ChartObject
For Each cht In ActiveSheet.ChartObjects
With cht
If InStr(1, .Name, "small", vbTextCompare) > 0 Then
.Height = Application.InchesToPoints(2)
.Width = Application.InchesToPoints(4)
ElseIf InStr(1, .Name, "large", vbTextCompare) > 0 Then
.Height = Application.InchesToPoints(4)
.Width = Application.InchesToPoints(8)
End If
End With
Next cht