2012-01-02 2 views
1

작업 할 워크 시트에 다음 코드를 가져 오려고합니다. 지금은 아무것도하지 않습니다.워크 시트 변경 방법의 문제점. 변경할 수 없습니다

Private Sub Worksheet_Change(ByVal Target As Range) 
If Target.Address(False, False) = "j4" Then 
    Application.EnableEvents = False 
    If Target.Value = 0 Then 
     Range("j5").Value = 1 
    Else 
     Range("j5").Value = 2 
    End If 
    Application.EnableEvents = True 
End If 
End Sub 

코드가 워크 시트에 배치되고 매크로 보안이 "모든 매크로 사용"으로 설정되어 있습니다.

내가

엑셀 2010의 64 비트 버전을 사용하고 당신이 제공 할 수있는 모든 도움을 주셔서 감사합니다. James

+0

J4가 변경되면 J5 값을 설정하려고합니까? –

+0

네, 그게 완벽 할 것입니다! – James

+0

왜 VBA를 사용 하시겠습니까? 셀 J5에 수식을 작성하는 것이 약 20 배 더 쉽습니다. –

답변

2

문제는 첫 번째 If 문입니다. 다음 코드는 당신을 위해 작동합니다 :

Private Sub Worksheet_Change(ByVal Target As Range) 
    If Not Intersect(Target, Range("J4")) Is Nothing Then 
     Application.EnableEvents = False 
     If (Target = 0) Then 
      Range("J5") = 1 
     Else 
      Range("J5") = 2 
     End If 
     Application.EnableEvents = True 
    End If 
End Sub 
+0

감사합니다, briliantly 일했습니다. 선택을 위해 이것을 확장하는 것을 어떻게 권하고 싶습니까? – James

+0

아. 컨트롤 셀 (예 : J4)이 선택 풀다운 인 경우에는 작동하지 않습니다. 어떤 제안? – James

+1

@James. 가장 간단한 비 VBA 솔루션은 셀 J5 수식을'= IF (J4 = 0, 1, 2)'로 사용하는 것입니다. 나는 단지 Excel 2003을 가지고 있으므로 'select pull-down'이 무엇인지 확실하지 않습니까? 'Data> Validation'을 사용하고'List'를 선택하고 그에 따라'Source'를 설정하여 드롭 다운 메뉴를 채우면 내 바탕 화면에서 작동합니다. –

관련 문제