분류 전체보기 (1370)
엑셀 VBA #18 / Like 연산자 [VBA]
반응형

엑셀 VBA #18 / Like 연산자 [VBA]

Like함수 구조 :
If 문자셀 Like 패턴 Then.......

If 문자셀 Like [A-Z] Then.......     대문자 영문이라면
If 문자셀 Like [a-z] Then.......     소문자 영문이라면
If 문자셀 Like [가-힣] Then.......     한글이라면
If 문자셀 Like [!가-힣] Then.......     한글 아니라면
If 문자셀 Like [0-9] Then.......     숫자라면
If 문자셀 Like "A*" Then.......     대문자A로 시작하는 모든 글자라면
If 문자셀 Like "A?" Then.......     대문자A로 시작하면서 글자 하나가 따라오면
If 문자셀 Like "A#" Then.......     대문자A로 시작하면서 숫자 하나가 따라오면
If Not 문자셀 Like "A*" Then.......     대문자A로 시작하는 모든 글자가 아니라면

A2셀 값이 "A1" 이 맞으며 글자수가 2개라면 메시지박스에 "OK"가 나오는 코드

Sub Like연산자1()

If Range("A2") = "A1" And Len(Range("A2")) = 2 Then MsgBox "OK"
'len함수 : 문자의 개수 파악하는 함수

End Sub

 

 

A3셀의 값이 위 그림의 규칙에 부합하면 메시지박스에 "OK"가 나오는 코드

Sub Like연산자2()

If Range("A3") Like "###-[A-D][A-D][A-D]###" Then MsgBox "OK"

End Sub

vba#18.xlsm
0.02MB

 

https://www.youtube.com/watch?v=bnUIgnBITL0&list=PLfxvqpVCYZ8e0qlyc_FU46neoWjO7yTWj&index=19

반응형
  Comments,     Trackbacks
엑셀 VBA #17 / If 조건문 [VBA]
반응형

엑셀 VBA #17 / If 조건문 [VBA]

 

 

Sub If조건문()

구문1.
If IsNumeric(Range("A2")) Then MsgBox "숫자입니다."
'If문을 한 줄로 작성하면 End If 필요없음


구문2.
If IsNumeric(Range("A2")) Then
      MsgBox "숫자입니다."
End If

구문3.
If IsNumeric(Range("A2")) Then
      MsgBox "숫자입니다."
Else
      MsgBox "숫자가 아닙니다."
End If

구문4.(다중If문)
If Range("A2") >= 8 Then
      Range("B2") = "합격"
ElseIf Range("A2") >= 6 Then
      Range("B2") = "재시험"
Else
      Range("B2") = "탈락"
End If


End Sub

 

vba#17.xlsm
0.02MB

 

https://www.youtube.com/watch?v=wlvWfsA91Lc&list=PLfxvqpVCYZ8e0qlyc_FU46neoWjO7yTWj&index=17

 

 

 

반응형
  Comments,     Trackbacks
엑셀 VBA #15 / 셀 범위 선택하기_10 [VBA] - 빈 셀 채우기
반응형

엑셀 VBA #15 / 셀 범위 선택하기_10 [VBA]

 

Sub 빈셀_채우기()

Dim rng As Range

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

rng.SpecialCells(xlCellTypeBlanks).Formula = "=A2"

End Sub

 

vba#15.xlsm
0.02MB

 

SpecialCell 

구조 : 기준개체.Specialcells(옵션)

 

Offset

Range("B5").Offset(2,0).Select 또는
Range("B5").Offset(2).Select    ',0은 생략가능함

 

 

https://www.youtube.com/watch?v=qbeX24HXVxg&list=PLfxvqpVCYZ8e0qlyc_FU46neoWjO7yTWj&index=15

반응형
  Comments,     Trackbacks
엑셀 VBA #14 / 셀 범위 선택하기_9 [VBA] - Intersect 실무예제
반응형

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


1. 목적 : 실무사례에서 Intersect가 어떻게 사용되는지 확인
2. 의도 : 특정 영역의 셀에 문자 입력 불가토록 함(즉 셀 값이 숫자 또는 빈 셀이어햐 함)
3. 적용기법 : 위크시트 이벤트(모듈이 아님), Intersect, IsNumeric

위크시트 이벤트 실행방법
콤보 박스에서 Worksheet선택, 본 예제에서는 Change선택




4. 코드

A2~D11 영역의 셀에는 문자 입력 불가토록 코딩함

 

Private Sub Worksheet_Change(ByVal Target As Range)

 

On Error GoTo er     '만약 에러가 발생하면, 아래의 er로 가라
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

er:

End Sub

vba#14.xlsm
0.02MB

 

vba - intersect, event프로시져

 

 

https://www.youtube.com/watch?v=NBO4iXAEAhw&list=PLfxvqpVCYZ8e0qlyc_FU46neoWjO7yTWj&index=14

 

 

반응형
  Comments,     Trackbacks
엑셀 VBA #13 / 셀 범위 선택하기_8 [VBA] - Intersect
반응형


엑셀 VBA #13 / 셀 범위 선택하기_8 [VBA] - Intersect

목적 : Intersect를 활용하여 범위간의 교집합 셀 선택하기

1. Intersect
구조 : Application.Intersect(범위1,범위2,,,,,,범위30)
          Application생략 가능
의미 : 교집합 셀 선택(최대 30개)

2. 사용
Intersect(Range("A1:D10"),Range("C4:E12")).Select

3. 심화
만약 범위간 교집합이 없을 때, 위와 같이 단독구문으로 하면 프로시져가 멈추게 된다. 이를 해결하기 위해 아래처럼 구문을 작성하면 된다.
If Not Intersect(Range("A1:D10"),Range("C4:E12")) Is Nothing Then
~~~~~~~~ '교집합이 있으면 이곳에 실행할 코드 입력
End IF

4. 참고
합집합을 구하는 함수 : Union
Union(Range("A1:D10"),Range("C4:E12")).Select


https://www.youtube.com/watch?v=C0CtxRTnqz4&list=PLfxvqpVCYZ8e0qlyc_FU46neoWjO7yTWj&index=13

반응형
  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 #11 / 셀 범위 선택하기_6 [VBA] - Areas
반응형

엑셀 VBA #11 / 셀 범위 선택하기_6 [VBA]

1. 목적 : (비연속적)다중영역의 셀 주소 확인 가능
구조 : 기준개체.Areas
의미 : 다중영역의 전체를 한 묶음으로 지정???

(VBA#12 04:36)
    For each   in rng.SpecialCells(xlCellTypeBlanks).Areas

    rng영역에서 값이 없는 빈셀의 다중영역 전체!!!!!!!

 


2. 사용
  2.1. 선택된 셀이 하나인 경우
     MsgBox Selection.Address
     선택 셀의 주소가 절대주소로 보여짐


     MsgBox Selection.Address(0,0)
     선택 셀의 주소가 상대주소로 보여짐


  2.2. 선택된 셀이 다중인 경우(ex, 4개 영역)
     MsgBox Selection.Areas(1).Address(0,0)
     MsgBox Selection.Areas(2).Address(0,0)
     MsgBox Selection.Areas(3).Address(0,0)
     MsgBox Selection.Areas(4).Address(0,0)

3. 심화활용
선택된 셀 영역의 갯수를 모르는 경우 : For Each ~ Next문 & 동적배열 사용
Dim a As Range
Dim adr()
Dim i As Long

For Each a In Selection.Areas
    ReDim Preserve adr(i)          'adr은 영역의 각각의 주소를 담는 변수
    adr(i) = a.Address(0, 0)
    i = i + 1
Next

MsgBox "선택된 다중범위는 " & vbCr & Join(adr, vbCr)

vba#11.xlsm
0.02MB



https://www.youtube.com/watch?v=lVh9T7V21ZE&list=PLfxvqpVCYZ8e0qlyc_FU46neoWjO7yTWj&index=11

반응형
  Comments,     Trackbacks
엑셀 VBA #09 / 셀 범위 선택하기_4 [VBA] - SpecialCells
반응형

엑셀 VBA #09 / 셀 범위 선택하기_4 [VBA]

목적 : SpecialCells를 활용하여 빈 셀, 오류 셀, 수식 셀을 선택하기

1. SpecialCells
구조 : 기준개체.Specialcells(옵션)
의미 : 기준개체에서 옵션에 맞는 셀을 선택

2. 사용
  2.1. 빈 셀 선택(옵션코드 xlCelllTypeBlanks)
  Dim rng As Range
  Set rng = Range("A1").CurrentRegion

  rng. SpecialCells(xlCelllTypeBlanks).Select

  cf) 빈 셀에 '**'넣기
  rng. SpecialCells(xlCelllTypeBlanks) = "**"

  2.2. 오류 셀 선택(옵션코드 xlCellTypeFormulas,xlErrors)
  Dim rng As Range
  Set rng = Range("A1").CurrentRegion

  rng. SpecialCells(xlCellTypeFormulas,xlErrors).Select


  cf) 오류 셀에 지우기
  rng. SpecialCells(xlCellTypeFormulas,xlErrors) =""

  2.3. 수식 셀 선택(옵션코드 xlCellTypeFormulas)
  Dim rng As Range
  Set rng = Range("A1").CurrentRegion

  rng. SpecialCells(xlCellTypeFormulas).Select

    2.3.1. 만약 rng 영역에 수식 셀이 없다면!!!!!
    2.3 의 코드만 입력시 오류 발생하기 때문에 아래처럼 코드를 작성해야한다.
    Dim rng As Range
    Set rng = Range("A1").CurrentRegion

   On Error Resume Next
   rng. SpecialCells(xlCellTypeFormulas).Select
   If Err Then MsgBox "이 워크시트에는 수식이 없습니다."
   On Error GoTo 0    '발생된 에러를 메모리상에서 지워라!!는 의미


https://www.youtube.com/watch?v=PtiKv9lR3Q8&list=PLfxvqpVCYZ8e0qlyc_FU46neoWjO7yTWj&index=9

 

엑셀 VBA #32 / 자동필터_1 [VBA] ----SpecialCells(xlCellTypeVisible)

 

반응형
  Comments,     Trackbacks
최근 작성 글
최근 작성 댓글
최근 작성 트랙백
프로필
공지사항
글 보관함
캘린더
«   2025/02   »
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
TODAY TOTAL