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

时间:2015-06-30 14:01:08

标签: excel vba excel-vba

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

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

如果我单步执行代码,我可以使用.Top = chart1top.Top,这将完美地重新定位。我的问题是,这只有在我单步执行代码时才有效。如果我让它没有断点,代码表会变得更宽,超出打印范围,所以我试图定义宽度和高度。

ChartWidth行如果没有编译的“预期列表”或者我不能写。

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

有更简单的方法吗?

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

1 个答案:

答案 0 :(得分:2)

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

这是默认设置: enter image description here

Object positioning下注明已选择Move and size with cells。我冒昧地说你选择了另外两个单选按钮中的一个。

您可以手动更改一个图表,或者如果它似乎是一个持续的问题,您可以录制一个宏来为您提供需要设置的确切属性,然后在代码中设置Move and size事先到您的行删除代码,它应该按预期移动。