下面的宏在y轴顶部生成一个文本框以显示单位。我使用文本框而不是内置的图例格式,因为它更灵活。
ActiveChart.Shapes.AddTextbox(msoTextOrientationHorizontal, 0, 0, 80, 20).Select
With Selection.ShapeRange(1).TextFrame2.TextRange
.Characters.Text = "[Units]"
End With
我想在此块之前添加一个条件,以便在文本框已存在的情况下停止代码。我如何1)计算图形中有多少个文本框(不在整个工作表中),以及2)检查图形中是否有相同尺寸和位置的文本框?
也许类似以下内容,但是某种程度上仅限于文本框?
If ActiveSheet.Shapes.Count > 0 Then
...
If ActiveSheet.Shapes(ActiveChart.Parent.Name).Count > 0 Then
...
[1)计算图形中有多少个文本框(不在整个工作表中)
如果图表嵌入在工作表中,则使用此
Sub ChartInSheetHasTextBox()
Dim ws As Worksheet
Dim objChart As ChartObject
Dim cht As Chart
'~~> Change this to the relevant worksheet
Set ws = Sheet1
Set objChart = ws.ChartObjects(1)
Set cht = objChart.Chart
If cht.TextBoxes.Count > 0 Then
MsgBox "Chart has a textbox"
End If
End Sub
如果图表是独立工作表,则使用此
Sub ChartSheetHasTextBox()
Dim cht As Chart
Set cht = Charts("Chart1") '<~~ Change this to the relevant name
If cht.TextBoxes.Count > 0 Then
MsgBox "Chart has a textbox"
End If
End Sub
2)检查图形中是否存在相同尺寸和位置的文本框?
简单地将其分配给对象并使用它
If cht.TextBoxes.Count > 0 Then
Dim tb As TextBox
Set tb = cht.TextBoxes(1)
With tb
Debug.Print tb.Width; tb.Height; tb.Top; tb.Left
End With
End If