1

だから私はVBAに非常に慣れていません。非常に単純なテンプレートを作成しました。このテンプレートを開くと、コマンド ボタンを使用してドキュメントにテキストを挿入する入力フォームが表示されます。

私はそれをさらに一歩進めようとしていますが、コードをまとめる方法がわかりません。テキストを挿入するには、ブックマーク機能を使用しています。私のフォームには、オプションとして機能する 4 つのテキスト ボックスがあります。4 つすべてが入力されている場合、テキストは次のようになります。

オプション1オプション2オプション3オプション4

次のようにする必要があります。

オプション 1、オプション 2、オプション 3、およびオプション 4

それだけでなく、入力されたテキストボックスの数に応じて「and」が追加されるようにしたいと思います。たとえば、最初の 2 つしか入力されていない場合は、次のようにする必要があります。

オプション 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

これらのブックマークが連続している場合、4つのブックマークは必要ありません。次のモジュールレベルの変数を追加します。

Private s As String, hasAnd As Boolean

Subテキストボックスのテキストをプライベート変数の前に追加するaを作成し、コンマを挿入するか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 に答える