[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『画面が固まってセルがクリックできない』(みゆき)
こんにちわ。お世話になります。 マクロ実行している途中、オートフィルタオプションで データを抽出するマクロのところで「デバック」がでて止まり、 以降 画面が固まってセルがクリックできなくなります。 (コンポボックス、マクロボタンは、押せるのですが。。。?) オートメーションエラーと表示されるときもあります。 同じファイルを違う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.