매크로 문제를 푸는데
매크로 기록, 매크로 저장까지는 모두 잘 되는데
도형(단추)을 삽입하여 그 도형으로 매크로를 연결하여 실행시키면
항상 "컴파일 오류입니다. 구문 오류입니다." 라고 떠요 ㅠㅠ
분명히 수식에는 문제가 없고 하란대로 똑같이 했는데도 그러는데 ㅜ
그리고 옵션에서 보안설정도 모두 매크로 사용가능하도록 변경한 상태거든요 ...
<문제>
[F7:F39] 영역에 대하여 사용자 지정 표시 형식을 설정하는 ‘서식적용’ 매크로를 생성하시오.
▶ 양수일 때 파랑색으로 기호 없이 소수점 이하 첫째 자리까지 표시, 음수일 때 빨강색으로 기호 없이
소수점 이하 첫째 자리까지 표시, 0일 때 검정색으로 “●” 기호만 표시
▶ [개발 도구]-[삽입]-[양식 컨트롤]의 ‘단추’를 동일 시트의 [B2:C3] 영역에 생성한 후 텍스트를
‘서식적용’으로 입력하고, 단추를 클릭하면 ‘서식적용’ 매크로가 실행되도록 설정하시오.
이 문제를 풀었는데 모두 적용 후 단추를 누르면(실행시키면)
컴파일 오류입니다. 구문 오류입니다 라고 뜨고
vba 에서 아래와 같이 나와요... 뭘 수정해야 할지도 모르겠네요 ㅠㅠ
유튜브 보면서 독학중이고 아예 처음 공부하는거라 진짜 기초부터 배우고 있어요 ....
제가 기본적인 것도 모르고 질문하는거면 다 얘기해주셔도 돼요~~ㅜㅜ
Sub 서식적용()
'
' 서식적용 매크로
'
'
Range("F7").Select
Range("F7:F39").Select
. = "[파랑]0.0;[빨강]0.0;"●""
Range("G7").Select
End Sub
문제가 되는 부분은
. = "[파랑]0.0;[빨강]0.0;"●"" <------ 이녀석
위 부분 같은데요. 책에서 지면 관계상 한줄에 적기 힘들때 저렇게 두줄로 나누어 적을때 책에서
위와 같은 표현을 사용합니다.
그걸 한줄로 적는게 오류를 줄이는 길입니다.
그러니깐.
Range("F7:F39").Select = "[파랑]0.0;[빨강]0.0;"●""
기본적으로는 이게 맞는거구요...
근데 여기도 틀린게
"●"" 이것도 ""●""" 이렇게 해야 맞습니다.
필요한 셀서식 자체가
[파랑]0.0;[빨강]0.0;"●" 딱 이녀석인데
이녀석 앞 뒤로 "(쌍따옴표)를 붙이면 안쪽에 있는 상따옴표가 기능이 애매해 집니다.
="[파랑]0.0;[빨강]0.0;"●"" 그러니깐 이렇게 적으면 점 앞 뒤의 쌍따옴표가
출력을 위한 서식의 것인지 문자열을 감싸기 위한 용도인지 애매해 집니다.
쉽게 정리하면 실제 쌍따옴표를 사용하고 싶다면
연속으로 쌍따옴표 2개를 사용하는게 맞습니다.
그래서
="[파랑]0.0;[빨강]0.0;""●""" 이게 정확한 표현이 됩니다.
그리고 셀 서식 지정을 위해서는
Range("F7:F39").Select
Selection.NumberFormatLocal = "[파랑]0.0;[빨강]0.0;""●"""
이게 맞는표현 같습니다.
아니면
Range("F7:F39").NumberFormatLocal = "[파랑]0.0;[빨강]0.0;""●"""
이렇게 바로 한줄로 작성을 하셔도 되구요.
Range("F7:F39").Select = "[파랑]0.0;[빨강]0.0;"●""
위 표현에서
Range("F7:F39").Select 이렇게 사용하셨는데요 이건 셀을 선택하란 것이고
어떤 값(서식)등을 넣을수가 없습니다.
.Select 이녀석은 영어 그대로
단지 선택하라는 명령일 뿐입니다.
만약에 책에서 제시한 정답을 입력한 것이라면
책 사진찍어서 올려봐 주시면
다시한번 검토해 보도록 하겠습니다.
ps : 자동 매크로 기록 기능을 이용하신뒤
위와 같이 생성된거라면 저랑 엑셀 버전이 달라서 조금 다른 표현이 사용되었을수도 있습니다.
어찌되었든 작동에 문제가 있는것은 사실입니다.(제가 아는 범위내에서는 저렇게 기록될수가 없는것 같은데요. ㅎㅎ)
도형 연결시에만 그런것이라면
도형연결없이
바로 매크로 실행해보시고 테스트 해보시는것도 방법입니다.