Intersect (4)
엑셀 VBA #85 / 이벤트 프로시저와 find 메서드 활용하기 [VBA]
반응형

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

 


Private Sub Worksheet_Change(ByVal Target As Range)

      Dim rng As Range
      Dim fc As Range
      
      If Not Intersect(Target, Columns("b")) Is Nothing Then
            Set rng = Sheet2.Range("a2:a32")
            
            On Error Resume Next
                  Set fc = rng.Find(Day(Target.Offset(0, -1)), , , xlWhole)
            On Error GoTo 0
            
            If Not fc Is Nothing Then
                  fc.Offset(0, 1) = Target.Value
            Else
                  MsgBox "정확한 값을 입력하세요."
            End If            
      End If
End Sub

vba#85.xlsm
0.02MB

 

 

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

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

2023.12.15 - 엑셀 VBA #42 / Find메서드_기본 [VBA]


https://www.youtube.com/watch?v=qAAJvBXT7zo&t=414s



 

반응형
  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 #08 / 셀 범위 선택하기_3 [VBA] - Union
반응형

엑셀 VBA #08 / 셀 범위 선택하기_3 [VBA]
 
목적 : Union을 활용하여 비연속적으로 떨어진 셀 범위 선택하기(합집합)

1. Union
구조 : Application.Union(범위1,범위2,,,,,,범위30)
          Application생략 가능
의미 : 비연속적으로 떨어진 셀 범위(최대 30개)를 합체

2. 사용
Application.Union(Columns("B"),Columns("D")).Select      또는
Union(Columns("B"),Columns("D")).Select


3. 심화

특정값(ex, 4 또는 6)을 제외한 셀을 선택하는 경우, Union활용

 

Dim c as Range
Dim r as Range

For Each c in Range("A1:A10")
    If c = 4 or c = 6 then
    Else                          'c의 값이 4 또는 6이 아니라면
           If r Is Nothing Then   ' r이라는 개체변수(r방)에 아무것도 없으면
               Set r =c                      'r방에 c값을 넣어주고
           Else                           'r방에 기존 값이 있으면
               Set r =Union(r,c)        ' r방에 기존 값과 c값을 합체한다
           End if
    End If
Next

If r is nothing = 0 then r.Select       '0=false, r방이 nothing이 아니라면(false), r을 선택해라

 

For Each~Next구문 이해도

 

vba#08.xlsm
0.02MB

 

https://www.youtube.com/watch?v=w3fWBhtPamA&t=15s

 

 

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

2023.12.14 - 엑셀 VBA #40 / 행 삭제_개선1 [VBA] - Union

2023.12.15 - 엑셀 VBA #50 / 중복데이터 처리_3 [VBA]

2023.12.16 - 엑셀 VBA #51 / 중복데이터 처리_4 [VBA] - 사용자정의함수

 

 

 

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