2012-09-30 96 views
1

因此我对VBA很新。我创建了一个非常简单的模板,打开时给了我一个表单来填写将通过命令按钮将文本插入到文档中的表单。带有文本框的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 

回答

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