Excel 표에서 열 수를 선택하기 위한 VBA
여기서 배웠듯이(SO에서도 인용) 다음 코드를 사용하여 3열의 데이터 본문을 선택할 수 있습니다.Table1
:
ActiveSheet.ListObjects("Table1").ListColumns(3).DataBodyRange.Select
여러 열(예: 3~5열 또는 X~X+3열)을 함께 선택하는 데 도움이 필요합니다.
이 질문에 대한 답을 사용하여 실제 열 이름을 사용하여 절반을 사용할 수 있었습니다.
Range("Table1[[Column3]:[Column5]]").Select
그러나 이름 대신 열 번호를 사용할 수 있어야 합니다. 함수(예: 열 X - X+d)의 결과이기 때문입니다.
연속 범위의 경우 단일 열 크기를 조정하기만 하면 됩니다.
ActiveSheet.ListObjects("Table1").ListColumns(3).DataBodyRange.Resize(, 3).Select
보다 복잡한 선택을 하려면 Union을 사용하여 이전에 수집합니다.프로세스를 선택합니다.
With ActiveSheet.ListObjects("Table1")
Union(.ListColumns(3).DataBodyRange, _
.ListColumns(4).DataBodyRange, _
.ListColumns(5).DataBodyRange).Select
End With
더 나은 방법은 Excel VBA 매크로에서 선택을 사용하지 않는 방법을 참조하십시오.
DataBodyRange에서 다음과 같은 상대 테이블 범위를 사용할 수 있는 Columns 메서드 사용"A:B"
따라서 처음 두 개의 열을 원한다면 다음과 같이 쓸 수 있습니다.ActiveSheet.ListObjects("Table1").DataBodyRange.Columns("A:B").Select
그러나 상대적인 열 번호를 기준으로 선택하려면 어떻게 해야 합니까?숫자를 이 문자열로 변환하는 몇 가지 함수를 만듭니다.
Sub selectMultipe()
ActiveSheet.ListObjects("Table1").DataBodyRange.Columns(getRangeStr(1, 2)).Select
End Sub
'Get Range String
Function getRangeStr(startColNum As Long, endColNum As Long) As String
startCol = ColLtr(startColNum)
endCol = ColLtr(endColNum)
getRangeStr = startCol + ":" + endCol
End Function
'Convert column number to letter
Function ColLtr(iCol As Long) As String
If iCol > 0 And iCol <= Columns.Count Then ColLtr = Replace(Cells(1, iCol).Address(0, 0), 1, "")
End Function
참고: 열 번호 대 문자 함수가 여기에 있습니다.
제가 사용한 또 다른 방법은 이것입니다.
ActiveSheet.Range("tblResult[" & .ListColumns(3).name & "]:tblResult[" & .ListColumns(.ListColumns.Count).name & "]").Select
이 경우 3열과 나머지 열을 선택합니다.
언급URL : https://stackoverflow.com/questions/45356240/vba-for-selecting-a-number-of-columns-in-an-excel-table
'IT' 카테고리의 다른 글
모든 MySQL 테이블 행을 동시에 업데이트하는 방법은 무엇입니까? (0) | 2023.08.11 |
---|---|
구성 요소와 지침의 차이점은 무엇입니까? (0) | 2023.08.11 |
메인() 기능을 사용하지 않고 프로그램을 작성할 수 있습니까? (0) | 2023.08.11 |
내 Git 저장소가 잘못된 루트 디렉터리에 있습니다.옮겨도 될까요? (./ 대신에../) (0) | 2023.08.11 |
리디렉션을 발생시키지 않고 URL에 조각을 추가하시겠습니까? (0) | 2023.08.11 |