Маркировка фигуры в Excel 2007 VBA

737
Fred Giesen

Я создал макрос для создания фигур с помощью AddShape. Я называю это с помощью, .nameно я не могу поставить метку на иконке формы с макросом.

Если вы нажмете на фигуру вручную, вы можете ввести формулу, чтобы разместить метку на значке. Я не могу найти способ автоматизировать это в макросе.

Set myDocument = Worksheets(1) With myDocument.Shapes.AddShape(msoShapeFlowchartConnector, _ LCell, TCell, WCell, HCell) .Name = "Bin" & i .Select ' I would like to add the formula here! End With 

(Это на Windows 10.)

2
Как бы вы обычно назначали ему ярлык с помощью vanilla Excel? Я не вижу очевидного способа сделать это ни в контекстном меню для фигуры, ни на панели инструментов рисования. eirikdaude 8 лет назад 0
Для Excel 2013 есть метод [Shapes.AddLabel] (https://msdn.microsoft.com/en-us/library/office/ff840497.aspx), но, полагаю, он вам мало поможет. eirikdaude 8 лет назад 0

2 ответа на вопрос

0
Scott

By the simple trick of using "Record Macro", I was able to generate the following code (in Excel 2013):

Selection.ShapeRange(1).TextFrame2.TextRange.Characters.Text = "This is my shape" With Selection.ShapeRange(1).TextFrame2.TextRange.Characters(1, 12). _ ParagraphFormat .FirstLineIndent = 0 .Alignment = msoAlignLeft End With With Selection.ShapeRange(1).TextFrame2.TextRange.Characters(1, 12).Font .NameComplexScript = "+mn-cs" .NameFarEast = "+mn-ea" .Fill.Visible = msoTrue .Fill.ForeColor.ObjectThemeColor = msoThemeColorLight1 .Fill.ForeColor.TintAndShade = 0 .Fill.ForeColor.Brightness = 0 .Fill.Transparency = 0 .Fill.Solid .Size = 11 .Name = "+mn-lt" End With 

The first line of the above seems to be enough to enter the text into the shape; the rest, apparently, merely explicitly set the default attributes.

Спасибо вам большое! Это ответило не только на этот вопрос, но и на мой следующий вопрос :) (В записи Excel 2007 макрос возвращался с пустым макросом) Fred Giesen 8 лет назад 0
0
Fred Giesen

В конце концов, я откопал достаточно глубоко в отладчике, чтобы найти .texteffect.textжелаемый результат.

With myDocument.Shapes.AddShape(msoShapeFlowchartConnector, _ LCell, TCell, WCell, HCell) .Name = ShapeName .TextEffect.Text = "My Label" 

Похожие вопросы