2016-06-15 3 views
1

해당 셀이 변경 될 때 셀 값을 업데이트해야하는이 하위가 있지만 오류 13 형식 불일치라는 오류가 계속 발생하여 모든 가능한 원본을 찾았습니다. 내가 범위를 변화에 대한 검사를 취소 할 때엑셀 형식 불일치 오류가 개인 하위

Private Sub Worksheet_Change(ByVal Target As range) 
'Adds unique keyA values 
'Check to see if the changed cell is in column H 
    If Not Intersect(Target, range("H:H")) Is Nothing Then 

     If Target.Cells.Value <> "" And Target.Row > 7 And Target.Row <= 20 Then 

'Update the "KeyA" value 
      range("A" & Target.Row).Value = Now() 

     End If 

    End If 
'Adds unique keyB values 
'Check to see if the changed cell is in column J 
    If Not Intersect(Target, range("J:J")) Is Nothing Then 

     If Target.Cells.Value <> "" And (Target.Row > "7" And Target.Row <= "27") Then 

'Update the "KeyB" value 
      range("M" & Target.Row).Value = Now() 

     End If 

    End If 

End Sub 

오류가 발생하여 원인을이 문제와 캔트 그림 점, 여기에 문제를 제시하고 내 코드입니다. 이걸 알아내는 데 도움이된다면 고맙겠습니다. 감사합니다!

+0

무엇을 원하십니까? 시트에서 H 또는 J 열의 내용을 삭제하면 오류가 발생합니까? – Raystafarian

+0

정확하게 그것을 삭제하는 코드에서와 마찬가지로 각 개별 셀의 이름을 지정하고 그 값을 "="로 설정하십시오. – Vbasic4now

+1

If Is IsEmpty (Target)가 아닌 경우는 – Raystafarian

답변

2

Target이 범위이고 반드시 한 개의 셀로 구성되는 것은 아닙니다. 당신이 당신의 코드를 조정하면 약간은 그것을 작동합니다 :

Option Explicit 

Private Sub Worksheet_Change(ByVal Target As Range) 

Dim cell As Range 

'Adds unique keyA values 
'Check to see if the changed cell is in column H 
If Not Intersect(Target, Range("H:H")) Is Nothing Then 
    For Each cell In Target.Cells 
     If cell.Value <> vbNullString And Target.Row > 7 And Target.Row <= 20 Then 
      'Update the "KeyA" value 
      Range("A" & Target.Row).Value = Now() 
     End If 
    Next cell 
End If 

'Adds unique keyB values 
'Check to see if the changed cell is in column J 
If Not Intersect(Target, Range("J:J")) Is Nothing Then 
    For Each cell In Target.Cells 
     If cell.Value <> vbNullString And (Target.Row > "7" And Target.Row <= "27") Then 
      'Update the "KeyB" value 
      Range("M" & Target.Row).Value = Now() 
     End If 
    Next cell 
End If 

End Sub 

기본적으로 변화가이 범위 Target 지금 셀을 확인하고 해당 범위의 각 셀에 대한 코드를 작동합니다. 전에는 복수 Target.Values""과 비교했습니다. 그것은 작동하지 않았다. 이제 .Value 중 하나만 ""과 비교하여 해결해야합니다.

+0

의 첫 번째 줄에서 옵션 명시가 무엇입니까? 암호? – Vbasic4now

+0

어느 쪽이든 작동했습니다! 고맙습니다! – Vbasic4now

+1

키워드를 이해할 수 없을 때마다 강조 표시 (선택) 한 다음 'F1'을 누르십시오. 이것은 다음 웹 사이트로 안내합니다 : https://msdn.microsoft.com/en-us/library/office/gg278855.aspx 기본적으로 코드의 모든 변수는 (Dim을 사용하여) 선언되어야합니다 그들은 사용할 수 있습니다. 그것은 좋은 코딩 연습을 위해서만 사용되며 위의 코드는 해당 줄없이 작동합니다. 나는 그것을 모든 모듈에 포함시킨다. 원하는 경우 제거 할 수 있습니다. – Ralph