内部宏解释器
QlikView 对象可通过脚本编译引擎的方法从 QlikView 内部通过自动访问。
调用宏
以 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