2016-06-28 1 views
0

열에 오류가 있는지 확인하는 연속 매크로를 만들려고합니다.있는 경우 인접 셀의 내용을 지 웁니다. 오류가있는 열에는 인접 셀에있는 값에 따라 데이터를 채울 수식이 있습니다. 그래서 잘못된 값을 입력하면 인접한 셀의 값을 지우는 프로그램을 원합니다. 이것은 지금까지 가지고있는 것이지만 인접한 셀을 관련 오류로 지정하는 방법을 확신 할 수 없습니다. 저는 다양한 행 값을 나타 내기 위해 X를 넣었습니다.인접한 셀을 지우는 연속 매크로 Excel VBA

Private Sub Worksheet_Change(ByVal Target As Range) 
    Dim ws As Worksheet 
    Set ws = Worksheet(1) 
     If Target.Column = 2 Then 
      If IsError(Target.Value) Then 
       *- Range("AX").ClearContents -* 
      End If 
     End If 
End Sub 
+0

'Target.Offset (0,1)'은 당신을 오른쪽의 한 셀로 가져옵니다. –

답변

0

는이 코드에 대한 문제는 Worksheet_Change 이벤트를 사용하여 대상의 화학식 셀을 식별한다는 것이다. 결코 수식 결과의 변경 사항이 Worksheet_Change 이벤트에 의해 트리거되지 않으므로 작동합니다. (당신은 Worksheet_Calculate 이벤트로 이것을 처리 할 수 ​​있습니다 - 그러나 그것은 당신이 여기서 필요한 것이 아닙니다.) 실제로 변경 될 셀을 평가해야합니다.

올바른 입력이 제공되도록하려면 입력 셀에 Data Validation을 설정하는 것이 좋습니다. 이 방법으로 VBA는 필요하지 않습니다. 그러나 이것이 작동하지 않으면 아래 코드가 작동합니다.

Private Sub Worksheet_Change(ByVal Target As Range) 
'worksheet_change will always work on the current worksheet, only identify _ 
another worksheet if you want to act on a range in a different sheet 

'-> 3 assumes the input column is C (based on your description) 
If Target.Column = 3 And IsError(Target.Offset(,-1)) And Target.Rows.Count = 1 and Target.Columns = 1 Then 

    Application.EnableEvents = False 
    Target.Offset(,-1).ClearContents 
    'Msgbox "Enter a valid value." ' possible warning message 
    Application.EnableEvents = True 

End If 

End Sub 
+0

감사합니다. 부가 메모, 수식 결과의 변경 사항을 확인하는 방법이 있습니까? –

+0

내가 필요한 것은 입력의 내용을 지우는 것이지만, 그렇게하면 변경 이벤트가 계속해서 트리거되고 무한 루프가 발생합니다. –

+0

내 편집보기 @KevinLe - 잊어 버렸습니다 ** 매우 중요한 ** 단계는 원래의 대답입니다. 나는 또한 한 번에 하나의 셀 변경에 대해서만 작동하도록 만들었습니다. 범위에 대해 테스트해야하는 경우 수정할 수 있습니다. –