programing

A1에서 실제 사용한 셀까지의 범위를 반환합니다.

muds 2023. 10. 23. 22:08
반응형

A1에서 실제 사용한 셀까지의 범위를 반환합니다.

스프레드시트의 모든 행과 열을 선택하고 싶습니다.매크로가 호출될 때마다 열과 행의 수가 달라지는 경향이 있으므로 매크로는 동적이어야 합니다.또한 빈 행과 열을 설명할 수 있어야 합니다.

이 서브루틴은 프로세스의 일부를 수행합니다.

Sub FindLastCell()
Cells.Find(What:="*", After:=[A1], SearchDirection:=xlPrevious).Select
End Sub

스프레드시트의 맨 마지막 셀을 찾아 선택합니다.스프레드시트에서 가장 마지막 셀을 찾았는데 A1부터 마지막 셀까지를 범위로 선택하려면 어떻게 해야 합니까?

당신은 코드에 이 모드들을 만들어야 합니다.

  1. 시트가 비어 있을 수 있으므로 절대 사용하지 마십시오.Select와 함께Find찾기가 아무것도 반환하지 않으면 오류가 발생하기 때문입니다.대신 범위 개체를 테스트합니다.Is Not Nothing
  2. Find행 및 열로 검색할 수 있습니다.마지막 행과 열을 모두 결정해야 실제 마지막 사용 셀을 결정할 수 있습니다.
  3. 실제 마지막 셀 사용을 결정한 후Range두 개로 결정된 첫 번째 셀(A1)부터 당신의 셀까지의 범위를 설정합니다.Find음역대들

아래 코드를 참조해주시기 바랍니다.

만약에Find값을 얻은 다음 범위를 만듭니다.rng3A1부터 마지막으로 사용된 셀까지 2개의 셀로 식별됩니다.Finds.

enter image description here

Sub GetRange()
    Dim rng1 As Range
    Dim rng2 As Range
    Dim rng3 As Range
    Set rng1 = Cells.Find("*", [a1], xlFormulas, , xlByRows, xlPrevious)
    Set rng2 = Cells.Find("*", [a1], xlFormulas, , xlByColumns, xlPrevious)
    If Not rng1 Is Nothing Then
        Set rng3 = Range([a1], Cells(rng1.Row, rng2.Column))
        MsgBox "Range is " & rng3.Address(0, 0)
        'if you need to actual select the range (which is rare in VBA)
        Application.Goto rng3 
    Else
        MsgBox "sheet is blank", vbCritical
    End If
End Sub

열 A에서 마지막으로 사용한 셀(그 사이 빈 칸 포함)에 A1을 선택하는 것은 다음과 같이 간단합니다.

Range("A1:A" & Range("A" & Rows.Count).End(xlUp).Row).Select

전체 시트에 사용된 마지막 셀에 A1을 선택하려면(열 A에 사용되었는지 여부에 관계없이)

Range("A1:A" & ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Row).Select

지정된 셀에서 시작하여 마지막 셀까지 범위를 선택하기 위해 코드를 수정하는 방법을 찾았습니다.8번 라인에서 a1을 시작할 셀로 바꿉니다.저 같은 경우는 j28을 선택했습니다.

 Set rng3 = Range([j28], Cells(rng1.Row, rng2.Column))

전체 코드:

    Sub GetRange()
        Dim rng1 As Range
        Dim rng2 As Range
        Dim rng3 As Range
        Set rng1 = Cells.Find("*", [a1], , , xlByRows, xlPrevious)
        Set rng2 = Cells.Find("*", [a1], , , xlByColumns, xlPrevious)
        If Not rng1 Is Nothing Then
            Set rng3 = Range([j28], Cells(rng1.Row, rng2.Column))
            MsgBox "Range is " & rng3.Address(0, 0)
            'if you need to actual select the range (which is rare in VBA)
            Application.Goto rng3
        Else
            MsgBox "sheet is blank", vbCritical
        End If
    End Sub

@brettdj는 다음의 사용을 지적했습니다.ActiveSheet.UsedRange현재 사용 중인 범위를 삭제합니다.아래의 간단한 코드를 사용하겠습니다.

ActiveSheet.UsedRange
ActiveSheet.UsedRange.Select

언급URL : https://stackoverflow.com/questions/8283797/return-a-range-from-a1-to-the-true-last-used-cell

반응형