2012-01-11 2 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

좋아, 내가 코드를 테스트하고이 코드가 작동합니다.

Public Oldval As Variant 
Public NewVal As Variant 

이 코드 지역

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 
통합 문서에 코드 지역

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

을이 붙여 넣기와 워크 시트에이 붙여 모듈이 붙여 넣기

통합 문서를 저장하고 닫은 다음 다시 엽니 다. 이제 B5가 변경되면 Pivot을 새로 고침하면 "ChangeTitle"이 실행됩니다.

희망이 무엇입니까?

0

렘넌트가 이미 지적했듯이 오타가 있습니다. 당신이 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