こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

セル変更2回目以降マクロが走らない

office2010

セル値変更でマクロ実行の件で質問です。
macroというシートのA11セルがプルダウンリストになっていて、その値を変更したらマクロ実行という構成を作成しました。
下記はmacroというシートに記載したマクロ
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address <> "$A$11" Then Exit Sub
Calculate
Macro4

End Sub

下記は標準モジュールに記載したマクロ
Sub Macro4()
'
'macroシートB11に表示されるNo.で抽出

Application.EnableEvents = False
Application.Calculation = xlCalculationManual
Application.ScreenUpdating = False

Sheets("Sheet1").Visible = True
Sheets("Sheet2").Visible = True
Sheets("Sheet3").Visible = True
Sheets("Sheet4").Visible = True
Sheets("work").Visible = True

Sheets("Sheet3").Select
Cells.Select
Selection.ClearContents
Selection.ClearContents

Sheets("Sheet2").Select
Cells.Select
Selection.ClearContents
Selection.ClearContents

Sheets("Sheet1").Select

Cells.Select
Selection.AutoFilter
Selection.AutoFilter
ActiveSheet.Range("$A:$BA").AutoFilter Field:=3, Criteria1:=Sheets("macro").Range("B11")

Sheets("kisyu_work").Select
Cells.Select
Selection.ClearContents

Sheets("Sheet1").Select
Columns("F:F").Select
Selection.SpecialCells(xlCellTypeVisible).Select
Application.CutCopyMode = False
Selection.Copy
ActiveWindow.ScrollWorkbookTabs Position:=xlLast
Sheets("kisyu_work").Select
Range("A1").Select
ActiveSheet.Paste
Application.CutCopyMode = False

Sheets.Add
ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
"kisyu_work!R1C1:R1048576C1", Version:=xlPivotTableVersion14). _
CreatePivotTable TableDestination:="", TableName:= _
"ActiveSheet.Name", DefaultVersion:=xlPivotTableVersion14
Cells(1, 1).Select
With ActiveSheet.PivotTables("ActiveSheet.Name").PivotFields("V_KISYU_CD")
.Orientation = xlRowField
.Position = 1
End With

Range("A3:A" & Range("A" & Rows.Count).End(xlUp).Row - 2).Select
'
Selection.Copy
ActiveWindow.ScrollWorkbookTabs Position:=xlLast
Sheets("kisyu_work").Select
Range("B1").Select
ActiveSheet.Paste
'
Range("C1:C" & Range("B" & Rows.Count).End(xlUp).Row).Value = "=INDEX(M_KISYU!C[5],MATCH(RC[-1],M_KISYU!C,0))"

Sheets("macro").Select

End Sub

A11セルの値を変更するとMacro4は実行されます。
しかしながら、2回以上続けてA11の値を変更するとMacro4が動作しません。
なぜなのでしょうか?
なお、プルダウンリストの構成をやめると、連続してA11セル値変更しても動作します。

投稿日時 - 2017-01-05 19:08:19

QNo.9277330

暇なときに回答ください

質問者が選んだベストアンサー

イベントが発生しないようにしたままになっているから

Application.EnableEvents = False
にした後、
Application.EnableEvents = True
をしていない。

投稿日時 - 2017-01-05 20:14:30

お礼

回答ありがとうございます

Application.EnableEvents = True
を追加で正しく動作する様になりました。
助かりました。

投稿日時 - 2017-01-06 14:49:56

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.2

Cnangeイベントを使うときは、セルの値が変わったあと1回は何か決まったことを実行いてほしいが、変わった後の結果でChangeイベントが起こってグルグル回りになっては普通は困る。
この手を打たないといけないのだが、そのルーチン実行後に
Application.EnableEvents = False
を次の初回の備えをするため
Application.EnableEvents =True
を入れて、ルーチンを出ないといけない。
この初歩的な点を忘れている尾が原因だろう。
イベント利用は注意しないと、生兵法怪我の元となる。

投稿日時 - 2017-01-05 20:30:41

お礼

回答ありがとうございます

投稿日時 - 2017-01-06 14:48:36

あなたにオススメの質問