본문 바로가기
WeekdayLife/excel

[엑셀VBA] VBA에서 worksheetfunction에 없는 엑셀함수 사용하기

by JO_i 2019. 12. 3.

VBA에서 worksheetfunction에 없는 엑셀함수 사용하기

application.worksheetfuction 을 사용하면, 왠만한 엑셀함수를 VBE에서 사용할수 있다.

문제는 당연히(?) 없는 함수도 있다는 점인데, 그냥 생각해보면 VBA에서 셀에다가 그냥 수식 텍스트가 입력되게 하면 될 것 같다.... 확신은 없지만..

 

 

우선, worksheetfuction을 써보자.

Cells(1, 2).Value = Application.WorksheetFunction.Sum(1, 2)

 

요 식은

=sum(1,2)

이런 텍스트를 쳤을때와 동일한 효과일 것이다.

이런 형태의 수식을 적어보는건 어떨까..?

=HYPERLINK("#'"&"Sheet2"&"'!A1","GO")

 

 

1. 특수문자 처리.

: 특수문자는 쌍따옴표 안에 넣어 텍스트로 처리하거나, (=, &, ! 등) chr 함수로 사용할 수 있다. char함수는 엑셀함수에서 아스키코드를 반환하게 되는데, 마찬가지로 vba에서는 chr로 기재를 해줘야 한다.

 

수식이 길어지면 헤깔리기 때문에, 나의 경우에는 chr함수를 사용하는 쪽으로 작성했다.

예를 들어, 첫 서두에,

=HYPERLINK(" 

까지를

 

이렇게 써도 되고, 

"=HYPERLINK("""

이렇게 써도 된다는 뜻이다.

Chr(61) & "HYPERLINK("""

 

 

2. 쌍따옴표 처리.

: 쌍따옴표는 이전 글(https://sunnybong.tistory.com/258)에도 쓴것처럼, 쌍따옴표 안에 넣어 텍스트 형태로 인식시키려면 " "" " 두개를 넣어주면 된다.

 

이런식으로 변환하게 되면 아래와 같다.

** 하이퍼링크 함수이기 때문에 이런식으로, 미리 txt 변수를 만들어 주었다.

Dim txt As String

txt = Cells(2, 4).Value

 

 

한줄로 쓰면 이런식이 되겠다.

Chr(61) & "HYPERLINK(""" & Chr(35) & "'""" & Chr(38) & """" & txt & """" & Chr(38) & """'!A1"",""GO"")"

 

원래 쌍따옴표때문에, 복잡한 수식인데, 더 복잡해 졌다. 

 

결국, 아래와 같은 수식을 완성하고, 

 

 

실행해보면, 잘 실행이 되고, 하이퍼링크 기능도 잘 된다.

 

 

그냥 생각만으로 썼는데, 더 쉬운 방법을 알고 계신다면, 그거 사용하시면 될듯 ㅋㅋ