[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『Worksheet_Changeが反応しなくなる』(タムタム)
G2〜M2セルより下には会社のシステムからデーターを クエリーで落としています。約20000行あります。 A3セルに品番を入力したら、フィルタオプションでB列〜E列 の2行目以下に抽出しているのですが、A3セルに品番を何回か 入力していると下記のWorksheet_Changeが反応しなくなります。 一度、エクセル自体を終了して再度ブックを開いて作業をすると 何回かは 実行できます。また同じ状態になります。 どうすれば、良いでしょうか・・・ 標準モジュールにあるマクロは呼び出して実行はできます。 何がわるいのでしょうか・・・ どうすればよいか教えてください。
OSはW2000、メモリーは785,136KB エクセル2000
下記マクロを使用しています。
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address(0, 0) <> "A3" Then Exit Sub Application.EnableEvents = False If Not IsEmpty(Target) Then Range("B3:E5000").ClearContents Range("G2").CurrentRegion.AdvancedFilter Action:=xlFilterCopy, _ CriteriaRange:=Range("A2:A3"), CopyToRange:=Range("B2:E2"), Unique:=False Range("B2:E" & Range("E65000").End(xlUp).Row).Sort Key1:=Range("C3"), Order1:=xlDescending, Header:=xlGuess Columns("B:E").AutoFit End If If Range("A3").Value = Range("A500").End(xlUp).Value Then Exit Sub Range("A500").End(xlUp).Offset(1, 0).Value = Range("A3").Value Application.EnableEvents = True End Sub
内容はよく見ていませんが、下から4行目のIf文で、 Application.EnableEvents を True に戻さないまま Exit Sub しているのが原因ではないですか? (純丸)(o^-')b
早速の教え有難うございます。 これで作業がやりやすくなります。 おしえてください! Application.EnableEvents は画面更新をするしないの設定 だと思っていたのですが、除けると順調に動いています。 記入場所が悪いのか、むやみやたらに使用するといけないのか?
(タムタム)
記入場所が悪いです。 純丸さんご指摘の箇所の上に移動したらどうでしょうか。
画面更新は、Application.ScreenUpdating です。 意味はHelpを活用して確認しましょう。 (ROUGE)
If Range("A3").Value <> Range("A500").End(xlUp).Value Then Range("A500").End(xlUp).Offset(1, 0).Value = Range("A3").Value End If Application.EnableEvents = True End Sub
↑ こうしたら? (純丸)(o^-')b
Application.EnableEvents が悪かったです。(ぜんぜん思ってたのと違うことでした)。 つぎはぎマクロなのですみません。 皆さんの指摘のとおりにしたらできました。 有難うございました。 (タムタム)
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.