내 코드의 목표는 셀의 이전 값을 가져 와서 새 값 (입력 된 경우)과 비교하는 것입니다. 이전 값이 새 값으로 변경되면 지정된 셀에서 날짜를 업데이트하십시오.형식 불일치 오류 VBA Excel
내 코드의 문제점은 코드 분할없이이 오류를 해결할 수있는 방법을 찾을 수 없다는 것입니다. 따라서이 한 줄의 코드를 수정하는 데 문제가 있습니다. 두 개의 워크 시트에이 코드가 있습니다. 둘 다 다른 셀에 대해 값이 변경되었습니다. 문제는이 코드가 하나의 워크 시트에 대해서만 작동하지만 동일한 코드로 두 개를 사용할 때 형식 불일치 오류가 발생한다는 것입니다.
여기 내 코드입니다 :
Dim oldValue As Variant
Public Sub Worksheet_SelectionChange(ByVal Target As Range)
'My other worksheet is referencing cells E2:E100
oldValue = Me.Range("D4:D21").Value
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Me.Range("D4:D21")) Is Nothing Then
Dim c As Range
For Each c In Intersect(Target, Me.Range("D4:D21"))
'Check value against what is stored in "oldValue"
'Type mismatch is on this line here
If oldValue(c.Row - 3, 1) <> c.Value Then
'Update value in column L (8 columns to the right of column D)
c.Offset(0, 7).Value = Date 'or possibly "= Now()" if you need the time of day that the cell was updated
End If
Next
End If
End Sub
내가 불일치 오류가 무엇을 의미하는지 유형 확실하지 않다, 그래서 나는 나 자신이 문제를 해결 드릴 수 없습니다. 내 질문은, 어떻게 제대로이 불일치 오류 던지기없이 내 셀을 업데이트 할 수 있습니다?
편집 : 한 워크 시트는 숫자 데이터 변경을 찾고 다른 워크 시트는 문자열 값 변경을 찾고 있으므로이 문제가 중요한지 확실하지 않습니다. 하나의 워크 시트에 대한 모든 코드를 꺼내면 코드가 다른 코드에서도 작동하지만 다시 넣을 때 둘 다 작동하지 않습니다.
감사합니다. 그것은 때때로 전에 화재로 Workbook_Open 이벤트는 때때로 "문제"있는 모든 Worksheets
가 완전히로드 -
Private Sub Workbook_Open()
Application.ScreenUpdating = False
Dim ws As Worksheet
Dim ws1 As Worksheet
Set ws1 = ActiveSheet
For Each ws In Worksheets
ws.Activate
ws.Range("A1").Select
Next
ws1.Activate
Application.ScreenUpdating = True
End Sub
한 경고 (ThisWorkbook
의 코드에 배치) :
나는 그 코드를 인식합니다! – YowE3K
하하 예, 다시 한번 돌아 왔습니다 : p – juiceb0xk
'Change' 이벤트가'SelectionChange' 이벤트가 발생하지 않고 해고되었다고 생각합니다. 통합 문서를 열 때 선택한 셀이 업데이트 된 셀 일 수 있습니까? 통합 문서가 처음 열릴 때'SelectionChange' 이벤트를 강제로 실행하거나 D4 : D21의 아무 곳에서나 통합 문서가 저장되지 않도록 할 수 있습니다. – YowE3K