在模块之间移动图表对象

时间:2014-05-17 07:44:58

标签: vba oop excel-vba excel

我认为我追随的面向对象模式是错误的。

目前这是设置

在主要模块中:

Public chartOb As Excel.ChartObject

Sub ControlProcess()

  '<<other code here
  Call someComplexChartCode(chartOb)
  '<<other code here

End Sub

然后在一个单独的模块中,我有专业的图表对象操作代码

' Seperate module
Sub someComplexChartCode(co As Excel.ChartObject)
  With co.Chart
    '<<chart manipulation code here
  End With
End Sub

因为我有chartOb的公开声明,我不认为这些参数非常需要。如何通过args和params传递图表对象,而不使用公共范围的变量?

1 个答案:

答案 0 :(得分:1)

由于chartOb是全局范围的,因此您无需将其传递给函数或子函数,以使其在该函数或子函数中可见。此外,如果您不想要全局范围的图表,则可以传递它。哪个更好?这是个人编码偏好。就个人而言,我喜欢尽可能保密,所以我更喜欢传递变量。

还要注意通过引用ByRef和值ByVal传递参数之间的区别}通过引用传递(这是图表之类的对象的默认值)传递实际对象,因此可以进行更改它。按值传递会传递对象的副本,因此您在function / sub中所做的更改将不会持续存在。

语法注释:你所谓的“参数”被称为“参数”。