'VBA'에 해당되는 글 1건
[글강, 2005/11/11 03:59, Life]
혹시나 이 허접한 블로그에 들르는 분들 중에 게임 기획자를 꿈꾸고 계신 분들이 있다면... 그분들께 일단 올리는 한 말씀...
에... MS오피스를 구성하는 놈들 중에 어느 녀석과 특히 친해져야 하냐고 물으신다면... 전 제품군이랑 다 친해지셔야만 합니다 -_-/
미리미리 숙련해 두세요 -_-/
... 하지만 MS오피스를 사랑하지는 마세요.
아니 사랑하게 될거라곤 애초에 믿지도 않습니다 -_-;
(대체 오피스 어플리케이션군에 대해서라면 일단 논외로 칩니다 ~_~)
요즘들어 주로 사용하는 엑셀이라는 놈은 참... 잘 만들었다는 것까지는 인정해 주겠다. VBA라는 매우 쉬운 스크립트를 활용하여 오만잡다한 업무 처리가 가능하다는 점도 높게 사주겠다.
하지만... 그러나... -_-
이 엑셀에 포함된 VBA라는 놈이 다루면 다룰수록 미칠듯이 미묘하다.
엑셀 VBA의 내장 함수 중에는 Str(number)라는 놈이 있다. 이 함수의 역할은 숫자값인 number를 문자값으로 변환해주는 역할...
즉,
A = Str(123456)
이라고 하면 A의 값은 string인 "123456"이 되는 것이다.
그러나... 우리의 미묘하신 VBA 사마께서는... 이놈을 곱게 "123456"으로 두지 않으신다.
이거이 버그인건지, 아니면 무슨 의도가 있는건지... 영문을 모르겠지만 A = " 123456"이 되어버리는 것이다. 앞에 공백이 한칸 들어간다 -_-;;;
... 이놈의 공백이 대체 왜 들어가는 거지??? 뭐에 쓰라는겨??? 덕분에 이 공백을 없애주는 수고가 한번 더 들어가 버린다.
이런 때를 위해 준비되었... 다고 믿었던 함수 등장.
Trim(string)
이 함수의 역할은 string 내에 포함된 공백을 없애주는 것이다. 오 그럼 Str(number)의 저 알 수 없는 문제는 이 함수로 해결될...
리가 있나!!!
이 Trim(string)이라는 놈도 졸라리 미묘한 것이,
A = Trim(" 트림 바보 ")
라고 하면... A = "트림바보"가 되는 것이 아니라, A = "트림 바보"가 되어버리는 것이다!!! 또 공백이 한칸!!!
이런 ㅁㅇ호잏믈일앞 ㅡㅁ미ㅏㄹㅇㅁㅎ이!!!
즉 Trim(string)은 'string에 포함된 공백 중 외곽의 공백만을 없애주는 역할'이었던 것이다 -_-;;;
심지어 매뉴얼에는 '한칸의 공백만을 남깁니다'라고 친절하게 설명되어 있기도.... 하지만 "트림 바보 멍청이"같은걸 Trim에 넣고 한바퀴 돌리면... 그대로 "트림 바보 멍청이"가 나온다. 공백이 2칸인데???
... 아니 그럼 대체 무슨 함수를 써야 문자열 내에 포함된 '모든' 공백을 날려버릴 수 있는거야???
... VBA에 포함된 모든 내장함수 목록을 살펴봤으나... 구글 사마께 여쭤보기도 했으나... 답을 못찾았다 -_-;;;
설마 정말 없는걸까? -_-; 마이크로소프트는 공백에 그렇게도 깊은 애정을 가지고 있어서 절대 없애지 못하게끔 해놓은 것일까???
그러다 찾아낸 것이 Replace() 함수.
역할은 이름 그대로 문자열 내에서 특정 문자를 찾아낸 후 다른 문자로 치환해주는 것이다.
즉, " "을 찾아내서 ""로 바꿔주면 된다는 이야기지!
그래서 드디어 해결을 보는구나! 룰루랄라 코드 적어놓고 실행!
... 에러!
얼라료? 이번엔 뭐가 불만인건데??? 음? 형식이 틀리다고??? 아니 무슨 형식이???
아 역시 미칠듯이 미묘한 우리의 VBA 사마...
알고보니 엑셀에서 자동적으로 접속해 긁어오는 온라인 매뉴얼과, 엑셀 내부에 자체 포함되어 있는 매뉴얼의 내용이... 틀리다 -_-;
REPLACE(old_text,start_num,num_chars,new_text)
... 이것은 온라인 매뉴얼에 나와있는 Replace()의 구문 설명.
Replace(expression, find, replace[, start[, count[, compare]]])
... 이것은 엑셀에 자체 포함된 매뉴얼에 나와있는 Replace()의 구문 설명.
... 인수가 전~~~~~~~~~~~~~~~~~~~~~~혀 틀리잖아!!!
이런 시밤바 대체 어느걸 믿으라는 거야 -_-;
결국 정답은 아래의 방식. 아니 그럼 위에 있는 구문은 대체 어디 써먹는건데 엑셀 매뉴얼에 뜨는거지? ;;;
그리하야... 코드 작성은 2~3시간 만에 끝내놓고는... 4시간여에 걸쳐 저놈의 몇몇 구문 수정에 매달리다 보니... -_-;;;
결국 집에 못들어갔다 OTL 지금은 새벽 4시 ;ㅁ;
조엘 아저씨, 엑셀 개발팀이었다고 했죠?
당신 나한테 감점이야!!!
MS오피스와 친해지셔야 합니다.
매우 친해지셔야 합니다.
절대로 친해지셔야 합니다.
수많은 밤을 MS오피스와 함께 열정적으로 하얗게 불태우고도, 질리지 않을 정도로 친해지셔야만 합니다.
매우 친해지셔야 합니다.
절대로 친해지셔야 합니다.
수많은 밤을 MS오피스와 함께 열정적으로 하얗게 불태우고도, 질리지 않을 정도로 친해지셔야만 합니다.
에... MS오피스를 구성하는 놈들 중에 어느 녀석과 특히 친해져야 하냐고 물으신다면... 전 제품군이랑 다 친해지셔야만 합니다 -_-/
미리미리 숙련해 두세요 -_-/
... 하지만 MS오피스를 사랑하지는 마세요.
아니 사랑하게 될거라곤 애초에 믿지도 않습니다 -_-;
(대체 오피스 어플리케이션군에 대해서라면 일단 논외로 칩니다 ~_~)
요즘들어 주로 사용하는 엑셀이라는 놈은 참... 잘 만들었다는 것까지는 인정해 주겠다. VBA라는 매우 쉬운 스크립트를 활용하여 오만잡다한 업무 처리가 가능하다는 점도 높게 사주겠다.
하지만... 그러나... -_-
이 엑셀에 포함된 VBA라는 놈이 다루면 다룰수록 미칠듯이 미묘하다.
엑셀 VBA의 내장 함수 중에는 Str(number)라는 놈이 있다. 이 함수의 역할은 숫자값인 number를 문자값으로 변환해주는 역할...
즉,
A = Str(123456)
이라고 하면 A의 값은 string인 "123456"이 되는 것이다.
그러나... 우리의 미묘하신 VBA 사마께서는... 이놈을 곱게 "123456"으로 두지 않으신다.
이거이 버그인건지, 아니면 무슨 의도가 있는건지... 영문을 모르겠지만 A = " 123456"이 되어버리는 것이다. 앞에 공백이 한칸 들어간다 -_-;;;
... 이놈의 공백이 대체 왜 들어가는 거지??? 뭐에 쓰라는겨??? 덕분에 이 공백을 없애주는 수고가 한번 더 들어가 버린다.
이런 때를 위해 준비되었... 다고 믿었던 함수 등장.
Trim(string)
이 함수의 역할은 string 내에 포함된 공백을 없애주는 것이다. 오 그럼 Str(number)의 저 알 수 없는 문제는 이 함수로 해결될...
리가 있나!!!
이 Trim(string)이라는 놈도 졸라리 미묘한 것이,
A = Trim(" 트림 바보 ")
라고 하면... A = "트림바보"가 되는 것이 아니라, A = "트림 바보"가 되어버리는 것이다!!! 또 공백이 한칸!!!
이런 ㅁㅇ호잏믈일앞 ㅡㅁ미ㅏㄹㅇㅁㅎ이!!!
즉 Trim(string)은 'string에 포함된 공백 중 외곽의 공백만을 없애주는 역할'이었던 것이다 -_-;;;
심지어 매뉴얼에는 '한칸의 공백만을 남깁니다'라고 친절하게 설명되어 있기도.... 하지만 "트림 바보 멍청이"같은걸 Trim에 넣고 한바퀴 돌리면... 그대로 "트림 바보 멍청이"가 나온다. 공백이 2칸인데???
... 아니 그럼 대체 무슨 함수를 써야 문자열 내에 포함된 '모든' 공백을 날려버릴 수 있는거야???
... VBA에 포함된 모든 내장함수 목록을 살펴봤으나... 구글 사마께 여쭤보기도 했으나... 답을 못찾았다 -_-;;;
설마 정말 없는걸까? -_-; 마이크로소프트는 공백에 그렇게도 깊은 애정을 가지고 있어서 절대 없애지 못하게끔 해놓은 것일까???
그러다 찾아낸 것이 Replace() 함수.
역할은 이름 그대로 문자열 내에서 특정 문자를 찾아낸 후 다른 문자로 치환해주는 것이다.
즉, " "을 찾아내서 ""로 바꿔주면 된다는 이야기지!
그래서 드디어 해결을 보는구나! 룰루랄라 코드 적어놓고 실행!
... 에러!
얼라료? 이번엔 뭐가 불만인건데??? 음? 형식이 틀리다고??? 아니 무슨 형식이???
아 역시 미칠듯이 미묘한 우리의 VBA 사마...
알고보니 엑셀에서 자동적으로 접속해 긁어오는 온라인 매뉴얼과, 엑셀 내부에 자체 포함되어 있는 매뉴얼의 내용이... 틀리다 -_-;
REPLACE(old_text,start_num,num_chars,new_text)
... 이것은 온라인 매뉴얼에 나와있는 Replace()의 구문 설명.
Replace(expression, find, replace[, start[, count[, compare]]])
... 이것은 엑셀에 자체 포함된 매뉴얼에 나와있는 Replace()의 구문 설명.
... 인수가 전~~~~~~~~~~~~~~~~~~~~~~혀 틀리잖아!!!
이런 시밤바 대체 어느걸 믿으라는 거야 -_-;
결국 정답은 아래의 방식. 아니 그럼 위에 있는 구문은 대체 어디 써먹는건데 엑셀 매뉴얼에 뜨는거지? ;;;
그리하야... 코드 작성은 2~3시간 만에 끝내놓고는... 4시간여에 걸쳐 저놈의 몇몇 구문 수정에 매달리다 보니... -_-;;;
조엘 아저씨, 엑셀 개발팀이었다고 했죠?
당신 나한테 감점이야!!!
|
Trackback Address :: http://glekang.com/trackback/166
|

















