Private Sub CommandButton1_Click()
Dim tl As Integer
t1 = 33
'**************
Dim tbl1 As Table
Dim rng As Range
Set doc = ActiveDocument
Set tbl1 = ActiveDocument.Tables(t1)
Set rng = doc.Range(Start:=tbl1.Cell(2, 5).Range.Start, _
End:=tbl1.Cell(100, 5).Range.End)
rng.Text = TextBox1.Text
当我按下按钮时,此代码无法正常工作,我只能填写Start:=tbl1.Cell(2, 5)
....这只填充1个单元格
但是End:=tbl1.Cell(100, 5).Range.End)
不起作用。它没有填满所有行。
答案 0 :(得分:0)
您需要遍历所有相关的单元格。例如:
Private Sub CommandButton1_Click()
Dim tl As Long, r As Long
t1 = 33
With ActiveDocument.Tables(t1)
For r = 2 To 100
.Cell(r, 5).Range.Text = TextBox1.Text
Next
End With
End Sub
答案 1 :(得分:0)
如果您想使用您发现的将一个单元格复制到多个单元格的相同技术,那么这也应该有用。但是,这有点棘手,并且您没有提供足够的信息来重现TextBox,因此您可能需要调整以下内容。
我将ActiveX文本框放在文档表面上,然后使用InlineShapes
集合进行拾取。如果您使用的是UserForm,则需要更改该部分。
无法将Word中的Column
分配给Range
对象。 Range
必须是连续的文本流。在Word中,连续流是水平的,然后是垂直的 - 因此Rows
可以分配给Range
,但不能分配给列。 (这就是为什么另一个Answer循环列中的单元格,这相对较慢。)
但是,可以选择列并使用Selection
。因此,下面的代码会将文本框的内容复制到剪贴板,然后选择整个列并粘贴到Selection
。
Sub CopyToMultipleCells()
Dim tl As Integer
Dim doc As word.Document
Dim tb As MSForms.TextBox
tl = 1
'**************
Dim tbl1 As Table
Dim rng As Range
Set doc = ActiveDocument
'Change if on a UserForm
Set tb = doc.InlineShapes(1).OleFormat.Object
'Select the text box content, then copy it
tb.SelStart = 0
tb.SelLength = tb.TextLength
tb.Copy
Set tbl1 = ActiveDocument.Tables(tl)
tbl1.Columns(5).Select
Selection.Paste
End Sub