Wordでコンボボックス【combobox】を使ってリッチテキストコンテンツコントロールに文字列を設定する方法!

050-VBA

へっぽこヘタレシステム管理者の管理人です。

WORDのマクロで悪戦苦闘しておりましたが・・・

前回の記事はこちら

今度は、フォームにせっちしたコンボボックスのリストから選択して、本文のコンテンツコントロールに文字列を設定する必要が出てきたので・・・

今回もまた悪戦苦闘しながらやってみました。

まずやりたいことの完成形は、下の図のとおりです。

  • 1.ユーザーフォームにコンボボックスを設置する
  • 2.コンボボックスに静的にリストを設定しておく
  • 3.ボタンを押したらコンボボックスから選択した文字列が本文のコンテンツコントロールに設定される
  • 4.次回フォームを開いた場合には設定された文字列がコンボボックスに表示させる

以上です。

さて、肝心なやり方ですが・・・

とりあえず、テストとして、適当にフォームを1つ作り・・・

そこに・・・

  • コンボボックス
  • コマンドボタン

を設置します。

お約束のワードを開いたときにフォームを開く様に・・・

標準モジュールを1つ作り・・・

Sub AutoOpen() testform1.Show End Sub

これを仕込んでおきます。

スポンサーリンク

今回フォーム名は【testform1】としています。

次にフォームを開いたときの処理です・・・

Private Sub UserForm_Initialize()
    

  'コンテンツコントールに設定された文字列をコンボボックスに設定
    Me.testbox2.Text = ActiveDocument.ContentControls.Item(1).Range.Text
    

  'コンボボックスに静的にリストを設定
    With testbox2
        .AddItem "ああああああああああ"
        .AddItem "いいいいいいいいいい"
        .AddItem "うううううううううう"
    End With

End Sub

ブログランキングにご協力ください!
ブログランキング・にほんブログ村へ

今回、コンボボックスのオブジェクト名は【testbox2】に設定しました。

最後にコマンドボタンを押してコンテンツコントロールにコンボボックスのテキストを設定する処理です・・・

Private Sub CommandButton1_Click()

    Dim control As ContentControl
    
    For Each control In ActiveDocument.ContentControls

        Select Case control.Title
            Case "testbox1"
                control.Range.Text = Me.testbox2.Text
        End Select
    Next  

End Sub

コンテンツコントロールのタグ名は【testbox1】にしました。

これで、なんとか思うような処理はできるようになりました。

ブログ開設に必要なドメイン取得、サーバーレンタル、ASPの登録等は、こちらのサイトから!

コメント

タイトルとURLをコピーしました