VBA Userform with Textbox - 格式化文本

时间:2012-09-30 17:44:54

标签: textbox word-vba bookmarks userform

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

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

Option1Option2Option3Option4

我需要它看起来像:

选项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

1 个答案:

答案 0 :(得分:0)

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

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