Заполните диапазон таблицы с textbox1.value - PullRequest
0 голосов
/ 21 мая 2018
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) не работает.Он не заполняет все строки.

Ответы [ 2 ]

0 голосов
/ 22 мая 2018

Если вы хотите использовать тот же метод, который вы обнаружили для копирования одной ячейки в несколько ячеек, это также должно работать.Однако это немного сложно, и вы не предоставляете нам достаточно информации для воспроизведения TextBox, поэтому вам может понадобиться настроить следующее.

Я поместил текстовое поле ActiveX на поверхность документа и поднял его.используя коллекцию InlineShapes.Если вы используете пользовательскую форму, вам нужно изменить эту часть.

Невозможно назначить Column в Word для объекта Range.Range должен быть непрерывным потоком текста.В Word непрерывный поток является горизонтальным, а затем вертикальным, поэтому Rows можно присвоить Range, но не столбцу.(И именно поэтому другой Ответ зацикливает ячейки в столбце, что сравнительно медленно.)

Однако возможно выбрать столбец и работать с 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
0 голосов
/ 22 мая 2018

Вам нужно перебрать все соответствующие ячейки.Например:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...