function (2)
엑셀 VBA #34 / 사용자정의 함수 [VBA]
반응형

엑셀 VBA #34 / 사용자정의 함수 [VBA]

1. 목적 : VBA코딩시 자주 사용되는 수식을 함수화하여 편이성 도모
2. 구조
    Function 함수명(인수1,인수2,....) As 자료형
       ~~~~~
    End Function
함수명 : 워크시트함수와 동일하면 안됨
자료형 예시 : Integer, Long,....

3. 활용
'엑셀 VBA #32 / 자동필터_1 [VBA]'에서 사용한 'rng.SpecialCells(xlCellTypeVisible).Count'을 사용자정의함수로 만들기
 
4. 코드
Dim sh1 As Worksheet
Dim rng As Range

Set sh1 = Sheets("자동필터")
Set rng = Range("A1").CurrentRegion

If sh1.AutoFilterMode = False Then rng.AutoFilter
If sh1.FilterMode = True Then sh1.ShowAllData

rng.AutoFilter 2, Range("E2")

Range("A20").CurrentRegion.Clear
If Fcnt(rng) = 3 Then                            '사용자정의함수 적용
    MsgBox "해당되는 조건의 데이타가 없음"
    Exit Sub
End If

rng.SpecialCells(xlCellTypeVisible).Copy Range("A20")
End Sub

Function Fcnt(rng As Range) As Long
    Fcnt = rng.SpecialCells(xlCellTypeVisible).Count     
End Function

vba#34.xlsm
0.02MB


https://www.youtube.com/watch?v=sVEJnYuYvQE&list=PLfxvqpVCYZ8e0qlyc_FU46neoWjO7yTWj&index=34

반응형
  Comments,     Trackbacks
레이의 VBA 정복기3 - 프로시저의 종류(Sub, Function, Property)알아보기
반응형

사용자 삽입 이미지


프로시저는 실행하는 성격에 따라 Sub, Function, Property로 나눌 수 있다.

프로시저에는
매크로를 작성할 때 많이 보았던 Sub 프로시저와
사용자 정의 함수를 만들 때 사용하는 Function 프로시저가 있다.
그리고 개체의 속성을 정의할 수 있는 Property도 있다.





Sub 프로시저 : 특정한 동작을 실행한다.

VBA로 프로그래밍을 하거나 매크로를 작성할 때 가장 많이 사용하는 프로시저 형태이다. 다음과 같이 Sub로 시작하여 End Sub로 끝나는데, 프로시저를 이용하여 작업할 내용은 Sub와 End Sub사이에 명령문으로 표현한다.

<형식>
Sub 프로시저 이름()
       명령문
       명령문
End Sub





Function 프로시저 : 특정한 계산을 수행하고 그 결과값을 돌려준다.

프로시저 안에 작성된 명령문을 실행하고, 실행한 결과 값을 반환할 수 있는 프로시저이다. 기존 엑셀함수에는 없는 새로운 사용자 정의 함수를 만들 때도 Function 함수를 사용한다.
다음과 같이 Function으로 시작하여 End Function으로 끝나는데, 프로시저를 이용하여 작업할 내용은 Function과 End Function 사이에 명령문으로 표현한다. 이때 결과 값은 프로시저 이름을 이용하여 반환한다.

<형식>
Function 프로시저 이름()
             명령문
             명령문
             프로시저 이름 = 값
End Function







Property 프로시저

개체의 속성에 값을 할당할 때 사용하는 프로시저가 Property이다. 속성 값을 할당할 때는 Property Let()문을 사용하고, 속성 값을 읽어 들일 때는 Property Get()문을 사용한다. 그리고 개체 참조의 값을 반환하기 위해서는 Property Set문을 사용한다.

<형식>
Property Get[Let|Set] 프로시저 이름()
            명령문
            명령문
            [Get인 경우 프로시저 이름 = 값]
End Property


 


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