Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 条形图_Excel_Vba_Charts - Fatal编程技术网

Excel 条形图

Excel 条形图,excel,vba,charts,Excel,Vba,Charts,我在一张纸上有一些条形图,希望这些条形图的厚度相同。有链接到图表的切片器,因此每次更改选择时,输入会不断更改,使条形图变厚或变薄 有人能帮我一个代码,使图表中的条形图保持相同的厚度吗?我不介意酒吧之间的距离。我在互联网上搜索过,但找不到任何真正的解决方案。我认为这将解决您的问题: Sub SetBarWitdh() Dim sh As Shape Dim ch As Chart Dim ws As Worksheet Set ws = Sheets("SheetNameHere") 'P

我在一张纸上有一些条形图,希望这些条形图的厚度相同。有链接到图表的切片器,因此每次更改选择时,输入会不断更改,使条形图变厚或变薄


有人能帮我一个代码,使图表中的条形图保持相同的厚度吗?我不介意酒吧之间的距离。我在互联网上搜索过,但找不到任何真正的解决方案。

我认为这将解决您的问题:

Sub SetBarWitdh()
Dim sh As Shape
Dim ch As Chart
Dim ws As Worksheet

Set ws = Sheets("SheetNameHere")    'Put the name of the sheet where the charts are 
stored

For Each sh In ws.Shapes    'This will loop through all the shapes in that sheet
    If sh.Type = msoChart Then Set ch = sh.Chart    'If you only have charts on the Sheet _
                                                     you can type only the set instrunction
    ch.ChartGroups(1).GapWidth = 120        'You can change the number of the property _
                                             to better suit you, you'll have to test untill _
                                             you find it
Next

End Sub

一般来说,在宏录制器打开的情况下,手动执行您想要执行的操作。生成的代码应该扔掉——但只有在您注意到Excel对象模型中可以在条形图中找到条形图厚度的位置之后。图表的对象模型有点复杂,所以当我需要在VBA中处理图表时,我经常会这样做。您好,谢谢您的回答。我想我快到了。除了固定间隙宽度,是否也可以固定棒材宽度?并非所有图表都包含相同数量的条形图,并且希望看到所有条形图都是相同的。嗨@Ryan,据我所知,不可能按属性进行更改,因为属性会根据间隙宽度和图表大小调整条形图的宽度。GapWidth属性用于按条形图簇的百分比调整条形图的大小(请参见此处的文档:)。考虑到所有图表都具有相同的大小,您可以做的是计算每个图表上的条形数,然后使用选择案例根据找到的数字设置间隙宽度,这样您就可以“标准化”图表。