2016-10-26 7 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 

私は次のエラーが表示されます:「アプリケーション定義またはオブジェクト定義のエラー」

この

はコードです。このエラーは、オブジェクト "シート"にメソッド "名前"がないため、選択ケースに到着します。

私はエラーを持っている二cicleから、任意の問題を持っていないスクリプトの最初のcicleでのワークシート

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 

として「シート」を宣言するためにしようと試みています:「型が一致しません」

どうすれば解決できますか?

おかげ

+0

「ActiveWorkbook.WorkSheets」と「ワークシート(sheet.name)」は機能しますか? –

+0

デバッグモードでコードを実行しましたが、 'For each ...'のようにブレークポイントを設定して 'sheet'の値を調べましたか?あなたは現在どのバージョンのOfficeを使用していますか? – FDavidov

答えて

1

:これは必ずしも答えではないが、コメントとして書き留めには長すぎます。

コーディングをもっとクリーンかつシンプルに保つことができます。Sheetには非常に類似しているので、sheetを使用しないことをお勧めします。 また、ActiveWorkbookを使わない方が良いでしょう。あなただけにしてWorksheetsを削除したい場合は

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オブジェクト

を含めることができます。

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 
関連する問題