编译错误标签未定义

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

请帮助我理解为什么我收到此错误以及我可以修复的代码才能正常运行。我相信它与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
vba excel-vba excel
2个回答
0
投票

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

Exit Sub

ErrorCatch:
MsgBox Err.Description

End Sub

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


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个。

© www.soinside.com 2019 - 2024. All rights reserved.