В Excel вы можете вставить объект фигур TextBox
и связать его со значением ячейки, выбрав фигуру, затем выбрав строку формул и щелкнув ячейку, значение которой вы хотите отобразить в текстовом поле.
Когда я записываю макрос, который делает это, я получаю следующее.
Sub RecordedMacro()
'
' RecordedMacro Macro
'
'
ActiveSheet.ChartObjects("Chart 1").Activate
ActiveChart.Shapes.AddTextbox(msoTextOrientationHorizontal, 0, 12.3, 101.55, _
40.5).Select
Application.CutCopyMode = False
Selection.Formula = "=Sheet1!R7C5"
Range("D16").Select
End Sub
Если я просто перезапущу этот макрос вручную, макрос прервется на этапе Selection.Formula
с ошибкой Run-time error '1004': Unable to set the Formula property of the TextBox class
Как я могу выполнить эту задачу (присвоить значение ячейки TextBox) программно, что Excel позволяет делать из пользовательского интерфейса?
Для справки, это то, что показывает XML, когда вы вручную связываете TextBox и сохраняете файл. Создать этот xml вручную было бы чудовищно сложно.
<cdr:sp macro="" textlink="Sheet1!$D$7">
<cdr:nvSpPr>
<cdr:cNvPr id="7" name="TextBox 6">
<a:extLst xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main">
<a:ext uri="{FF2B5EF4-FFF2-40B4-BE49-F238E27FC236}">
<a16:creationId xmlns:a16="http://schemas.microsoft.com/office/drawing/2014/main" id="{A138082B-AC53-4E42-86F7-A28CF4BF4089}" />
</a:ext>
</a:extLst>
</cdr:cNvPr>
<cdr:cNvSpPr txBox="1" />
</cdr:nvSpPr>
<cdr:spPr>
<a:xfrm xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main">
<a:off x="622935" y="1184910" />
<a:ext cx="2667000" cy="1200150" />
</a:xfrm>
<a:prstGeom xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" prst="rect">
<a:avLst />
</a:prstGeom>
</cdr:spPr>
<cdr:txBody>
<a:bodyPr xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" vertOverflow="clip" wrap="square" rtlCol="0" />
<a:lstStyle xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" />
<a:p xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main">
<a:fld id="{3CDA77B5-21A6-4C86-91DA-7A407717D285}" type="TxLink">
<a:rPr lang="en-US" sz="1100" b="0" i="0" u="none" strike="noStrike">
<a:solidFill>
<a:srgbClr val="000000" />
</a:solidFill>
<a:latin typeface="Droid Sans" />
<a:ea typeface="Droid Sans" />
<a:cs typeface="Droid Sans" />
</a:rPr>
<a:t>This is much longer text</a:t>
</a:fld>
<a:endParaRPr lang="en-US" sz="1100" />
</a:p>
</cdr:txBody>
</cdr:sp>
1 ответ
Вы можете использовать свойство Formula объекта TextBox для ссылки на ячейку. Кстати, никакой активации и выбора делать не нужно.
With ActiveSheet.ChartObjects("Chart 1").Chart
.Shapes.AddTextbox msoTextOrientationHorizontal, 0, 12.3, 101.55, 40.5
.TextBoxes(.TextBoxes.Count).Formula = "=Sheet1!E7"
End With
Похожие вопросы
Новые вопросы
excel
Только для вопросов по программированию для объектов или файлов Excel или для разработки сложных формул. Вы можете объединить тег Excel с VBA, VSTO, C #, VB.NET, PowerShell, OLE-автоматизацией и другими тегами и вопросами, связанными с программированием, если это применимо. Общая помощь по MS Excel для функций одного листа доступна в Super User.