一次在Excel VBA中移动图表

时间:2019-06-21 05:13:21

标签: excel vba

我在一张2X2网格中彼此相邻排列的Excel工作表中有4个图表。在它们的后面,有一张图表所覆盖的数字表。我想要一个宏,该宏将所有图表移到最右边并且不可见,以便显示表格。然后是另一个宏,可以使图表恢复原状(但是一旦我有了第一个宏,则该宏是相同的想法)。因此,我希望所有图表都像一个单元格一样从A1单元格(左上图表的左上角)移动到AB1单元格,而其他图表保持相对于第一张图表的位置。

1 个答案:

答案 0 :(得分:1)

以下宏更改了活动工作表中所有图表的左侧位置(如果需要,还可以更改顶部位置):

' ***
' Offset all charts in the active sheet.
'
' Args:
'   [offsetLeft = 0] (Double): Number to offset left position of charts by.
'                              Can be positive (to the right) or negative (to the left).
'   [offsetTop = 0] (Double): Number to offset top position of charts by.
'                             Can be positive (down) or negative (up).
'
' Example:
'   offsetChartsInActiveSheet 100, 0
'   offsetChartsInActiveSheet -100, 0
Private Sub offsetChartsInActivesheet(Optional offsetLeft As Double = 0, Optional offsetTop As Double)
    Dim cht As ChartObject
    For Each cht In ActiveSheet.ChartObjects
        cht.Left = cht.Left + offsetLeft
        cht.Top = cht.Top + offsetTop
    Next
End Sub

Public Sub moveCharts()
    offsetChartsInActivesheet 200
End Sub

Public Sub moveChartsBack()
    offsetChartsInActivesheet -200
End Sub

moveChartsmoveChartsBack中的值更改为任意值。您也可以为此使用常量。