调用集合vba的对象

时间:2016-07-19 17:05:42

标签: vba class object collections call

我有一组员工(对象),每个员工都有自己的属性(属性),如ID,年龄等。 我已经定义了一个类模块(名为clsemployee),如下所示:

公共ID为整数 公共年龄为整数 。

我在下面的模块中将ID,年龄等属性添加到集合中:

PARAMETERS : S_MONTH LIKE ISELLIST-MONTH OBLIGATORY.
SELECT-OPTIONS : S_DATE FOR SY-DATUM.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR S_MONTH.
PERFORM GET_DATES.

FORM GET_DATES.
 DATA: MONTH     LIKE ISELLIST-MONTH,
       FIRST_DAY LIKE SY-DATUM,
       LAST_DAY  LIKE SY-DATUM.
 MONTH = SY-DATUM+0(6).  "default
 CALL FUNCTION 'POPUP_TO_SELECT_MONTH'
  EXPORTING
   ACTUAL_MONTH   = MONTH
  IMPORTING
   SELECTED_MONTH = MONTH.
 IF SY-SUBRC <> 0.
 "put some message
 ENDIF.
 CONCATENATE MONTH '01' INTO FIRST_DAY.

 CALL FUNCTION 'RP_LAST_DAY_OF_MONTHS'
  EXPORTING
   DAY_IN            = FIRST_DAY
  IMPORTING
   LAST_DAY_OF_MONTH = LAST_DAY.
 IF SY-SUBRC <> 0.
  "put some message
 ENDIF.

 S_DATE-LOW = FIRST_DAY.
 S_DATE-HIGH = LAST_DAY.
 S_DATE-SIGN = 'I'.
 S_DATE-OPTION = 'BT'.
 APPEND S_DATE.

 S_MONTH = MONTH.
ENDFORM.

我不知道如何在我的其他模块(子)中调用这个集合。我应该通过价值来电话还是通过参考来电话?我不想在我拥有的每一个子中重复定义这个员工。

1 个答案:

答案 0 :(得分:1)

扩展cyboashu说的话:

Global employee as Collection

Public Sub employee_collection()

     Set employee = New Collection
     ....'rest of code here

End Sub

Public Sub use_collection()

    Debug.print employee.count

End Sub

请注意,全局声明需要在一个模块中,也如cyboashu所述。

如果要与员工一起填充集合,请运行employee_collection代码1次。然后,您可以在已经填充的任何其他过程中简单地使用该集合。

请注意,可以重置全局变量。有关此问题的详细解释,请参阅here

相关问题