dポイントプレゼントキャンペーン実施中!

オートフィルタをかけると出る、セル右下位置の「下向き三角」について質問です。

特定のファイルのみ、オートフィルタを解除(データ-フィルタ-オートフィルタでチェックをはずす)しても下向き三角が消えません。

チェックをはずした後は、下向き三角をクリックしても無反応です。

再度オートフィルタをかけると、普通に反応して使えるようになります。

オートフィルタを解除したら消えるように、要するにまっとうな表示にさせるにはどうしたらいいでしょうか?

A 回答 (2件)

 確信があるわけではありませんが、特定のファイルだけそのようになるのは、そのファイルが壊れている可能性もありそうです。



 全データをコピーして、新しいファイルに移し替えてみてはどうでしょうか。
    • good
    • 0
この回答へのお礼

ありがとうございます。
やってみます。

お礼日時:2009/04/20 13:12

そのシートにシェイプを追加して名前を確認してみてください。


例えば四角形を追加した場合、『四角形 XXXXX』となり、XXXXXの部分はシートごとのシェイプの作成連番になります。
その連番が65536以上の場合、シェイプ連番が大きくなりすぎた事による不具合の可能性があります。

オートフィルタの▼(ドロップダウン)もシェイプの一種で、『Excel2002以前』では
オートフィルタのOn/Offの繰り返しの度に、ドロップダウンの作成削除を繰り返す事になります。
そのため広範囲のオートフィルタOn/Off繰り返しは、シェイプの連番加算が早くなります。

困った事に、オートフィルタOffの時、ドロップダウンの連番から65536を引いた番号を持つシェイプが
運悪くシート上に存在した場合、ドロップダウンが削除される替わりにそのシェイプが削除されます。
残ったドロップダウンは、オートフィルタ機能が無く、手動で選択削除ができません。

尤も、2002以前のオートフィルタの仕様なので、そのBookを前バージョンで操作した事がなければ該当しないかもしれません。

対処方法として、
新規シートを追加して、旧シート全体をコピーし、新シートに貼り付けすれば、ドロップダウン以外をコピーできます。
他シートから旧シートを参照している関数などがあった場合は、[置換]などで修正する必要があります。

参考までに、状況を再現するマクロを載せておきます。(ちょっと時間がかかります)

Sub test2000() 'xl2000用
  Dim i As Long
  Dim s As Shape

  Application.ScreenUpdating = False
  With Sheets.Add
    .Buttons.Add 100, 30, 80, 20
    .Buttons.Add 100, 60, 80, 20
    With .Range("A1").Resize(, 254)
      .Value = 1
      For i = 1 To 258 'fix((65536-3)/254)
        .AutoFilter
        .AutoFilter
      Next i
    End With
    .Range("G1:IT1").ClearContents
    .Range("A1").AutoFilter
    .Buttons.Add 200, 30, 80, 20
    i = 1
    For Each s In .Shapes
      i = i + 1
      .Cells(i, 1).Value = s.Name
    Next
  End With
  Application.ScreenUpdating = True
End Sub

マクロを実行するとシートが追加され、いくつかのボタンとオートフィルタが設定されます。
その後、手動でオートフィルタを解除すると再現できます。

一応、2003でも似たような現象を起こせない事もないです。(こちらはもっと時間がかかります)
Sub test2003() 'xl2003用
  Dim s As Shape
  Dim i As Long

  Application.ScreenUpdating = False
  With Sheets.Add
    .Buttons.Add 100, 30, 80, 20
    .Buttons.Add 100, 60, 80, 20
    With .Lines.Add(10, 10, 20, 10)
      For i = 1 To 65531
        .Duplicate.Delete
      Next i
      .Delete
    End With
    With .Range("A1:F1")
      .Value = 1
      .AutoFilter
    End With
    .Buttons.Add 200, 30, 80, 20
    i = 1
    For Each s In .Shapes
      i = i + 1
      .Cells(i, 1).Value = s.Name
    Next s
  End With
  Application.ScreenUpdating = True
End Sub
2003からはオートフィルタのOn/Offはドロップダウンの表示/非表示に変わりましたので
シェイプ連番の加算度合はちょっと遅くなり、今回のような不具合が起きる確率は低いです。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
こんな不具合もあったのですね。勉強になります。

該当ファイルで確認しましたところ、連番の番号は722でした。
今回の場合は、別の要因ということでしょうか?

お礼日時:2009/04/20 12:00

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!