나눔터  
  HOME > 나눔터 > 묻고답하기 > 엑셀
엑셀
엑셀에 대한 질문과 답변을 올려주세요. 단, 취지에 맞지 않는 글은 운영자가 삭제합니다.
 "000 님, 도와주세요", "부탁 드립니다.", "급합니다!" 등과 같이 막연한 제목을 달지 말아주세요.
[필독] 빠르고 정확한 답변을 얻는 16가지 Tip !
[필독] 저작권법 개정에 따른 이용안내
작성자:  

 김영진 (snakesolid)

추천:  2
파일:     제목 없음[13].jpg (219.3KB) 조회:  3852
제목:   [RE]답변 감사합니다~
     
  다시 써주신것은 처음꺼하고 조금 틀리네요;;
주석교육을 위한것인가요? 감사합니다 ㅎㅎ
아래 이미지처럼 비교할 셀을 100개정도 늘려버리니까  
a1 = Range("A1").Value 이 부분이 디버그 뜨면서   28 스탯공간부족
이라고 뜨는군요
검색해보니 무한반복되서 나오는 재귀적 어쩌구 에러라는데 님께서 알려주신 
주석보면서
Static a0 As Variant
Dim a1 As Variant
 이부분 이리저리 만져봐야겠네요 (아니면 코드가 100줄이 넘어서 어쩔수 없는 부분일까요?;;)

아 그리고 이상한 부분이 있는데 수동으로 재생버튼을 누르면 값 바뀌기 전까지는 1만 올라가면서 막상 실시간으로 변하는 값을 넣으면 값이 유지되도
 한번만 올라가긴 하지만 정확히 1씩 올라가는게 아니라 96씩이 더해지네요.
이건 뭔가 컴퓨터 연산의 고질적인 문제인건가요?
눈으로 볼땐 짧지만 컴퓨터입장에서 뭔가(?)96번이 반복되어 나타나는 현상같은데 주석 참고해서 이것저것 바꺼보겠습니다.

감사합니다~
 
[불량 게시물 신고]  
조삿갓100개의 값과 비교하려면 앞에 답변 코드처럼 For 반복문을
사용하셔야지, 그렇게 일일이 100줄의 코드를 집어 넣는 것은
'컴퓨터'가 아닙니다.

그리고, 값을 변경하는 셀이 100개가 되면 그 100개의 셀이
변경될 때마다 Calculate 이벤트가 발생하여 해당 프로시저가
종료되지 않은 채로 계속 호출(재귀호출이라고 합니다.)되기 때문에
그래서 스택공간이 부족하게 되는 것입니다.

제가 써 드린 두 번째 코드에 보면
Application.EnableEvents = False 명령이 들어 있는 것을
볼 수 있습니다. 이 명령이 들어가야 스택공간 오류가
나오지 않습니다.
단, 프로시저 끝나는 부분에 다시 이 값을 True로
환원시켜 주어야 합니다.

답변 코드를 건성으로 보지 마시고 주의깊게 보시기 바랍니다
(주석까지 달아드린 성의를 봐서라도...)

프로그램이 정말 의도한대로 작동하는지는
실제 사용하시는 엑셀 파일을 보아야 알 수 있겠네요
06-15 (22:52)
삭제 ■신고
김영진감사합니다!!!의도한대로 잘 작동하네요.원래 저게 천개정도 감시하는걸 원했는데 천줄 붙여넣기 할 자신 없어서 100개만 집어넣은건데 저런 반복문이 있다니...정말 신기하네요.방금 1 to 1234로 전부 감시할수있게 만들었습니다.
알려주신 코드도 이것저것 바꺼보면서 어떤 역할을 하는지 뜯어보고 있습니다. 저것 말고도 일치했을때 wav파일 실행시켜서 음성으로 감지시키는

ExecuteExcel4Macro 도만들었는데 이것도 값이 유지되면 한번만 울리는게 아니라 계속 울리더군요.(이런걸 재귀호출이라고 보는건가요?) 님께서 앞서 알려주신 a1 <> a0 이런거나애플리케이션 언블 이벤트로 이것저것 바꿔보면서 테스트해보고 있습니다. 감사합니다~~
06-16 (18:44)
삭제 ■신고
        
  

작성일 : 2017-06-15(10:27)
최종수정일 : 2017-06-15(10:27)
 


 ◎ 관련글

  제 목   작성자   날짜
VBA 실시간 누적함수 오류 김영진 2017-06-14
[RE]VBA 실시간 누적함수 오류 조삿갓 2017-06-14
[RE]답변 감사합니다~ 김영진 2017-06-15