如何使用VBA检测Excel中的图形中是否有文本框?
以下宏在y轴顶部生成一个文本框,以显示单位。我使用文本框而不是内置的图例格式,因为它更灵活如何使用VBA检测Excel中的图形中是否有文本框?,excel,vba,Excel,Vba,以下宏在y轴顶部生成一个文本框,以显示单位。我使用文本框而不是内置的图例格式,因为它更灵活 ActiveChart.Shapes.AddTextbox(msoTextOrientationHorizontal, 0, 0, 80, 20).Select With Selection.ShapeRange(1).TextFrame2.TextRange .Characters.Text = "[Units]" End With 我想在此块之前添加一个条件,以便在文本框已经存在时代码停止
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
如果图表是独立表,则使用此
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
我将循环
ActiveSheet.Shapes(ActiveChart.Parent.Name)
,并可能使用typename
检查ActiveSheet.Shapes(ActiveChart.Parent.Name)在图形嵌入工作表时有效,而不是在图形位于其自己的工作表中时有效。有什么想法吗?