[[20081030103110]] 『Worksheet_Changeが反応しなくなる』(タムタム) ページの最後に飛ぶ

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

 

『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.