如何使用VBA在Excel中检测图形中是否存在文本框?

问题描述 投票:0回答:1

下面的宏在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
...
excel vba excel-vba excel-2010
1个回答
0
投票

[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

enter image description here

如果图表是独立工作表,则使用此

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

enter image description here

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
© www.soinside.com 2019 - 2024. All rights reserved.