我认为我追随的面向对象模式是错误的。
目前这是设置
在主要模块中:
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传递图表对象,而不使用公共范围的变量?
答案 0 :(得分:1)
是
由于chartOb
是全局范围的,因此您无需将其传递给函数或子函数,以使其在该函数或子函数中可见。此外,如果您不想要全局范围的图表,则可以传递它。哪个更好?这是个人编码偏好。就个人而言,我喜欢尽可能保密,所以我更喜欢传递变量。
还要注意通过引用ByRef
和值ByVal
传递参数之间的区别}通过引用传递(这是图表之类的对象的默认值)传递实际对象,因此可以进行更改它。按值传递会传递对象的副本,因此您在function / sub中所做的更改将不会持续存在。
语法注释:你所谓的“参数”被称为“参数”。