自定义宏
简介¶
在 CCH Tagetik 中,自定义宏是一项集成功能,它通过一系列脚本,允许用户自定义或自动化某些数据录入操作。具体而言,自定义宏允许用户:
- 在 Excel 表单中编写 VBA 宏
- 实现自定义函数或例程,在用户定义的事件发生时运行
本模块描述了支持自定义宏的事件的详细信息,并提供了相关语法的说明。
支持的事件¶
系统支持以下事件:
- 运行表单(TGK_BeforeRun / TGK_AfterRun)
- 保存表单(TGK_BeforeSave / TGK_AfterSave)
- 更新表单(TGK_BeforeRefresh / TGK_AfterRefresh)
- 生成已部署的矩阵(TGK_MatrixCreated)
- 关闭明细窗口以编辑事务性表单(TGK_BeforeFormEditorCommit)
表单运行后执行的示例
在此示例中,定义了一个在表单运行步骤结束时调用的子例程(TGK_AfterRun)。

表单运行后,列 A、B 和 C 被隐藏。
表单保存前执行的示例
在此示例中,定义了一个在表单保存前调用的函数(TGK_BeforeRun)。

该函数返回以下值:
| 如果... | 则... | 并且... |
|---|---|---|
| 用户选择 是 | 返回 TRUE 值 | 系统将允许保存数据。 |
| 用户选择 否 | 返回 FALSE 值 | 系统将不允许保存数据。 |
TGK_BeforeRun
| 元素 | 描述 |
|---|---|
| 语法 | public function TGK_BeforeRun(reportCode as String, processCode as String, isRefill as Boolean) as Boolean |
| 事件描述 | 此事件在表单运行之前被调用,紧接在系统询问是否存在筛选器之后。注意:在此事件中无法调用数据处理运行,因为表单的数据处理只能在表单已以数据录入模式打开时运行。 |
| 必要参数 | - reportCode。表单运行的代码(在临时表单中不存在)- processCode。当前流程的代码(如果表单在导航模式下运行,则为空字符串)- isRefill。TRUE = 下次刷新,FALSE = 初始运行 |
| 返回值 | - TRUE 表示运行必须继续。- FALSE 表示运行必须取消。 |
TGK_AfterRun
| 元素 | 描述 |
|---|---|
| 语法 | public sub TGK_AfterRun(reportCode as String, processCode as String) |
| 事件描述 | 此事件在表单运行步骤结束时被调用。在 Handle custom event callbacks with unprotected sheets 选项激活的情况下,此例程的代码将在 Excel 电子表格临时解锁的状态下运行,但宏完成后它们会再次被锁定。 |
| 必要参数 | - reportCode。表单运行的代码(在临时表单中不存在)- processCode。当前流程的代码(如果表单在导航模式下运行,则为空字符串)当用户对所有工作簿工作表运行循环时,系统还会考虑包含应用程序保留信息的隐藏工作表,这可能会产生数据处理错误。可以运行以下子例程来排除隐藏工作表:Sub TGK_AfterRun (reportCode as String, processCode as String) numIndex = 1 columnA = 22 Do While numIndex < WorkSheets.Count if WorkSheets(numIndex).visible = xlSheetVisible WorkSheets(numIndex).Columns(columnA).entireColumn.Hidden = True end if numIndex = numIndex + 1 Loop End Sub |
TGK_BeforeSave
| 元素 | 描述 |
|---|---|
| 语法 | public function TGK_BeforeSave(reportCode as String, processCode as String) as boolean |
| 事件描述 | 此事件在编辑的值被保存之前被调用。在 Handle custom event callbacks with unprotected sheets 选项激活的情况下,此例程的代码将在 Excel 电子表格临时解锁的状态下运行,但宏完成后它们会再次被锁定。 |
| 必要参数 | - reportCode。要保存其值的表单的代码 - processCode。当前流程的代码 |
| 返回值 | - TRUE 表示保存必须继续。- FALSE 表示保存必须取消。 |
TGK_AfterSave
| 元素 | 描述 |
|---|---|
| 语法 | public sub TGK_AfterSave(reportCode as String, processCode as String) |
| 事件描述 | 此事件在已编辑的表单被保存后被调用。 |
| 必要参数 | - reportCode。当前表单的代码 - processCode。当前流程的代码 |
TGK_BeforeRefresh
| 元素 | 描述 |
|---|---|
| 语法 | public function TGK_BeforeRefresh(closeWorkbook as Boolean, action as integer) as Boolean |
| 事件描述 | 此事件在表单刷新之前被调用。注意:当报表列表被刷新时不使用此事件。该函数从运行刷新的工作簿中运行。更新结束时,工作簿可由宏关闭。在 Handle custom event callbacks with unprotected sheets 选项激活的情况下,此例程的代码将在 Excel 电子表格临时解锁的状态下运行,但宏完成后它们会再次被锁定。 |
| 必要参数 | - closeWorkbook。如果为 TRUE,则在刷新结束时关闭当前工作簿。- action。指示调用刷新的事件:- 1 = 从 Excel 使用按钮请求更新。- 2 = 使用 VBA 宏请求刷新。- 3 = 表单保存后请求刷新。- 4 = 数据处理结束时请求刷新。 |
| 返回值 | - TRUE 表示刷新必须继续。- FALSE 表示刷新必须取消。 |
TGK_AfterRefresh
| 元素 | 描述 |
|---|---|
| 语法 | public function TGK_AfterRefresh(formCode as String, processCode as String) as Boolean |
| 描述 | 此事件在表单刷新后被调用。注意:当报表列表被刷新时不使用此事件。该函数从运行刷新的工作簿中运行。刷新结束时,工作簿可由刷新操作关闭。在 Handle custom event callbacks with unprotected sheets 选项激活的情况下,此例程的代码将在 Excel 电子表格临时解锁的状态下运行,但宏完成后它们会再次被锁定。 |
| 必要参数 | - formCode。标识运行刷新的表单。- processCode。标识流程,如果表单在导航模式下运行则为空字符串。 |
TGK_MatrixCreated
| 元素 | 描述 |
|---|---|
| 语法 | public sub TGK_MatrixCreated(reportCode as String, matrixCode as string, matrixAddress as string) |
| 描述 | 此事件在动态矩阵部署结束时被调用。在此事件中,无法引用系统尚未生成的输出工作表或矩阵。 |
| 必要参数 | - reportCode。表单运行的代码(在临时表单中不存在)- matrixCode。刚创建的矩阵的代码 - matrixAddress。刚创建的矩阵所占用范围的地址 |
TGK_BeforeFormEditorCommit
| 元素 | 描述 |
|---|---|
| 语法 | public function TGK_BeforeFormEditorCommit(values() As Variant, rowIndex As Integer) as Boolean |
| 描述 | 此事件在点击事务性表单编辑器记录明细窗口中显示的 OK 按钮时被调用(事务性数据录入明细窗口)。 |
| 必要参数 | - values。点击 OK 按钮时事务性表单当前行中存在的值集合。- rowIndex。当前行的(逻辑)索引 |
| 返回值 | - TRUE:明细窗口关闭,插入的新值保留在矩阵中。- FALSE:恢复打开明细窗口时存在的原始值。 |