编译错误标签未定义

时间:2018-03-06 15:49:36

标签: vba excel-vba excel

请帮助我理解为什么我收到此错误以及我可以修复的代码才能正常运行。我相信它与Graphs部分有关。提前谢谢!

Sub LocationAdjust()

    Dim Facility As String
    On Error GoTo Errorcatch

    Facility = "B1"

    If Facility = Aberdeen Then

    'Stoplight Ratings - Works'
    Range("D53:M53").ClearContents
    Range("D54:M54").ClearContents
    Range("D54:M54").ClearFormats
    Range("D133:M133").ClearContents
    Range("D134:M134").ClearContents
    Range("D134:M134").ClearFormats
    Range("C230:L230").ClearContents
    Range("C231:L231").ClearContents
    Range("C231:L231").ClearFormats

    'Statistics Tables - Works'
    Range("C215:F224").ClearContents
    Range("C215:F224").ClearFormats
    Range("G295:J304").ClearContents
    Range("G295:J304").ClearFormats

    'Graphs - Need to fix'

    Dim cht As Chart

    Set cht = ActiveSheet.ChartObjects("Chart 3").Chart

    'Remove Chart Series
    cht.SeriesCollection(2).Delete
    cht.SeriesCollection(3).Delete
    cht.SeriesCollection(4).Delete
    cht.SeriesCollection(5).Delete
    cht.SeriesCollection(6).Delete
    cht.SeriesCollection(7).Delete
    cht.SeriesCollection(8).Delete
    cht.SeriesCollection(9).Delete
    cht.SeriesCollection(10).Delete

    End If

End Sub
Exit Sub

Error Catch:
MsgBox Err.Description

2 个答案:

答案 0 :(得分:0)

代码的结尾看起来应该更像这样:

Exit Sub

ErrorCatch:
MsgBox Err.Description

End Sub

End Sub应该是最后一行。如果不是,那么之后的任何内容都不包含在例程的定义中。

答案 1 :(得分:0)

设施不能同时 B1 Aberdeen 。我相信你希望Range(“B1”)的文本值与字符串“Aberdeen”相比。

Facility = Range("B1").Value

If Facility = "Aberdeen" Then
不过,这将是一个区分大小写的比较。

关于SeriesCollection删除,应该另外提出一点。当你这样删除时,

'Remove Chart Series
cht.SeriesCollection(2).Delete

然后SeriesCollection(3)变为SeriesCollection(2),依此类推。您的下一步操作是,

cht.SeriesCollection(3).Delete

但这实际上是原始的SeriesCollection(4)所以你跳过了原来的SeriesCollection(3),在你遇到SeriesCollection(10)之前你将会用完SeriesCollections。试试这个,

do while cht.SeriesCollection.count > 1
    cht.SeriesCollection(2).Delete
loop

这将继续删除,直到只剩下1个。