【问题标题】:VBA Userform with Textbox - formatting the text带有文本框的 VBA 用户窗体 - 格式化文本
【发布时间】:2012-09-30 17:44:54
【问题描述】:

所以我对 VBA 很陌生。我创建了一个非常简单的模板,当打开它时,会给我一个要填写的表格,它将通过命令按钮将文本插入到文档中。

我正在尝试更进一步,但不确定如何将代码组合在一起。要插入文本,我正在使用书签功能。在我的表单上,我有 4 个文本框作为选项。如果4个都填好了,文字如下:

选项1选项2选项3选项4

我需要它看起来像:

选项1、选项2、选项3和选项4

不仅如此,我还希望根据填充的文本框数量添加“和”。例如,如果我只填充了前两个,我需要它看起来像:

选项1和选项2

这有意义吗?以下是它目前的结构。我将不胜感激任何前进的指示。

Private Sub cmdSubmit_Click()
    Application.ScreenUpdating = False
    With ActiveDocument
        .Bookmarks("Program1").Range.Text = TextBox1.Value
        .Bookmarks("Program2").Range.Text = TextBox2.Value
        .Bookmarks("Program3").Range.Text = TextBox3.Value
        .Bookmarks("program4").Range.Text = TextBox4.Value
        End With
    Application.ScreenUpdating = True
    Unload Me
End Sub

【问题讨论】:

    标签: vba ms-word textbox userform bookmarks


    【解决方案1】:

    如果这些书签是连续的,则不需要四个书签。添加以下模块级变量:

    Private s As String, hasAnd As Boolean
    

    创建一个Sub,它将文本框的文本添加到私有变量中,并根据需要插入逗号或and

    Private Sub AppendText(txt As TextBox)
    If Len(txt.Text) = 0 Then Exit Sub
    
    If Len(s) = 0 Then
        s = txt.Text
    ElseIf Not hasAnd Then
        hasAnd = True
        s = txt.Text & " and " & s
    Else
        s = txt.Text & ", " & s
    End If
    End Sub
    

    以相反的顺序调用每个文本框的子过程

    AppendText TextBox4
    AppendText TextBox3
    AppendText TextBox2
    AppendText TextBox1
    

    然后,使用s 的值作为书签的文本:

    ActiveDocument.Bookmarks("Program1").Range.Text = s
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-07-02
      • 1970-01-01
      • 2018-10-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-20
      • 1970-01-01
      相关资源
      最近更新 更多