programing

활성 시트.사용 범위.기둥.카운트 - 8 그게 무슨 뜻입니까?

muds 2023. 9. 18. 22:44
반응형

활성 시트.사용 범위.기둥.카운트 - 8 그게 무슨 뜻입니까?

ActiveSheet의 기능.사용 범위.기둥.카운트 - vba에서 평균 8개?

vba는 사용된 범위를 어떻게 알고 있습니까?

여기에 정확한 정의가 있습니다.UsedRange(MSDN 참조):

모든 워크시트 개체에는 사용 중인 워크시트의 영역을 나타내는 범위 개체를 반환하는 UsedRange 속성이 있습니다.UsedRange 속성은 워크시트에서 가장 왼쪽 위와 오른쪽 아래의 비어 있지 않은 셀이 나타내는 영역을 나타내며 그 사이에 모든 셀이 포함됩니다.

그래서 기본적으로 그 선이 하는 일은 다음과 같습니다.

  1. .UsedRange-> 내용물이 들어있는 최외곽 셀 주위에 상자를 "그립니다.
  2. .Columns-> 해당 셀의 전체 열을 선택합니다.
  3. .Count-> 열 개수에 해당하는 정수를 반환합니다(이 선택 항목에서).
  4. - 8-> 이전 정수에서 8을 풉니다.

VBA가 인덱스 값이 가장 낮고 가장 높은 비어 있지 않은 셀을 찾아 UseRange를 계산한다고 가정합니다.

범위에 있는 줄의 수가 3개보다 작아서 반환된 줄의 수가 음수이기 때문에 오류가 발생할 가능성이 높습니다.

버나드 소시에가 이미 답을 드렸습니다.제 게시물은 답변이 아니라 사용하면 안 되는 이유에 대한 설명입니다.UsedRange.

UsedRange여기에 나와 있는 것처럼 매우 신뢰할 수 없습니다.

데이터가 있는 마지막 열을 찾으려면 다음을 사용합니다..Find그리고 그것에서 빼냅니다.

With Sheets("Sheet1")
    If Application.WorksheetFunction.CountA(.Cells) <> 0 Then
        lastCol = .Cells.Find(What:="*", _
                      After:=.Range("A1"), _
                      Lookat:=xlPart, _
                      LookIn:=xlFormulas, _
                      SearchOrder:=xlByColumns, _
                      SearchDirection:=xlPrevious, _
                      MatchCase:=False).Column
    Else
        lastCol = 1
    End If
End With

If lastCol > 8 Then
    'Debug.Print ActiveSheet.UsedRange.Columns.Count - 8

    'The above becomes

    Debug.Print lastCol - 8
End If

당신이 이사를 가고 싶어하는 것 같네요.시도해 보기:

ActiveSheet.UsedRange.select

결과적으로...

enter image description here

선택 항목을 3행 위로 이동하려면 이 방법을 사용해 보십시오.

ActiveSheet.UsedRange.offset(-3).select

이런 짓을...

enter image description here

노력해보면 다음과 같습니다.

Sub Macro3()
a = ActiveSheet.UsedRange.Columns.Count - 3
End Sub  

시계를 차고a당신은 그것이 변화를 만들어 낸다는 것을 알게 될 것입니다.

UseRange는 비어 있지 않은 셀뿐만 아니라 값이 없는 형식화된 셀을 나타냅니다.그래서 당신은 매우 경계해야 합니다.

언급URL : https://stackoverflow.com/questions/21172108/activesheet-usedrange-columns-count-8-what-does-it-mean

반응형