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"")"
원래 쌍따옴표때문에, 복잡한 수식인데, 더 복잡해 졌다.
결국, 아래와 같은 수식을 완성하고,
실행해보면, 잘 실행이 되고, 하이퍼링크 기능도 잘 된다.
그냥 생각만으로 썼는데, 더 쉬운 방법을 알고 계신다면, 그거 사용하시면 될듯 ㅋㅋ