Vba 图表数据表大小问题

Vba 图表数据表大小问题,vba,excel,Vba,Excel,我正在运行一个宏来调整绘图区域的大小,以使报表中的所有图形一致。但是,在调整打印区域的大小时,图表数据表也会调整大小,并且数据表中的行的标签会变成文本包装。如果我手动稍微调整绘图区域的大小,然后文本是固定的,并且是自动调整的,并且不再将文本包装为占用三行或四行,则此问题已得到修复。有办法解决这个问题吗?这是我当前的代码 Sub Color_Loop_Series() Dim sht As Worksheet Dim CurrentSheet As Worksheet Dim cht As Cha

我正在运行一个宏来调整绘图区域的大小,以使报表中的所有图形一致。但是,在调整打印区域的大小时,图表数据表也会调整大小,并且数据表中的行的标签会变成文本包装。如果我手动稍微调整绘图区域的大小,然后文本是固定的,并且是自动调整的,并且不再将文本包装为占用三行或四行,则此问题已得到修复。有办法解决这个问题吗?这是我当前的代码

Sub Color_Loop_Series()
Dim sht As Worksheet
Dim CurrentSheet As Worksheet
Dim cht As ChartObject
Dim ser As Series

For Each sht In ActiveWorkbook.Worksheets
For Each cht In sht.ChartObjects
cht.Activate
ActiveChart.ChartType = xlLineMarkers
ActiveChart.Legend.Position = xlLegendPositionBottom
ActiveChart.Legend.Font.Size = 9
ActiveChart.PlotArea.Select
Selection.Width = 380
Selection.Left = 11
Selection.Top = 3
Selection.Height = 250
ActiveChart.Axes(xlValue).AxisTitle.Position = xlAxisPositionLeft
ActiveChart.DataTable.Font.Size = 5.5
Next cht
Next sht
End Sub

通过在移动绘图区域时录制宏,我可以使用Excel 2010复制您的问题。运行录制的宏时,数据表图例会调整大小并进行文字包装。我找不到数据表图例的任何直接句柄,但确实发现
.Left
.InsideLeft
都会影响换行

这是您的代码,稍作修改以删除所有
活动的
语句

Sub Color\u Loop\u Series()
将sht变暗为工作表
将当前工作表设置为工作表
作为图表对象的Dim cht
Dim ser As系列
对于ActiveWorkbook.工作表中的每个sht
对于sht.ChartObjects中的每个cht
有红隧图
.ChartType=xlLineMarkers
.Legend.Position=xlLegendPositionBottom
.Legend.Font.Size=9
.DataTable.Font.Size=5.5
.Axes(xlValue).AxisTitle.Position=xlAxisPositionLeft
以
使用cht.Chart.PlotArea
.宽度=380
.高度=250
.左=11
.Top=3

.InsideLeft=80'我可以使用Excel 2010复制您的问题,方法是在移动绘图区域时录制宏。运行录制的宏时,数据表图例会调整大小并进行文字包装。我找不到数据表图例的任何直接句柄,但确实发现
.Left
.InsideLeft
都会影响换行

这是您的代码,稍作修改以删除所有
活动的
语句

Sub Color\u Loop\u Series()
将sht变暗为工作表
将当前工作表设置为工作表
作为图表对象的Dim cht
Dim ser As系列
对于ActiveWorkbook.工作表中的每个sht
对于sht.ChartObjects中的每个cht
有红隧图
.ChartType=xlLineMarkers
.Legend.Position=xlLegendPositionBottom
.Legend.Font.Size=9
.DataTable.Font.Size=5.5
.Axes(xlValue).AxisTitle.Position=xlAxisPositionLeft
以
使用cht.Chart.PlotArea
.宽度=380
.高度=250
.左=11
.Top=3

.InsideLeft=80'所以我现在试着运行它,但是在.Width=350时我遇到了一个失败。它是说在一些图表的这个部分失败了。我不知道为什么。另外,当你注释掉
.InsideLeft
时,它是否有效?我猜这是不相关的。你是对的,这是一个不相关的问题,当ActieChart部分被删除时发生的,但我找到了一个解决方案。谢谢所以我现在试着运行这个,但是我在.Width=350时失败了,这是说它在这个部分的一些图表中失败了。我不知道为什么。另外,当你注释掉
.InsideLeft
时,它是否有效?我猜这是不相关的。你是对的,这是一个不相关的问题,当ActieChart部分被删除时发生的,但我找到了一个解决方案。谢谢
Sub Color_Loop_Series()
    Dim sht As Worksheet
    Dim CurrentSheet As Worksheet
    Dim cht As ChartObject
    Dim ser As Series

    For Each sht In ActiveWorkbook.Worksheets
        For Each cht In sht.ChartObjects
            With cht.Chart
                .ChartType = xlLineMarkers
                .Legend.Position = xlLegendPositionBottom
                .Legend.Font.Size = 9
                .DataTable.Font.Size = 5.5
                .Axes(xlValue).AxisTitle.Position = xlAxisPositionLeft
            End With

            With cht.Chart.PlotArea
                .Width = 380
                .Height = 250
                .Left = 11
                .Top = 3
                .InsideLeft = 80    '<- Adjust this value
            End With
        Next cht
    Next sht
End Sub