Excel VBA изменяет текст в текстовом поле - PullRequest
0 голосов
/ 09 марта 2020

Я пытаюсь изменить число в своем текстовом поле.

Мой код до сих пор выглядит следующим образом:

 Sub Box()
 ActiveSheet.Shapes("Asbuilt_Number1").Copy
 ActiveSheet.Range("C25").PasteSpecial
 Selection.ShapeRange.TextFrame.textRange.Characters.text = "2"
 Selection.Name = "Asbuilt_Number"
 End Sub

на основе макроса

 Sub Boxes_Two()
 '
 ' Macro3 Macro
 '

 '
 ActiveSheet.Shapes.Range(Array("Asbuilt_Number_1")).Select
 Selection.Copy
 ActiveSheet.Paste
 Selection.ShapeRange.IncrementLeft -0.75
 Selection.ShapeRange.IncrementTop 347.25
 Selection.ShapeRange(1).TextFrame2.textRange.Characters.text = "2"
 With Selection.ShapeRange(1).TextFrame2.textRange.Characters(1, 1). _
    ParagraphFormat
    .FirstLineIndent = 0
    .Alignment = msoAlignCenter
End With
With Selection.ShapeRange(1).TextFrame2.textRange.Characters(1, 1).Font
    .NameComplexScript = "+mn-cs"
    .NameFarEast = "+mn-ea"
    .Fill.Visible = msoTrue
    .Fill.ForeColor.RGB = RGB(0, 0, 0)
    .Fill.Transparency = 0
    .Fill.Solid
    .Size = 15
    .Name = "+mn-lt"
End With
ActiveSheet.Shapes.Range(Array("Asbuilt_Number_1")).Select
Selection.ShapeRange.Name = "Asbuilt_Number"
Selection.Name = "Asbuilt_Number"
 End Sub

Я недоволен макросом, так как мой скопированный номер находится в совершенно ином месте, чем я планировал.

Мой не-макрос код выдает ошибку: объект не поддерживает это свойство или метод в строке

     Selection.ShapeRange.TextFrame.textRange.Characters.text = "2"

Даже если я удалю Characters, аналогично приведенному ниже шаблону:

https://docs.microsoft.com/en-us/office/vba/api/project.shaperange.textframe2

enter image description here

Как быстро изменить название моего текстового поля?

1 Ответ

1 голос
/ 09 марта 2020

Это работает для меня, давайте попробуем следующий код:

Примечание: ActiveSheet.Range("C25").Paste не будет работать

Sub Box()
 With ActiveSheet
    .Shapes("Asbuilt_Number1").Copy
    [C25].Activate
    .Paste
    .Shapes(.Shapes.Count).Name = "Asbuilt_Number2"
    .Shapes("Asbuilt_Number2").TextFrame2.TextRange.Characters.Text = "2"
 End With
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...