Причина ошибки понятна: Characters
- это коллекция, и единственное, что вы можете передать ей, - это значение индекса для одного символа.Это не многомерный массив или метод.
Чтобы расширить диапазон или выбор, используйте один из Move
методов.В этом примере MoveEnd
сделает эту работу.
Существуют различные способы сделать это.Мой предпочтительный подход ниже:
- получить
Range
для ячейки - назначить содержимое ячейке (это можно сделать за один раз, а не по частям)
- получить начальную точку ячейки и расширить необходимое количество символов (количество символов рассчитывается по длине метки)
- применить форматирование
У меня сложилось впечатление, что написание ярлыка + контент может потребоваться более одного раза.В таком случае это можно настроить как отдельную процедуру, которую можно вызывать при необходимости ...
Примечание. Если вы работаете с изменением позднего связывания Word.Table
, Word.Range
и т. Д.до Object
в декларациях.
Sub TestWriteToCell()
Dim objTable As Word.Table
'Change this to what you're using to pick up the table -
'You didn't provide this part of the code, so I had to "make do"
Set objTable = ActiveDocument.Tables(1)
Dim rngCell As Word.Range
Dim sCellContent As String
Dim sLabel As String
sLabel = "Answer:"
sCellContent = sLabel & " " & ws.Cells(Row, ANSWER_COLUMN) * 100 & "%"
Set rngCell = objTable.Cell(2, 1).Range
WriteToCellWithFormatting(rngCell, sLabel, sCellContent)
End Sub
Sub WriteToCellWithFormatting(rngCell As Word.Range, sLabel As String, sCellContent As String)
Dim lBoldLength As Long
lBoldLength = Len(sLabel)
rngCell.Text = sCellContent
'At this point rngCell contains the entire cell content
'So get to the starting point...
rngCell.Collapse wdCollapseStart
'...then extend the required number of characters
rngCell.MoveEnd wdCharacter, lBoldLength
rngCell.Bold = True
End Sub