2016-10-26 80 views
0

我有一個腳本,它從CSV文件獲取數據並在生成圖形後。許多Office更新後,此腳本已完成工作。這是不可能回來的Office版本。Office更新後VBA Excel工作表方法不起作用

這是代碼:

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 

我收到以下錯誤:「應用程序中定義或對象定義的錯誤」。這個錯誤到達Select Case,因爲我的對象「sheet」沒有方法「Name」。

我已經tryed申報「片材」作爲工作表

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 

在腳本的第一cicle我沒有任何問題,從第二cicle我有錯誤:「類型不匹配」

我該如何解決它?

感謝

+0

「ActiveWorkbook.WorkSheets」和「工作表(sheet.name)」是否有效? –

+0

你是否試過在調試模式下運行代碼,在''For each ...'之後設置一個斷點並檢查'sheet'的值?您現在正在使用哪個版本的Office? – FDavidov

回答

1

注意:這不一定是答案,但它是太長寫下注釋。

你可以保持你的編碼更清潔和簡單:我不喜歡使用sheet,因爲它非常類似於Sheet。 另外,如果您避免使用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 
1

Sheets可以包含ChartWorksheets對象

然後

,如果你想刪除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 

,如果你想刪除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