# 内部宏解释器

[](https://help.qlik.com/en-US/qlikview/Subsystems/Client/Content/QV_QlikView/Internal_Macro_Interpreter.htm) [](https://help.qlik.com/en-US/qlikview/Subsystems/Client/Content/QV_QlikView/Internal_Macro_Interpreter.htm)QlikView 对象可通过脚本编译引擎的方法从 QlikView 内部通过自动访问。

## 调用宏

[](https://help.qlik.com/en-US/qlikview/Subsystems/Client/Content/QV_QlikView/Internal_Macro_Interpreter.htm)以 VBScript 或 JScript 编写的宏，可在一个 QlikView 文档中以不同的方式调用：

### 文档事件：

* 在打开一个 QlikView 文档后可运行宏。
* 在重新执行脚本后可运行宏。
* 在减少数据指令后可运行宏。
* 在在一个文档的任何字段中作出选择后可运行宏。
* 在当一个文档中的任何一个变量值改变时可运行宏。

从文档事件调用的宏是从文档属性：触发器页面创建的。

### 工作表事件：

* 在激活一个工作表后可运行宏。
* 当关闭一个工作表时可运行宏。

从工作表事件调用的宏是从工作表属性：触发器页面创建的。

### 工作表对象事件：

* 在激活一个工作表对象后可运行宏。
* 当关闭一个工作表或对象时可运行宏。

从工作表对象事件调用的宏是从工作表属性：触发器页面创建的。

### 按钮事件：

* 按钮可以定义为宏按钮。

从宏按钮事件调用的宏是从按钮操作页面创建的。

### 字段事件：

* 在一个指定字段作出选择后可运行宏。
* 当在任何字段（逻辑关联指定字段）中作出选择时都可以运行宏。
* 当在指定字段中锁定选择时可运行宏。
* 当在指定字段中解锁选择时可运行宏。

从字段事件调用的宏是从文档属性：触发器页面创建的。

### 变量事件：

* 当新值直接输入一个指定的变量时可以运行宏。
* 当作为其它变量的改变或文档的逻辑状态改变的结果，指定的变量的值发生变化时可运行宏。

从变量事件调用的宏是从文档属性：触发器页面创建的。

### 宏编辑器：

无论如何触发，都可以在编辑模块对话框中创建和编辑宏。

示例：

此部分提供了一个 VBScript 宏示例，可能非常有用。

`Using VBScript Input Boxes for User Interaction` `rem ** Clear selections, ask for product, **` `rem ** select that product, **` `rem ** go to sheet "Market", **` `rem ** show pivot table "Sales" **` `Sub ChooseValue` `Set q = ActiveDocument` `q.ClearAll (false)` `Set f = q.Fields("Model Name")` `x = inputbox ("Enter product")` `f.Select(x)` `set s = q.Sheets("Market")` `s.Activate` `s.SheetObjects("Sales").Activate` `end sub`

## JScript 特殊库函数

尽管标准的 VBScript 函数 InputBox 和 MsgBox 可在 VBScript 宏中自由使用，当使用 JScript 时没有直接的相对项可用。为此目的，为这些操作添加一个特殊的库 qvlib。这些函数在以下示例中展示。

`// JScript` `function Test()` `{` `personName = qvlib.InputBox("What is you name?")` `msg = "Hello " + personName + " !"` `qvlib.MsgBox(msg)` `}`

qvlib 函数实际上也在 VBScript 宏中起作用，如下示例所示，但在本例中您可以使用通用的 VBScript 函数 InputBox 和 MsgBox。

`rem VBScript` `sub TestModule` `name = qvlib.InputBox("What is your name?")` `msg = "Hello "` `msg = msg + name + " !"` `qvlib.MsgBox(msg)` `end sub`

## 了解详情

* [文档属性：触发器](https://help.qlik.com/zh-CN/qlikview/September2025/Subsystems/Client/Content/QV_QlikView/Document_Properties_Triggers.htm)
* [工作表属性：触发器](https://help.qlik.com/zh-CN/qlikview/September2025/Subsystems/Client/Content/QV_QlikView/Sheet_Properties_Triggers.htm)
* [操作](https://help.qlik.com/zh-CN/qlikview/September2025/Subsystems/Client/Content/QV_QlikView/Actions.htm)
* [脚本变量](https://help.qlik.com/zh-CN/qlikview/September2025/Subsystems/Client/Content/QV_QlikView/Scripting/ScriptVariables.htm)