Добрый день!
Мне нужно скопировать данные из ячейки в надпись. При этом я хочу использовать Value. Я сделал такой макрос, но он копирует только данные без оформления. Как скопировать данные из ячейки с помощью Value и чтобы сохранилось оформление?
Макрос:
Sub Макрос1()
ActiveSheet.Shapes.AddTextbox(msoTextOrientationHorizontal, 100, 100, 300, 200).Select
Selection.ShapeRange(1).TextFrame2.TextRange.Characters.Text = _
"Название" & " " & Worksheets("List1").Range("b1").Value & Chr(13) & _
"Вид"
End Sub
Кроме того, интересует, как изменить шрифт копируемого текста. Например, в ячейке шрифт 11 пунктов, нужно чтобы вставилось в надпись в размере 12 пт.
В надписи уже может быть текст со своим оформлением. Нужно сохранить этот текст и оформление.
Кроме того, интересует, можно ли такое сделать при копирование данных не в надпись, а в другую ячейку.
В надпись можно вставить текст с исходным оформлением, но для этого нужно использовать копирование / вставку.
Как использовать в данном случае Value, я не знаю.
Как менять размер шрифта у вставляемого текста, не знаю. Но можно менять размер шрифта после того, как данные окажутся в надписи. Кроме того, можно для этой задачи использовать временную надпись. Специально создаёте временную надпись, вставляете в неё данные из ячейки, делаете нужное оформление, а затем уже копируете в нужную надпись. Затем удаляете временную надпись.
Прикладываю файл, для которого сделан макрос по копированию. Макрос по изменению размера шрифта я не делал.
Макрос
Sub макрос()
Dim TextRange As TextRange2
'1. Копируем нужную ячейку, чтобы скопировать не только данные, но и оформление шрифта.
Range("A1").Copy
'2. Присваиваем объекту "TextRange" имя "TextRange".
' Для удобства написания и чтения кода.
Set TextRange = ActiveSheet.Shapes(1).TextFrame2.TextRange
'3. Вставляем в конец надписи пробел, чтобы потом вместо него вставить
' скопированные данные. Как вставить в конец надписи без пробела, я не знаю.
TextRange.InsertAfter " "
'4. Вставка в только что вставленный пробел скопированного текста.
TextRange.Characters(TextRange.Characters.Count, 1).PasteSpecial msoClipboardFormatHTML
'5. Удаление с конца пробела. Не знаю, почему он вставляется.
TextRange.Characters(TextRange.Characters.Count, 1).Delete
'6. Выход из режима копирования.
Application.CutCopyMode = False
End Sub
[вложение удалено администратором]
Как вставить в ячейку текст с оформлением, если в ячейке уже есть текст и у него есть оформление, не знаю.
Можно изменять оформление после вставки данных в ячейку.
Спасибо!
Сегодня протестирую, думал что можно как-то покороче сделать.