Как разместить объект текстового поля над определенной ячейкой при автоматизации Excel?
-
09-06-2019 - |
Вопрос
Мы автоматизируем Excel с помощью VB.Net и пытаемся разместить несколько строк текста на листе Excel, который мы можем запретить печатать.Между ними у нас будут отчеты для печати.Мы можем сделать это, если добавим объекты текстового поля и установим для параметра объекта печати значение false.(Если у вас есть другой способ, пожалуйста, направьте меня)
Код для добавления текстового поля:
ActiveSheet.Shapes.AddTextbox(msoTextOrientationHorizontal, 145.5, 227.25, 304.5, 21#)
но позиционирование в баллах.Нам нужен способ разместить его над определенной ячейкой и изменить его размер вместе с ячейкой.Как мы можем узнать, куда его поместить, если мы просто знаем, в какую ячейку его поместить?
Решение
Если у вас есть имя или позиция ячейки, вы можете сделать:
With ActiveSheet
.Shapes.AddTextbox msoTextOrientationHorizontal, .Cells(3,2).Left, .Cells(3,2).Top, .Cells(3,2).Width, .Cells(3,2).Height
End With
Это добавит текстовое поле над ячейкой B3.При изменении размера B3 изменяется и текстовое поле.
Другие советы
Когда вы копируете и вставляете текстовое поле, Excel помещает новое текстовое поле поверх выбранной в данный момент ячейки.Таким образом, вы можете добиться этого очень легко, просто используя команды копирования и вставки VBA.Это может быть особенно полезно, если вы собираетесь использовать много очень похожих текстовых полей, поскольку вы фактически создаете шаблон текстового поля.