Как разместить объект текстового поля над определенной ячейкой при автоматизации Excel?

StackOverflow https://stackoverflow.com/questions/66934

  •  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.Это может быть особенно полезно, если вы собираетесь использовать много очень похожих текстовых полей, поскольку вы фактически создаете шаблон текстового поля.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top