2012-09-30 98 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