VBA|ShowAllData のエラー原因と対処方法【徹底ガイド】

エクセルVBA VBAのエラー対応方法



ShowAllDataメソッドを使っていますか?

ShowAllDataメソッドは、フィルターモードを解除し隠れているすべてのセルを表示するメソッドです。

今回は、ShowAllData メソッドでエラーが出たときの対処方法について徹底的に説明します。



ShowAllData のエラー原因と対処方法

ShowAllDataメソッドで考えられるエラー原因

ShowAllDattaメソッドは、フィルターモードで表が折り畳まれているときに、フィルターモードを解除してすべてのセルを表示するメソッドです。

フィルターモード

ShowAllDataメソッドで考えられるエラー表示は以下のものです。

  • 実行時エラー’1004’
  • 実行時エラー’9’

それぞれについて説明していきます。

エラー対処サンプルコードは後半に紹介します。

実行時エラー’1004’ ShowAllDataメソッドが失敗しました。

実行時エラー’1004’の原因は、以下のことが挙げられます。

  1. フィルターモードが解除されている
  2. そもそもフィルターが設置されていない

フィルターモードが解除されている

ShowAllDattaメソッドは、フィルターモードで表が折り畳まれているときに、フィルターモードを解除してすべてのセルを表示するメソッドです。

したがって、フィルターモードが解除されているときにShowAllDataを実行するとエラー’1004’になってしまいます。

対処方法は、

  • フィルターモードが実行されている状態でShowAllDataを使用する
  • Ifステートメントでフィルターモードの実行の有無を判断してからShowAllDataを実行する

ということが挙げられます。

Ifステートメント を使ってフィルターモードの有無を判断するサンプルコードは、後半に紹介しています。

そもそもフィルターが設置されていない

フィルターが設定されている状態」とは、以下のように逆三角形のもの(フィルター)が表示されている状態のことを指します。

フィルターが設置されている状態

これが表示されない状態は当然「フィルターが設置されていない状態」です。

フィルターが設置されていない状態

フィルターが設置されていない状態のときにShowAllDataを実行すると、エラー’1004’になってしまいます。

対処方法は、フィルターが設置されている状態にするということが挙げられます。

実行時エラー’9’ インデックスが有効範囲にありません。

実行時エラー’9’の原因は、ShowAllDataを使う対象の物がないことです。

対象の物が無いとは、指定したワークシートが存在しないことが挙げられます。

対処方法は、ShowAllDataを使う対象の物(ワークシート)が存在するかを確認することが挙げられます。

ShowAllDataメソッドのエラー対処サンプルコード

ShowAllDataのエラー対処サンプルコードを紹介します。

Sub フィルターモード解除()
    If ActiveSheet.FilterMode Then
        ActiveSheet.ShowAllData
    End If
End Sub

ShowAllDataメソッドは、

WorkSheetオブジェクト.ShowAllData

と記述して使用します。

まず、2行目の「If ActiveSheet.FilterMode Then」で、フィルターモードが解除されていないかを確認します。

もし、フィルターモードが実行されていれば、「ActiveSheet.ShowAllData」を実行し、フィルターモードを解除します。

【まとめ】ShowAllData のエラー原因と対処方法方法

今回は、ShowAllData のエラー原因と対処方法について解説しました!

ShowAllDataのエラー原因は、

  • フィルターモードが解除されている
  • そもそもフィルターが設置されていない
  • 対象のシートが無い

ということが挙げられます。

対処するには、If ActiveSheet.FilterMode Thenのように、Ifステートメントでフィルターモードの有無を判断する方法がおすすめです。

ShowAllDataの対処方法は簡単なので、ぜひ試してみてくださいね!

コメント

タイトルとURLをコピーしました