【问题标题】:VBA and Word: Cutting a TextBox name to match that of a BookmarkVBA 和 Word:剪切文本框名称以匹配书签的名称
【发布时间】:2019-04-08 03:33:16
【问题描述】:

我有一个 Word 模板,其中有很多书签分配到其中的某些位置。 我创建了一个带有 TextBoxes 的 UserForm 以将文本插入到这些位置/书签中。

Bookmarks 和 TextBoxes 的名称匹配,但 TextBoxes 名称前面添加了“TextBox_”。 我还想出了如何遍历选项卡的所有文本框(例如)。

现在我想在循环时从 TextBoxes 名称中删除“TextBox_”,并将它们的值分配给书签。我想使用

来做到这一点
Replace(ctl.Name, "TextBox_", "")

但它不会工作。有人可以告诉我出了什么问题或帮助我找到解决方案吗?我现在脑袋一片空白……

提前致谢!

到目前为止我的代码:

Private Sub apply_textboxes()

Dim ctl As Control

For Each ctl In Me.MultiTab1.Pages(Me.MultiTab1.Value).Controls

    If TypeName(ctl) = "TextBox" Then

        ActiveDocument.Bookmarks(Replace(ctl.Name, "TextBox_", "")) = ctl.Value

    End If

End Sub

(在我的用户窗体中,一个按钮正在调用 apply_textboxes 子。)

PS:出于某种原因,我从一开始的“嗨”就被删掉了。所以从这里“大家好”!

【问题讨论】:

  • “不会工作”不能很好地描述您的实际问题。你有错误吗?
  • ActiveDocument.Bookmarks(Replace(ctl.Name, "TextBox_", "")).Range.Text = ctl.Value
  • 对不起,你是对的!按下按钮后,我收到以下错误消息:“编译错误:无效使用属性”并且以下代码被突出显示:code.Bookmarks(Replace(ctl.Name, "TextBox_", "")) =
  • 从您的第二条评论中添加代码 (.Range.Text) 后,我收到以下错误消息:“运行时错误 '5941': 请求的集合成员不存在。”整行代码以黄色突出显示:codeActiveDocument.Bookmarks(Replace(Steuerelement.Name, "TextBox_", "")).Range.Text = Steuerelement.Value
  • 好的,我搞定了!我有更多没有相应书签的文本框!所以我猜那些不存在的书签是“不存在的集合成员”!所以你的解决方案最终奏效了。太感谢了! :) 接下来做什么?你会把它作为答案发布吗?抱歉,我是新人...

标签: vba ms-word userform


【解决方案1】:

这应该可行:

ActiveDocument.Bookmarks(Replace(ctl.Name, "TextBox_", "")).Range.Text = ctl.Value

你需要那个.Range.Text

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-07-05
    • 2013-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-06
    • 1970-01-01
    相关资源
    最近更新 更多