vba (79)
엑셀 VBA #06 / 셀 범위 선택하기_1 [VBA]
반응형

엑셀 VBA #06 / 셀 범위 선택하기_1 [VBA]

1. 기본
Range("A1:D10").Select    또는
Range("A1",Cells(Rows.Count,"D").End(xlup)).Select

VBA 셀 범위 선택


2. 응용
D열의 마지막 셀의 값이 없을 때, 위 1의 방법을 적용하면 아래 그림처럼 나온다.

즉 10행의 데이타가 누락된 셀 범위가 설정된다.

 

이를 해결할 수 있는 방법은 아래 코드를 활용하는 것이다.

2.1) Offset 적용

Range("A1",Cells(Rows.Count,"C").End(xlup).Offset(,1)).Select


2.2)  A열의 행 수를 활용
Dim c As Long
c=Range("A1").End(xlDown).Row
Range("A1:D"&c).Select

2.3) CurrentRegion 적용

Range("A1").CurrentRegion.Select

2.4) UsedRange 적용

worksheets(1).UsedRange.Select

주의할 것은 UsedRange적용시 worksheets가 반드시 들어가야 한다!!!!!!

그리고 장점은 비연속적 데이타 테이블에도 사용할 수 있다는 것이다(아래 그림 참고).

 

cf, Worksheets(1) vs Sheets(1)의 차이점

Sheets가 더 큰 개념.
Worksheets는 일반적인 데이터가 입력되어 있는 시트를 의미!
Sheets는 일반적 시트에 차트 시트(차트가 시트 전체에 full로 그려진 시트)와 같이 특별한 시트까지 포함

 

 

3. 핵심정리

  3.1. 연속범위_1
      Range("A1").CurrentRegion

  3.2. 연속범위_2
      Range("A1",Cells(Rows.Count,"D").End(xlup))
      Range("A1",Cells(Rows.Count,"C").End(xlup).Offset(,1))

 

 

vba#06.xlsm
0.02MB

 

 

 

https://www.youtube.com/watch?v=qEDUKVAid-Y&t=355s

반응형
  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
엑셀 VBA #03 / 셀 하나 선택하기_2[VBA] - End속성 이용
반응형

엑셀 VBA #03 / 셀 하나 선택하기_2[VBA]

1. 특정열의 마지막 셀 (중간 빈 셀O) 선택하기
Cells(rows.count,"A").End(xlup).Select

2.특정행의 마지막 셀(중간 빈 셀O) 선택하기
Cells(4,Columns.Count).End(xlToLeft).Select

cf,

1. 특정열의 마지막 셀 (중간 빈 셀O) 번호 찾기

Cells(4, Columns.Count).End(xlToLeft).Column

 

특정영역(rng)의 열 갯수 찾기 

rng.Columns.Count

 

 

2.특정행의 마지막 셀(중간 빈 셀O) 번호 찾기

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

 특정영역(rng)의 행의 갯수 찾기

rng.Rows.Count 

 

 

 

엑셀 VBA #07 / 셀 범위 선택하기_2 [VBA] -Resize & Offset(마지막 열번호 찾기)

 

https://www.youtube.com/watch?v=P9j8CfA93LM&list=PLfxvqpVCYZ8e0qlyc_FU46neoWjO7yTWj&index=3



반응형
  Comments,     Trackbacks
엑셀 VBA #02 / 셀 하나 선택하기_1[VBA]
반응형

엑셀 VBA #02 / 셀 하나 선택하기_1[VBA]

1. A1셀 선택하기
Range("A1").Select   또는
Cells(1,1).Select

2. AZ1셀 선택하기
Range("AZ1").Select   또는
Cells(1,52).Select    또는
Cells(1,"AZ").Select

3. 변수를 이용하여 A7셀 선택하기
Dim cn As Long
cn=7

Range("A" & cn).Select 또는
Cells(cn,"A").Select

4. 기타
Cells로 셀 선택시 자동구성원목록이 제공되지 않는다.
이를 땐 Cells를 객체변수로 받으면 된다.
객체변수는 Set문으로 받아야 한다.
Dim c As Range
Set c = Cells(7, "A")

c.Select

 

5. 핵심정리

1).특정열의 열번호 알아내기
  Ctrl + G(직접 실행창)--> '?Range("az1").Column'


2). Cells를 직관적으로 쓰기
  Cells(1,"az")

 

https://www.youtube.com/watch?v=j14X81XfdOU&list=PLfxvqpVCYZ8e0qlyc_FU46neoWjO7yTWj&index=2

 

 

 

반응형
  Comments,     Trackbacks
vba - 셀 범위 선택
반응형

원본 자료

방법1 : Range("A1:D10").Select

방법2 : Range("A1).CurrentRegion.Select

방법3 : Range("A1", Cells(Rows.Count, "D").End(xlUp)).Select

방법1 & 2의 결과 동일

 

 

 

만약 D10셀이 빈셀이라면... 위 방법1,2,3은 제대로 작동될까.....

방법1,2는 이상무, 그러나 방법3는 엉뚱한 결과가 나온다. 아래 그림처럼.

 

 

그래서 해결방법은.........?????

아래의 4번 혹은 5번을 적용하면 된다.

 

방법4 : Range("A1", Cells(Rows.Count, "C").End(xlUp).Offset(, 1)).Select

방법5 : Dim c As Long
           c = Range("A1").End(xlDown).Rows
           Range("A1:D" & c).Select

 

 

반응형
  Comments,     Trackbacks
vba - intersect, event프로시져
반응형

A2:D11범위에 숫자만 입력할 수 있도록 하며, 만약 문자 입력된 경우에는 메세지박스로 안내하는 기능.

 

VBA창에서 해당 시트(test시트)를 더블클릭

 

Private Sub Worksheet_Change(ByVal Target As Range)

If Not Intersect(Target, Columns("A:D")) Is Nothing Then
    If Target.Row > 1 And Target.Row < 12 Then
        If VBA.IsNumeric(Target) Then
        Else
            MsgBox "숫자로 입력하세요"
            Target = ""
            Target.Select
        End If
    End If
End If

End Sub

 

 

엑셀 VBA #14 / 셀 범위 선택하기_9 [VBA] - Intersect 실무예제

 

출처 : 엑셀디자인 유튜버

연관강좌 : 엑셀 VBA #86 / 이벤트프로시저+EnableEvents 활용하기 [VBA]

                 엑셀 VBA #85 / 이벤트 프로시저와 find 메서드 활용하기 [VBA]

반응형
  Comments,     Trackbacks
vba - resize2
반응형

[Sample Code]

 

Sub Resize_test()

    Dim rngT As Range
    Dim cn As Long
    
    Set rngT = Range("A1").CurrentRegion
   
    cn = Cells(1, Columns.Count).End(xlToLeft).Column
    rngT.Offset(1).Resize(rngT.Rows.Count - 1, cn).Select

End Sub


해석1.

   cn = Cells(1, Columns.Count).End(xlToLeft).Column

1행의 마지막 데이타 셀까지의 열 개수 계산

 

해석2.

    rngT.Offset(1).Resize(rngT.Rows.Count - 1, cn).Select

머릿글 행을 제외한 데이타 데이블 전체 선택


용도

행 또는 열방향으로 데이타가 추가되더라도 테이블 전체를 유동적으로 선택할 수 있음

반응형
  Comments,     Trackbacks
vba - resize1
반응형

형식(문법) : 기준개체.Resize(행,열)

 

ex)

   기준개체.Resize(2,3)

 

 

   기준개체.Resize(,3).Select
= 기준개체.Resize(기준개체의 행 갯수 전체,3).Select

 


[Sample Code]

Sub Resize_test()

    Dim rngT As Range
    Set rngT = Range("A1").CurrentRegion

    rngT.Resize(2, 3).Select

End Sub


rngT.Resize(2, 3).Select


rngT.Resize(, 3).Select


rngT.Resize(rngT.Rows.Count, 3).Select


rngT.Resize(, 3).Select  = rngT.Resize(rngT.Rows.Count, 3).Select

반응형
  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