现在可以将各个子例程合并到 Gardenpath 宏中。在 VBA IDE 的“代码”窗口中,在 drawtiles 子例程后面输入下列代码:
' 执行命令,调用各个函数
Sub gardenpath()
Dim sblip As Variant
Dim scmde As Variant
gpuser
sblip = ThisDrawing.GetVariable("blipmode")
scmde = ThisDrawing.GetVariable("cmdecho")
ThisDrawing.SetVariable "blipmode", 0
ThisDrawing.SetVariable "cmdecho", 0
drawout
drawtiles
ThisDrawing.SetVariable "blipmode", sblip
ThisDrawing.SetVariable "cmdecho", scmde
End Sub
path 子例程调用 gpuser 以收集所需的输入。然后将使用 GetVariable 方法获取 BLIPMODE 和 CMDECHO 系统变量的当前值,并将这些值保存为 sblip 和 scmde。然后,该子例程使用 SetVariable 方法将这两个系统变量设置为 0,从而禁用点标记和命令回显。下一步,使用 drawout 和 drawtiles 子例程绘制小路。最后,用 SetVariable 方法将系统变量重新设置为原始值。
从上述代码中可能会注意到,这是所输入的唯一不以私有关键字开始的子例程(私有关键字确保只能从当前模块中调用该子例程)。因为 gardenpath 子例程必须对用户可用,所以应该去掉私有关键字。