简体   繁体   English

Office更新后,VBA Excel工作表方法不起作用

[英]VBA Excel Sheet Method doesn't work after Office updates

I have a script that it takes datas from CSV file and after it generates a graphic. 我有一个脚本,它从CSV文件中获取数据,并在生成图形之后。 After many Office updates this script has finished to work. 在许多Office更新之后,此脚本已完成工作。 It isn't possible come back with Office version. Office版本不可能再出现。

This is the code: 这是代码:

Dim sheet
    For Each sheet In ActiveWorkbook.Sheets
        Select Case sheet.Name
            Case "Archive": Sheets(sheet.Name).Delete
            Case "Trend":  Sheets(sheet.Name).Delete
            Case "PivotTable": Sheets(sheet.Name).Delete
        End Select
Next

I receive the follow error: "Application defined or object defined error". 我收到以下错误:“应用程序定义或对象定义的错误”。 This error arrives on Select Case, because my object "sheet" hasn't the method "Name". 该错误出现在Select Case中,因为我的对象“工作表”没有方法“名称”。

I have tryed to declare "sheet" as Worksheet 我试图将“工作表”声明为工作表

Dim sheet as Worksheet
    For Each sheet In ActiveWorkbook.Sheets
        Select Case sheet.Name
            Case "Archive": Sheets(sheet.Name).Delete
            Case "Trend":  Sheets(sheet.Name).Delete
            Case "PivotTable": Sheets(sheet.Name).Delete
        End Select
    Next

At the first cicle of script I haven't any problem, from the second cicle I have the error: "Type mismatch" 在脚本的第一个提示中,我没有任何问题,而在第二个提示中,我出现了错误:“类型不匹配”

How can I solve it? 我该如何解决?

Thanks 谢谢

Note : This is not necessarily the answer, but it is too long to write down as a comment. 注意 :这不一定是答案,但是写下来作为注释太长了。

You can keep your coding a lot cleaner and simplier: I prefer not to use sheet as it's very similer to Sheet . 您可以使代码更加简洁明了:我宁愿不使用工作sheet因为它与工作Sheet非常相似。 Also, it's better if you avoid using ActiveWorkbook . 另外,最好避免使用ActiveWorkbook

Dim Sht             As Worksheet

For Each Sht In ActiveWorkbook.Sheets
    Select Case Sht.Name

        Case "Archive", "Trend", "PivotTable"
            Sht.Delete

    End Select

Next Sht

Sheets can contain Chart or Worksheets objects 工作表可以包含图表工作表对象

then 然后

if you want to delete Worksheets only then: 如果只想删除Worksheets则:

Dim sheet As Worksheet
For Each sheet In ActiveWorkbook.Worksheets '<-- loop through Worksheets collection
    Select Case sheet.Name
        Case "Archive": Sheets(sheet.Name).Delete
        Case "Trend":  Sheets(sheet.Name).Delete
        Case "PivotTable": Sheets(sheet.Name).Delete
    End Select
Next

if you want to delete both Worksheets and Charts then: 如果要删除WorksheetsCharts则:

Dim sheet As variant '<-- a Variant variable can be assigned both a Worksheet and a Chart object
For Each sheet In ActiveWorkbook.Sheets '<-- loop through Worksheets and Charts collections
    Select Case sheet.Name
        Case "Archive": Sheets(sheet.Name).Delete
        Case "Trend":  Sheets(sheet.Name).Delete
        Case "PivotTable": Sheets(sheet.Name).Delete
    End Select
Next

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM