2012-01-11 12 views
1

Worksheet_Changeイベントを実行して、その理由を確認できません。セルB5は、ピボットテーブルの一部と、その値の変更は、呼び出し、異なるサブを実行する必要がある場合(およびそのサブが働いている)Excel Worksheet_Change not working

Private Sub Worksheet_Change(ByVal Target As Range) 
'MsgBox ("run private") 
Dim WatchRange As Range 
Dim IntersectRange As Range 
Set WatchRange = Range("b25") 
Set IntersectRange = Intersect(Target, WatchRange) 
If IntersectRange Is Nothing Then 
    'MsgBox ("do nothing") 
Else 
    'MsgBox ("run macro") 
    Call ChangeTitle 
End If 
End Sub 

Sub ChangeTitle() 
' 
' 
Dim Mytitle As Range 
Set Mytitle = Worksheets.Item("Current").Range("b25") 

ActiveSheet.PivotTables("PVTRatingTech").PivotFields("title").CurrentPage = _ 
    Mytitle.Text 


End Sub 
+1

それはにあなたの変更イベントにコードを減らすことができるが、あなたのコードは' B25'はコード化されたのか?これは簡単なタイプミスですか? –

答えて

0

[OK]を、私は、コードをテストされており、このコードは動作します。

ワークブックコード領域

'~~> Replace Sheet1 with the actual sheet name 
Private Sub Workbook_Open() 
    Oldval = Sheets("Sheet1").Range("B5").Value 
End Sub 

でこれを貼り付けワークシートコード領域に

Private Sub Worksheet_Calculate() 
    NewVal = Sheets("Sheet1").Range("B5").Value 
    If Oldval <> NewVal Then 
     Oldval = NewVal 
     ChangeTitle 
    End If 
End Sub 

Sub ChangeTitle() 
    Dim Mytitle As Range 

    Set Mytitle = Worksheets.Item("Current").Range("b25") 

    ActiveSheet.PivotTables("PVTRatingTech").PivotFields("title").CurrentPage = _ 
    Mytitle.Text 
End Sub 
これを貼り付ける

Public Oldval As Variant 
Public NewVal As Variant 

モジュールでこれを貼り付け

ブックを保存して閉じ、もう一度開きます。今度は、B5が変更された場合にピボットを更新すると、「ChangeTitle」が実行されます。

希望はこれでいいですか?

0

Remnantが既に指摘しているように、あなたはタイプミスがあります。あなたがB5かB25を意味するかどうかは分かりません。

コードに問題はありません。 B25がターゲットにある場合、ChangeTitleマクロが実行されます。マクロが実行されていない場合は、単にB25がターゲットにはありません。

サイドノートで

あなたはコード `B5`の変更を実行しようとしているので、あなたは

Private Sub Worksheet_Change(ByVal Target As Range) 

    If Not Intersect(Target, Range("b25")) Is Nothing Then Call ChangeTitle 

End Sub