使用命名范围在VBA中设置范围

使用命名范围在VBA中设置范围,vba,excel,Vba,Excel,我有一张图表要重新定位。该图表称为图表1 BalanceCFWD是电子表格上的命名范围(“A63”)。在我生成报告时,上面的单元格将被删除。当我删除单元格时,图表不会随单元格一起移动,因此我尝试编写此代码。这是给其他用户的 如果我一步一步地完成代码,我可以使用.Top=chart1top.Top,这将完美地重新定位。我的问题是,这只在我逐步完成代码时起作用。如果没有断点,代码图就会变宽,超出打印范围,因此我尝试定义宽度和高度 如果没有已编译的“预期列表”或(0),则无法写入图表宽度线 调整数据标

我有一张图表要重新定位。该图表称为图表1

BalanceCFWD是电子表格上的命名范围(“A63”)。在我生成报告时,上面的单元格将被删除。当我删除单元格时,图表不会随单元格一起移动,因此我尝试编写此代码。这是给其他用户的

如果我一步一步地完成代码,我可以使用.Top=chart1top.Top,这将完美地重新定位。我的问题是,这只在我逐步完成代码时起作用。如果没有断点,代码图就会变宽,超出打印范围,因此我尝试定义宽度和高度

如果没有已编译的“预期列表”或(0),则无法写入图表宽度线

调整数据标签和其他图表之后还有更多代码

有更简单的方法吗

Dim chart1top As Range
Dim chart1Left As Range
Dim chart1Width As Range
Dim chart1HeightStart As Range
Dim chart1HeightEnd As Range

       With Sheets("Overall Summary")
        Set chart1top = .Range("BalanceCFWD").Offset(1, 0)
        Set chart1Left = .Range("BalanceCFWD").Offset(1, 0) 'same as the range above
        Set chart1Width = .Range(("BalanceCFWD").Offset(1, 0) & ":" & ("BalanceCFWD").Offset(1, 5)
        Set chart1HeightEnd = .Range("BalanceCFWD").Offset(27, 5)
      End With

With ActiveChart.Parent
    .Top = chart1top.Top
    .Left = chart1Left.Left
    .Height = chart1HeightStart.Height
    .Width = chart1Width.Width
End With

如果您正在删除Excel中的行,但图表没有移动,我觉得您只需要更改购物车属性

这是默认设置:

请注意,在
对象定位
下,选择了
随单元格移动和调整大小
。我冒昧地说,您选择了另外两个单选按钮中的一个


您可以为一个图表手动更改此设置,或者,如果这似乎是一个正在进行的问题,您可以录制一个宏以提供您需要设置的确切属性,然后在行删除代码之前在代码中设置
移动和大小
,它应该按预期移动。

FreeMan。我已经定义了这些设置。我再次运行了该报告,并屏蔽了以下代码。这不是我所期望的定位。这是一个谜,因为只有.top和.left这两行是我能做到的。