EntireRow (3)
엑셀 VBA #36 / 행삽입_기본 [VBA]
반응형

엑셀 VBA #36 / 행삽입_기본 [VBA]


1. 목적 : VBA에서 행삽입 기능 숙지
2. Insert
- 구문 : 개체.Insert Shift:=xldown
- 의미 : 정해진 영역에서 기존 행은 아래로 이동시키고 새로운 행 삽입

3. 사용

Dim i As Long, lR As Long

lR = Cells(Rows.Count, "A").End(xlUp).Row   ' "A"열의 데이타가 있는 마지막 셀의 행번호

For i = 2 To lR
    If i <> lR Then  '마지막 행 아래는 빈 행이 있으므로, 마지막 행은 행삽입 불요 
        Cells(i, "A").EntireRow.Insert shift:=xlDown
    End If
Next

결과값---오류발생

오류발생원인 : 하나하나의 행 삽입되면서 기존의 행번호도 같이 변경되기때문!

해결위한 1차 코드
Dim i As Long, lR As Long

lR = Cells(Rows.Count, "A").End(xlUp).Row

For i = lR To 2 Step -1  '마지막 번호부터 시작하면서 행번호를 줄여간다
    If i <> lR Then
        Cells(i, "A").EntireRow.Insert shift:=xlDown
    End If
Next

결과값...또 오류 발생!!!

오류발생......

해결위한 2차 코드
Dim i As Long, lR As Long

lR = Cells(Rows.Count, "A").End(xlUp).Row

For i = lR To 2 Step -1 
    If i <> lR Then
        Cells(i, "A").Offset(1).Insert shift:=xlDown
        '작업해야 할 행보다 1칸 아래 행을 선정하여 행 삽입하면 됨
    End If
Next

결과값



4. 심화

Dim i As Long, lR As Long

lR = Cells(Rows.Count, "A").End(xlUp).Row

For i = lR To 2 Step -1
    If i <> lR Then
        Cells(i, "A").Offset(1).Resize(, 5).Insert shift:=xlDown
        'Resize(,5) : 5열까지만 행삽입토록
    End If
Next

vba#36.xlsm
0.02MB

 

 

 

https://www.youtube.com/watch?v=Lz1no-0Z7Xk&list=PLfxvqpVCYZ8e0qlyc_FU46neoWjO7yTWj&index=36




반응형
  Comments,     Trackbacks
엑셀 VBA #12 / 셀 범위 선택하기_7 [VBA] - SpecialCell & Areas활용(행 삭제)
반응형

엑셀 VBA #12 / 셀 범위 선택하기_7 [VBA]

1. 목적 : SpecialCell & Areas활용하여 빈 행 삭제

2. 예시구문
  2.1. 한 행만 남기고 나머지 빈 행 전체를 삭제


  Dim rng As Range
  Dim a As Range

  Set rng = Range("A1", Cells(Rows.Count, "A").End(xlUp))

 

  For Each a In rng.SpecialCells(xlCellTypeBlanks).Areas
      If a.Count > 1 Then
          a.Resize(a.Count - 1, 1).EntireRow.Delete
      End If
  Next
  End Sub

 

rng.SpecialCells(xlCellTypeBlanks).Areas

=> rng영역내에서 빈 셀의 영역 전체

 

a.Resize(a.Count - 1, 1).EntireRow.Delete

결과값




  2.2. 한 행은 남기고 나머지 특정 열까지만 삭제


  Dim rng As Range
  Dim a As Range

  Set rng = Range("A1", Cells(Rows.Count, "A").End(xlUp))

  For Each a In rng.SpecialCells(xlCellTypeBlanks).Areas
      If a.Count > 1 Then
          a.Resize(a.Count - 1, 4).Delete
      End If

결과값
vba#12.xlsm
0.02MB

 

 


https://www.youtube.com/watch?v=wkyqM-ki-_0&list=PLfxvqpVCYZ8e0qlyc_FU46neoWjO7yTWj&index=12

반응형
  Comments,     Trackbacks
엑셀 VBA #04 / 셀 하나 선택하기_3[VBA] - Entire속성 이용
반응형

엑셀 VBA #04 / 셀 하나 선택하기_3[VBA]

1. 전체행 or 전체열 선택하기
Columns(2).Select   또는
Columns("B").Select

Rows(4).Select

2. 특정셀이 포함된 전체행 or 전체열 선택하기
Range("A1").EntireColumn.Select
Range("C4").EntireColumn.Select
Range("B6").EntireRow.select

3. 특정구간(ex,표-A1:D10)이 포함된 전체행 or 전체열 선택하기
Dim rng As Range
Set rng = Range("A1:D10")      'rng는 개체변수이므로 반드시 Set문으로 처리
rng.EntireRow.Select


4. 특정구간(ex,표-A1:??)이 포함된 전체행 or 전체열 선택하기
Dim rng As Range
Dim rn As Long
Set rng = Range("A1"D10")      'rng는 개체변수이므로 반드시 Set문으로 처리

rn = rng.EntireRow.Select

5. 핵심정리

특정범위의 행의 수 카운트
변수 = rng.Rows.Count


https://www.youtube.com/watch?v=nANTxEjUdUQ&list=PLfxvqpVCYZ8e0qlyc_FU46neoWjO7yTWj&index=4

반응형
  Comments,     Trackbacks
최근 작성 글
최근 작성 댓글
최근 작성 트랙백
프로필
공지사항
글 보관함
캘린더
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
TODAY TOTAL