programing

Excel 워크시트_변경 이벤트가 작동하지 않습니다.

closeapi 2023. 8. 9. 20:46
반응형

Excel 워크시트_변경 이벤트가 작동하지 않습니다.

열을 변경하면 워크시트가 자동으로 저장되는 매크로를 작성하려고 합니다.

Excel 시트가 다음 시간까지 확장됩니다.G25.

이것을 시도해 보았지만 작동하지 않습니다.

Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Target.Worksheet.Range("G25")) Is Nothing Then
        ActiveWorkbook.Save
End Sub

나는 그것을 아래에 저장했습니다.ThisWorkBook.

어떤 도움이든 감사합니다.

워크북에서 해당 처리기를 호출합니다.Workbook_SheetChange그리고 그것은 두 개의 인수, Sh(유형)를 받아들입니다.Object) 및 대상(a)Range. 그래서, 당신의 코드는 작동하지 않습니다.
워크북 대신 원하는 시트(: 시트 1)에 코드를 넣는다면,End If범위를 "A1:G25"(1열 A에서 25열 25열까지 정사각형을 나타냄)로 변경하면 작동합니다.이 작업은 다음과 같습니다.

Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Target.Worksheet.Range("A1:G25")) Is Nothing Then
        MsgBox "changed"
    End If
End Sub

전체성을 위해 이 워크북에서 다음과 같이 작동합니다.

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
    If Not Intersect(Target, Target.Worksheet.Range("A1:G25")) Is Nothing Then
        MsgBox "changed"
    End If
End Sub

이벤트가 작동하지 않는 다른 일반적인 이유는 EnableEvents가 False로 설정되었기 때문입니다.

나는 당신의 문제를 이렇게 코드화할 것입니다.

  • 일반적으로 테스트할 관심 범위에 대해 작업해야 합니다.변수 생성rng1아래는 조기 종료 지점 및 작업할 범위 개체 역할을 모두 수행합니다.시트 이벤트에서Target.Worksheet.Range("A1:G25")효과는 있겠지만 실제 사용하기에는 길어요.
  • 조작할 범위가 있는 경우 시트를 추가로 변경하면 변경 이벤트 등이 호출되어 Excel이 충돌할 수 있습니다.따라서 추가 이벤트를 비활성화하고 코드를 실행한 다음 종료 시 이벤트를 다시 활성화하는 것이 가장 좋습니다.

    Private Sub Worksheet_Change(ByVal Target As Range)
    Dim rng1 As Range
    Set rng1 = Intersect(Target, Range("A1:G25"))
    If rng1 Is Nothing Then Exit Sub
    Application.EnableEvents = False
    'work with rng1
    Application.EnableEvents = True
    End Sub
    

언급URL : https://stackoverflow.com/questions/8071931/excel-worksheet-change-event-not-working

반응형