[[20110808122755]] 『画面が固まってセルがクリックできない』(みゆき) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『画面が固まってセルがクリックできない』(みゆき)
 こんにちわ。お世話になります。
 マクロ実行している途中、オートフィルタオプションで
 データを抽出するマクロのところで「デバック」がでて止まり、
 以降 画面が固まってセルがクリックできなくなります。
 (コンポボックス、マクロボタンは、押せるのですが。。。?)
 オートメーションエラーと表示されるときもあります。
 同じファイルを違うPCで試してみてもやはりオートフィルタオプションの
 マクロ命令のところで止まります。再度、マクロボタンを押したら今度は、
 違うマクロ命令のところで停止(デバック)します。
 この現象を解決する方法を教えて下さい。
 よろしくお願いします。

 回答者側で再現できるような情報が必要。
・簡単な説明でいいのでシートのレイアウト、もし特殊なもの(たとえば条件付書式)があれば、それも。
・実際のコード
・エラーでとまる場所
・エラー時のエラーメッセージ
・その他、シートの保護の有無 等

 ところで、言葉の使い方だけど、
・「デバック」がでて という表現は間違い。「エラー」がでて、「終了」するのか「デバッグ」を試みるのかのメッセージがでているんだよ。
・同様に 停止(デバック) も間違い。 停止 と デバッグ は、全く別の言葉。一度、「デバッグ」をネットで検索して調べてみよう。
・「オートフィルタオプション」
 エクセルのフィルター機能には「オートフィルター」と「フィルターオプション」の2つがあるけど別物。
 どっちなんだろうね。(コードアップしてもらえればわかることだけど)

 (ぶらっと)


 ぶらっとさん回答ありがとうございます。
    Sheets("データ履歴").Select
    If Cells(11, 11) <> "" Then
       Cells(10, 10).Select: Selection.End(xlDown).Select: ActRow = ActiveCell.Row
       履歴データ数 = ActRow

       Cells(22, 67).Select

       ↓ここのマクロでエラーがでます。
       Sheets("データ履歴").Range("J10:Q" & ActRow).AdvancedFilter Action:=xlFilterCopy, _
           CriteriaRange:=Range("BC22:BC" & 条件数), CopyToRange:=Range("BO22"), Unique:= _
            False
 エラー内容:
 実行時エラー'2147417848 (80010108);
 オートメーションエラーです。
 起動されたオブジェクトは、クライアントから切断されました。

 という内容です。
 その他:
 マクロボタンを押して1回目は、エラーがでません。
 2回目同じボタンを押して同じ処理をすると発生します。
 シート保護はしていません。
 よろしくお願いします。みゆき 

 コードアップありがとう。ところで、変数 条件数。これには何が入っているのかな?
変数 履歴データ数 とは、もちろん違うものだよね。
それと、BC22から始まる検索欄には何が入っているのかな?

 (ぶらっと)

 ぶらっとさん回答ありがとうございます。
 条件数は、条件が入力されている最終位置(項目を含めて条件範囲すべて)
 履歴データ数は、履歴データの最終位置(項目を含めて履歴データすべて)
 BC22から始まる検索欄は、項目と条件
 品名
 みかん
 ぶどう
 オートフィルタオプションの条件が入力されています。
       Cells(22, 67).Select
       Sheets("データ履歴").Range("J10:Q7627").AdvancedFilter Action:=xlFilterCopy, _
           CriteriaRange:=Range("BC22:BC24"), CopyToRange:=Range("BO22"), Unique:= _
            False
 マクロ記録するとこんな感じです。みゆき


 ありがとう
う〜ん・・・コードそのものには、無駄あるいは無意味なSelectがあったりしていたり、いったんBO22から始まる領域に抽出した後、
次の実行(おそらく絞込みタイトルや絞込みワードを別のものにしているんだろうと推測)の前に、抽出領域を
クリアしているのかどうか見えなかったりするんだけど、だからといってエラーになるわけじゃないので・・・
こちらで、簡単なデータでテストしてるけど、エラーにはならない。

 別の板だけど、同じような症状の報告があるので、何かしら原因はあるんだよねぇ・・・
http://www.excel.studio-kazu.jp/kw/20100611094103.html
(ところで、↑の質問者さんも、エラーでとまることを「デバッグになる」と表現してるね)
↑では、指定するデータ範囲が大きすぎるのだろうかといった推測で、解決には至っていない。
かつ、J10:Q8000 ぐらいのデータでテストしても、何度やってもエラーにはならない。

 不思議だねぇ。

 念のため、今度、エラーになって黄色くなってとまった時点で、条件数のところにマウスを当てて
ポップアップされる条件数の値を確認してもらえるかな?
それと、その時のシートのBC22からの数行が意図されたものかどうか、チェックしてみてくれる?

 ところで、「オートフィルタオプション」じゃなく「フィルターオプション」だよ。

 追記) 紹介したURL は「別の板」じゃなく、この板だった。

 (ぶらっと)


 思いつきなので、はずしている公算大だけど・・・
オートメーションエラーの原因は様々だけど、VBAがオブジェクトを取得しようとして、そのオブジェクト階層を
たどる際に、メモリーが充分ではない場合におこることがある。
MSのページでは、とにかくオブジェクト修飾を(省略せずに)行いましょうと説明されている。
アップされた例では、フィルターの元ねた領域にはシート修飾があるけど、検索欄や抽出先には、それがない。

    With Sheets("データ履歴")
        If Len(.Range("K11").Value) > 0 Then
            ActRow = .Range("J10").End(xlDown).Row
            .Range("J10:Q" & ActRow).AdvancedFilter Action:=xlFilterCopy, _
                CriteriaRange:=.Range("BC22:BC" & 条件数), CopyToRange:=.Range("BO22"), _
                Unique:=False
        End If
    End With

 フィルタ部分を、このように変更して試してみてくれる?

 (ぶらっと)

 ぶらっとさん回答ありがとうございます。
 >条件数のところにマウスを当てて
 >ポップアップされる条件数の値を確認してもらえるかな
 条件範囲の最終位置(BC24)が入っています。
 >抽出領域をクリアしているのかどうか
 クリアしてから「フィルターオプション」しています。
 >「オートフィルタオプション」じゃなく
 申し訳ありません。
 同じ症状のエラー参考になりました。
 よく調べてみます。ありがとうございました。みゆき

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.