본문 바로가기

프로그래밍(Programing)/엑셀매크로_vba(Excel-Macro)

Option explicit 묵시적 변수 명시적 변수

오늘, 저의 무지를 다시 한번 더 알아차리고 갑니다. 

 

어후..  

 

나중에 프로그램이 완성되면 쓸려 했지만 오늘 했던 삽질을 잊지 않기 위해 기록하려고 합니다.

 

이 문제를 빨리 알았으면 1시간? 2시간? 퇴근을 더 빨리 할 수 있었는데 ㅜ . ㅜ 알지 못하고 사용한 나의 책임이죠.

 

위의 제목같은 이유로 문제였는데, 

 

(다 만들어지면 세세히 보이겠습니다.)

1. 만들려던 프로그램이,  좌표(X,Y) 점을 여려개 가진 하나의 선(가지가 많은 나뭇가지?나무?분기점이 많음, 트리구조)을

하나의 키(나무의 뿌리? 나뭇가지 손잡이?)를 따라  전위구조같은 식으로 순서로 정렬을 해놓고 길이 값을 측정하는 프로그램을 만드는데.

 

2. 기존 방식(if for 엑셀 함수lastrow )쉬운기능만  사용으로는 도저히(될거같은데 안되네..) 안되서

Function , 전위(root-left-right)알고리즘, goTo, 배열, 스택(stack)  이것저것 찾다

 

스택을 이용해서 분기점(2곳이상나뉘는곳)을 스택으로 저장해 한 분기가 끝나면 빼고 다음 분기점 시작하게 하려고 했다.

 

3. 연습용 스택(책으로만 봤지 직접쓸줄이야..)을 사용할때는 잘 나왔는데 실제쓸 곳에 코딩하니 게속 

 

아-오 좋아

예전에는 변수에 일일히 명시안해도(dim 변수 as 타입) 되는 엑셀이 너무 편했는데 

이게 게속 떠서 '내가 뭘 잘못 만졌나?' 생각하고 특히 

 

lastrow로 행의 개수 구한것을

 

lastrow = Sheet2.Cells(Rows.Count, 2).End(xlUp).Row
    
Const MAXI = lastrow  '상수에 변수 lastrow 지정

 

여기서 게속 디버그걸려서 모니터를 노려봤다.

 

4. 퇴근할때 되서야 알아차린게

저 스택 구조를 가지고온곳에서 위에 

Option Explicit 있어서 안되는거 였다.

 

막 가져다 쓰고 알지도 못하고 쓰니 2시간이나 잡아먹는 헛수고를 하게되었다...

 

앞으로도 필요한것을 찾고 쓰게되면 이런일이 적게 나게 머리써야겠다.

 

스택구조 참조

https://ruahneuma.tistory.com/49

728x90