2016-10-04 17 views
1

私のVBAは、条件に応じていくつかのテーブルを動的に書き、かなりうまく動作します。Wordテーブルのテキストの後ろにVBA-挿入チェックボックス

たとえば、行を追加し、書式を設定して次の行に進めます。

 oDoc.Tables(t).Rows.Add 'add a row below control number 
     oDoc.Tables(t).Rows(i).Range.ParagraphFormat.Alignment = wdAlignParagraphCenter 
     oDoc.Tables(t).Rows(i).Shading.BackgroundPatternColor = oTableHeaderColor 
     i = i + 1 'advance to row below control number row. 
     oDoc.Tables(t).Cell(i, 2).Range.Text = "Check Definition" 

私はちょうど任意のテーブルがどのように多くの行を知らないので、私はこの方法でそれを行う - ので、私はそれらを必要として、私は行を作成し、不器用かもしれないが、それは動作します。

私がする必要があるのは、このようなテキストの行にチェック可能なチェックボックスを追加することです。

計画:☐

私は動作するようには思えませんいくつかの方法を試してみました。限り、私はテーブルを作成していないので、私はそれを選択することができますそれを選択します。私はマクロを記録しようとしましたが、それは最初に選択についてのビットを示しています。

ここに私が持っているものがあります。エラーが出ます。

oDoc.Tables(t).Cell(i, 2).Range.Text = "Planned: " & oDoc.Tables(t).Cell(i, 1).Range.ContentControls.Add(wdContentControlCheckBox) 

「コレクションのメンバーが存在していない私を要求します。

私は2つのラインの上に置くしようとするとそれだけで、チェックボックスでセル1を上書きしてしまいますし、私はように見えることはできませんセルの末尾に位置して最初の。任意のアイデアは?私はINSERTBEFOREを試みたし、それは動作しますが、私は同じセルに複数のチェックボックスを挿入する必要があります。

任意のアイデア? ありがとうございました。

答えて

1

テキストを取得します+チェックボックス+他のテキスト+秒のチェックボックス1つの細胞はトリッキーです。

実際にはSelectionオブジェクトを使用する必要がある場合があります。

これは、Wordで私の作品:Accessで

Dim oDoc As Word.Document 
Set oDoc = ThisDocument 
Const t = 1 
Const i = 1 

Dim rng As Word.Range 
Dim iCheck As Long 
Dim sLabel As String 

Set rng = oDoc.Tables(t).Cell(i, 2).Range 
rng.Select 
With Selection 
    .Collapse Direction:=wdCollapseStart 
    For iCheck = 1 To 3 
     sLabel = Choose(iCheck, "Planned: ", " Done: ", " Perhaps: ") 

     .TypeText Text:=sLabel 
     .Range.ContentControls.Add wdContentControlCheckBox 
     ' move cursor after checkbox 
     .MoveRight Unit:=wdCharacter, Count:=2 
    Next iCheck 
End With 

は、代わりにoWord.Selection(または何をWordに参照として持っている)を使用します。

以下は1つのチェックボックスで機能しますが、追加のテキストの後にもう1つ作成することはできませんでした。

Dim rng As Word.Range 
Set rng = oDoc.Tables(t).Cell(i, 2).Range 
rng.Text = "Planned: " 
' set range to end of cell 
rng.Collapse Direction:=wdCollapseEnd 
' I'm not entirely sure why this is needed, but without the checkbox goes into the next cell 
rng.MoveEnd Unit:=wdCharacter, Count:=-1 
rng.ContentControls.Add (wdContentControlCheckBox) 
+0

私はそれまでにどれくらい近づいてきたのか信じられませんが、あなたはそれを釘付けにしました。 私はあなたの言葉vbaと一緒にしなければならなかったのは、oWordを追加することでした。セレクションの選択と私が望むように多くのボックスを追加することができました。 – Chasester

+0

これを変更して使用しました。選択するのではなく、UBoundを使用して分割しました。 – Chasester

関連する問題