1

所以我对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
4

1 回答 1

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
于 2012-10-10T10:29:38.360 回答