运行 个来自 Toolbar/Running 个宏的宏
Running Macros from Toolbar/Running one macro from another
我正在尝试为发布者文档开发宏。此宏将在 运行 时显示一个弹出窗口,允许用户 select 三种类型的客户端之一,并根据 select 的选项向文本框添加不同的项目符号点]编辑。我有两个不同的问题,我怀疑它们来自同一来源。第一个问题是,单击按钮时,我无法将用户表单上的按钮设置为 运行 不同的宏。问题二是我已将我的宏添加到工具栏之一,但当我单击它们时没有任何反应。在这两种情况下,它根本就不是 运行ning 宏。我做错了什么?
用户窗体 1
Private Sub CommandButton1_Click()
Application.Run ("ShapeTest")
End Sub
Private Sub UserForm_Initialize()
With ListBox1
.AddItem ("Federal")
.AddItem ("State")
.AddItem ("Local")
End With
End Sub
这份文件
Private Sub GenerateStatement()
UserForm1.Show
End Sub
Private Sub ShapeTest()
MsgBox ("Hello!")
Application.ActiveDocument.Pages(1).Shapes(1).TextFrame.TextRange.InsertAfter`enter code here`(Chr(13) & "My Text")
End Sub
你为什么使用 Application.Run("ShapeTest")
而不是简单的 ShapeTest
?
我没有足够的信息来 100% 确定,但以下应该有效:要使 ShapeTest
可从用户窗体调用,您需要做两件事:
1) 将其从 ThisDocument
移动到通用代码模块(编辑器中第一个 Insert/Module
)。
2) 删除 Sub ShapeTest()
前面的单词 Private
-- 你不希望 这是一个私人子,因为你需要代码在模块之外才能使用它。
编辑时:或者——您可以将 ShapeTest()
保留在 ThisDocument
中的位置,去掉 Private
限定符并在用户表单代码中引用 ShapeTest
为 ThisDocument.ShapeTest
。我更喜欢使用第一种方法,因为我倾向于在通用代码模块中保留尽可能多的代码(为事件处理程序保留 ThisDocument
之类的东西)但是 OTOH 我的 VBA 经验主要是 Excel 和少量的 Word,可能有理由将代码保留在 Publisher 的 ThisDocument
中。我不了解 Publisher,但我有时 运行 在 Word 中遇到的一个问题是我有时会不小心将代码放入 Normal
模板中,而我想将其放入文档的项目中。如果在 Publisher 中可能出现类似的情况,您应该仔细检查您的代码所在的位置。
我正在尝试为发布者文档开发宏。此宏将在 运行 时显示一个弹出窗口,允许用户 select 三种类型的客户端之一,并根据 select 的选项向文本框添加不同的项目符号点]编辑。我有两个不同的问题,我怀疑它们来自同一来源。第一个问题是,单击按钮时,我无法将用户表单上的按钮设置为 运行 不同的宏。问题二是我已将我的宏添加到工具栏之一,但当我单击它们时没有任何反应。在这两种情况下,它根本就不是 运行ning 宏。我做错了什么?
用户窗体 1
Private Sub CommandButton1_Click()
Application.Run ("ShapeTest")
End Sub
Private Sub UserForm_Initialize()
With ListBox1
.AddItem ("Federal")
.AddItem ("State")
.AddItem ("Local")
End With
End Sub
这份文件
Private Sub GenerateStatement()
UserForm1.Show
End Sub
Private Sub ShapeTest()
MsgBox ("Hello!")
Application.ActiveDocument.Pages(1).Shapes(1).TextFrame.TextRange.InsertAfter`enter code here`(Chr(13) & "My Text")
End Sub
你为什么使用 Application.Run("ShapeTest")
而不是简单的 ShapeTest
?
我没有足够的信息来 100% 确定,但以下应该有效:要使 ShapeTest
可从用户窗体调用,您需要做两件事:
1) 将其从 ThisDocument
移动到通用代码模块(编辑器中第一个 Insert/Module
)。
2) 删除 Sub ShapeTest()
前面的单词 Private
-- 你不希望 这是一个私人子,因为你需要代码在模块之外才能使用它。
编辑时:或者——您可以将 ShapeTest()
保留在 ThisDocument
中的位置,去掉 Private
限定符并在用户表单代码中引用 ShapeTest
为 ThisDocument.ShapeTest
。我更喜欢使用第一种方法,因为我倾向于在通用代码模块中保留尽可能多的代码(为事件处理程序保留 ThisDocument
之类的东西)但是 OTOH 我的 VBA 经验主要是 Excel 和少量的 Word,可能有理由将代码保留在 Publisher 的 ThisDocument
中。我不了解 Publisher,但我有时 运行 在 Word 中遇到的一个问题是我有时会不小心将代码放入 Normal
模板中,而我想将其放入文档的项目中。如果在 Publisher 中可能出现类似的情况,您应该仔细检查您的代码所在的位置。