728x90
320x100

 

VBA를 써서 가장 많이 하는 일중 하나는 함수를 만드는 것입니다.

엑셀에서 없는 함수를 한번 만들어서 문서에 저장해두면 여러 번 사용할 수 있습니다.

 

 

① 개발도구를 엽니다.

 

개발도구를 활성화 시키는건 링크 참고바랍니다.

(링크 : 엑셀(EXCEL) 개발 도구 활성화하고 VBA 시작하기, Visual Basic Application 에디터 열기)

활성화된 [개발도구] 탭에서 [Visual Basic]을 선택합니다.

 

개발도구

 

 

② 모듈을 추가합니다.

 

보통 프로젝트 탐색기가 열려있습니다.

하지만 닫혀 있다면, [상단매뉴] - [보기] - [프로젝트 탐색기]를 활성화 시키면 됩니다.

그리고 VBAProject를 오른쪽 클릭해서 [삽입] - [모듈]을 만듭니다.

 

새 모듈 만들기

 

 

③ 새 모듈을 활성화 시킵니다.

 

열면 활성화 됩니다.

더블클릭해서 열 수도 있습니다.

 

모듈 활성화 하기

 

 

④ 이제 소스코드를 입력합니다.

 

"Function 함수명(매개변수) 리턴 형식"으로 프로젝트를 열면 함수로 입력됩니다.

 

Function Changestar(inputString As String) As String
    Dim outputString As String
    Dim i As Integer
    Dim charCount As Integer
    
    q = 3    '"*"으로 변경할 확률입니다. 1이면 100%, 숫자가 커질수록 확률이 낮아 집니다.
    k = 1
   
    For i = 1 To Len(inputString)
        If Mid(inputString, i, 1) <> " " Then ' 공백 문자는 변경하지 않음
            charCount = Int((q * Rnd()) + 1)    '랜덤함수는 1, 2, 3 ~ q까지입니다.
            outputString = outputString & IIf(charCount = 1, "*", Mid(inputString, i, 1))   'charCount가 1이면 글자가 *로 바뀝니다.
            k = k + IIf(charCount = 1, 1, 0)
        Else
            outputString = outputString & Mid(inputString, i, 1)
        End If
    Next i
    
    If k = 1 Then   '하나도 변하지 않을 때는 첫번째 글자 하나만 *으로 변경합니다.
    
        outputString = "*" & Right(outputString, Len(outputString) - 1)
    
    End If
    
    
    Changestar = outputString '출력할 값을 지정합니다.
End Function

 

 

⑤ 함수를 확인합니다.

 

이제 엑셀 시트에가서 함수를 확인합니다.

새로운 함수를 인식하고 바로 고침해주고 

 

함수가 작동합니다.

 

예시01.xlsm
0.02MB

 

 

 

 

반응형

+ Recent posts