사실 이후에 행 삽입을 설명하는 VBA 코드입니다.

사실 이후에 행 삽입을 설명하는 VBA 코드입니다.

다음 코드를 사용하여 Excel 문서의 특정 행을 표시하거나 숨기는 확인란을 만들 수 있었습니다.

If CheckBox1.Value = True Then Rows("26:28").EntireRow.Hidden = False
If CheckBox1.Value = False Then Rows("26:28").EntireRow.Hidden = True

그러나 이 범위 위에 행을 삽입할 때 범위를 업데이트할 수 있어야 합니다.

범위가 시작되는 셀을 찾고 범위에 2를 추가하려고 했지만 어떻게 해야 할지 잘 모르겠습니다.

건배

로버트

답변1

행 추가/삭제를 추적하고 관리하는 것은 매우 어려울 수 있습니다(항상 캡처해야 하며, 새 행 번호에 대한 코드 자체를 수정하거나 시트의 어딘가에 저장해야 합니다...). 몇 가지 해결 방법.

  1. 명명된 범위 사용: 명명된 범위는 셀과 함께 이동되므로 이를 참조하면 항상 동일한 셀을 참조하게 됩니다.

    • 아래 예제에서 A6:A7은 명명된 범위이며 샘플 코드는 이를 표시하거나 숨깁니다.

여기에 이미지 설명을 입력하세요

  1. 또 다른 옵션은 스프레드시트에서 특정 정보를 찾아 이를 기반으로 작업을 수행하는 것일 수 있지만 이 역시 꽤 복잡합니다.

답변2

해당 행을 표시하거나 숨기는 작업 코드가 있고 위의 행을 삽입한 후에만 해당 행을 찾는 것이 문제라고 가정하겠습니다.

표시하거나 숨길 범위가 하나만 있는 경우 명명된 범위를 사용할 수 있습니다. 위에 새 줄이 있으면 명명된 범위는 여전히 동일한 줄을 가리킵니다.

ToBeHidden몇 개의 셀에 이름(예: )을 지정하고 (예 A26:A28: 전체 행에 이름을 지정할 필요 없음) 다음 코드를 사용하여 셀을 전환합니다.

With ActiveSheet.Range("ToBeHidden").EntireRow
    If .Hidden = True Then
        .Hidden = False
    Else
        .Hidden = True
    End If
End With

한 세트의 라인으로 전환하는 것은 쉽지만, 많은 라인이 있는 경우에는 더 강력한 것이 필요합니다. 아마도 이 기능을 활성화하려면 전용 열을 추가하세요.

답변3

OP의 목표는 Máté Juhász의 위 설명에서 찾을 수 있는 "삽입 여부와 행 수를 감지하는 것"이므로 솔루션은 삽입되거나 삭제된 행에 대해 숨겨진 데이터 범위를 추적해야 합니다.

먼저 숨겨진 범위의 이름을 지정 A26:A28하고 다음 VBA 코드를 사용하여 삽입되거나 삭제된 행 수를 추적합니다.

Private Sub Worksheet_Change(ByVal Target As Range)
    Static lngRow As Long
    Dim rng1 As Range
    Set rng1 = ThisWorkbook.Names("Named Range").RefersToRange
    If lngRow = 0 Then
    lngRow = rng1.Row
        Exit Sub
    End If
    If rng1.Row = lngRow Then Exit Sub
    If rng1.Row < lngRow Then
        MsgBox lngRow - rng1.Row & " Row Deleted"
    Else
        MsgBox rng1.Row - lngRow & " Rows Inserted"
    End If
    lngRow = rng1.Row
End Sub

참고: 삽입된 행만 계산하려면 마지막 행을 다음 If...으로 변경하세요.

If rng1.Row > lngRow Then
    MsgBox rng1.Row - lngRow & " Rows Inserted"
End If

관련 정보