728x90
Cells/Range 관련 속성 및 메서드
- 간단한 메서드
- 메모삽입 : AddComment(Text)
- 셀내용물 삭제 : ClearContents
- 셀 배경색상 수정 : interior.color = RGB(255, 255, 255)
- 셀 테두리 설정 : Borders
- 기본형 : Range.Borders(Index).LineStyle = xlNone
- 특징
- Range개체의 테두리를 일일이 설정할 때 사용
- Index에는 xlEdgeTop, xlEdgeBottom, xlEdgeLeft, xlEdgeRight와 xlDiagonalDown, xlDiagonalUp 그리고 xlInsideHorizontal, xlInsideVertical이 있음
- 하위 속성으로 LineStyle, Weight, Color가 있으며, 각각 Index를 가짐
- 외곽선을 일괄지정할 때에는 Borders 대신 BorderAround를 사용하면 된다. 하위 속성은 동일함
- 정렬 : Sort
- 기본형 : rng.Sort rng(1,1)[정렬기준1]. xlDescending[오름/내림], rng(1,2)[정렬기준2], [Type값, 피벗테이블과 관련된 부분, 대부분 생략], xlAscending[오름/내림], header :=xlNo[머릿글여부], Orientation:=xLlSortColumns[정렬의 방향, 일반적으로 열(column)방향정렬]
- 주의사항 : Sheets("시트명").Sort.SortField.Clear를 선행하여, 기존기준을 제거후 실행한다.
- 활용예시1 (가로로 데이터가 나오는 표에 대하여 정렬하기)
Sheets("시트명").Sort.SortField.Clear 'Sort전, 기존 Sort기준 제거
Dim rng As Range '범위개체 rng선언
Set rng = Range("A1").CurrentRegion 'CurrentRegion을 rng로 지정
Set rng = rng.Offset(, 1).Resize(, rng.Columns.Count - 1) '열머릿글을 범위에서 제외
rng.Sort rng(3, 1), xlAscedinng, Orientation:=xlSortRows '열방향 sort 진행
- 활용예시2 (가로로 데이터가 나오는 표 중, 각 항목별로 정렬이 필요한 경우)
Sheets("시트명").Sort.SortField.Clear 'Sort전, 기존 Sort기준 제거
Dim c As Range, rng As Range
For Each c In Range("a1").CurrentRegion.Resize(, 1) 'a1셀의 CurrentRegion 1열 대상 순회 Set rng = Range(c.Offset(, 1), Cells(c.Row, Columns.Count).End(xlToLeft)) '순회별로 열머릿값 제외한 범위 선택
if rng.count > 1 then '1열 이상의 데이터만 Sort 시행
rng.Sort Cells(c.Row, 1), xlAscending, Header:=xlNo, Orientation:=xlSortRows '순회별로 첫행을 기준으로 정렬시행
End if '조건 : 머리값 없음 / 방향 : 가로
Next
- 행 삽입
- 기본형 : Selection.Insert Shift:=xlDown
- 활용예시 : 제목줄 제외하고 한칸씩 삽입하기
Dim i As Long, Lr As Long
i = 0
Lr = Cells(Rows.Count, "a").End(xlUp).Row
For i = Lr To 2 Step –1
If i <> Lr Then
Cells(i, "a").Offset(1).EntireRow.Insert shift:=xlDown
End If
Next
- 행 삭제
- 기본형 : Selection.delete shift:=xlDown
- 유의사항 : 삭제하려는 범위의 row, column에 대하여, row<=Column인 경우 xlUp이 적용되며, 나머지의 경우에는 xlShiftToLeft가 적용된다. 단, 맨 아랫줄은 반드시 xlShiftToLeft가 적용된다.
- 활용형
- 방법1 : 각 행을 내려가며 한 행씩 삭제
- 방법2 : 변수 1개에 삭제할 범위를 할당한 후 한번에 선택, 삭제
Dim r As Range 'For문을 위한 임시변수 r
Dim i As Long
Dim uSelected As Range '현재 선택된 셀을 저장할 변수
Set uSelected = ActiveCell
Dim uSelected_Lr As Range '선택된 셀이 소속된 행의 가장 마지막 셀(열)을 저장할 변수
Set uSelected_Lr = Cells(Rows.Count, uSelected.Column).End(xlUp)
Dim uOffset As Long '어디서 지정하든 동일한 크기를 나타내도록 offset 마련
uOffset = uSelected.CurrentRegion.Column - uSelected.Column
For i = 2 To uSelected_Lr.Row 'i의 순환범위는 선택셀 이후 ~ 선택열의 가장 마지막 셀
If Len(Cells(i, uSelected_Lr.Column)) < 1 Then '조건 : 길이가 1미만인 셀
If r Is Nothing Then 'r이 nothing인 경우, 순환중인 셀을 삽입
Set r = Cells(i, uSelected_Lr.Column + uOffset).Resize(, uSelected.CurrentRegion.Columns.Count)
Else 'r에 이미 내용물이 있다면 순환중인 셀을 union 처리
Set r = Union(r, Cells(it, uSelected_Lr.Column + uOffset).Resize(, uSelected.CurrentRegion.Columns.Count))
End If
End If
Next
If Not r Is Nothing Then r.Delete 'r이 nothing이 아닌 경우, 삭제 실행
반응형
'컴퓨터 & 코딩 공부 > 엑셀 & VBA' 카테고리의 다른 글
엑셀 VBA 기본기능 정리 - 중복데이터 처리 (0) | 2023.07.09 |
---|---|
엑셀 VBA 기본기능 정리 - VBA를 이용한 자동필터, 고급필터 (0) | 2023.07.09 |
엑셀 VBA 기본기능 정리 - 시트 관련 속성 및 메서드 (0) | 2023.07.05 |
엑셀 VBA 기본기능 정리 - 정규표현식 활용 (0) | 2023.07.04 |
엑셀 VBA 기본기능 정리 - 선택하기/범위조작(2) (0) | 2023.07.03 |