본문 바로가기
VBA

[VBA] VAT유저폼(feat. 인천_89_회계_가나)

by 일등미노왕국 2022. 4. 10.

오픈챗 크루인 가나님의 질문이다.

주말인데 어디~~가나~~?

본인이 한달전에 만든코드이다.

클래스 모듈을 모르면 이렇게 되는 것이다.

가나님도 이것때문에 질문을 하신거다...

 

클래스 모듈은 버튼을 큰 형식으로 분류하여 같은 형식인 버튼에 이름을 부여하여 같은 일을 처리할 수 있게 해준다.

다시 말하면 호출된 버튼이 커멘드 버튼이면 클래식 모듈에서 커멘드 버튼이 호출되면 모두 이렇게 처리해

텍스트박스 호출이면 모든 텍스트 박스는 이렇게 처리해...라고 모듈화할 수 있는 것이다.

https://www.youtube.com/watch?v=bqByoL7oLyQ&t=892s 

 

클래스 모듈뿐아니라 코드 기초를 잘 다루고 계신다...초보분들은 꼭 시청해 보시길 바란다.

가나님께서 유저폼에 계산식을 적어 놓으셨다..이거보고 계산이 어떻게 되는지 참고 하면 될것 같다.

각각의 텍스트 박스를 눌러보면서 텍스트 박스의 이름을 확인바란다.

이런 질문이 있을 수 있다.

 

HajaA = Haja1+Haja2+Haja3로 하면되지 굳이 이렇게 해야 되요...라고

이런식으로 하게 되면 실시간으로 계산이 되지 않는다. 그러기에 이벤트로 작업을 하는거구

각 버튼이 너무 많으니까 클래스모듈로 선언하는 것이다.

* 여기서 중요하게 알아야 할 것이 있다. 만약 클래스모듈에 선언된 텍스트박스중에 합계를 나타내는 텍스트박스까지

클래스 모듈로 선언하게 되면 값이 변경되어 이벤트가 발생하여 합계란도 변경이 될텐데 그때 또 이벤트가 발생하기 때문에 무한루프에 걸린다.

 

그러기에,

 텍스트박스의 이름을 [입력되는 부분]과 [합계가 도출될 텍스트박스의 이름]을 기준을 달리하여야 한다.

[입력되는 부분]을 Haja1,Haja2,Haja3.....

[합계가 도출될부분] HajaA, HajaB 또는 HajaTotal....이런식으로 해야된다.

본인은 클래스모듈을 입력되는 부분은 Haja1,2,3,4로 숫자로 이름을 붙혔고, 입력이 되지않고 계산되야 하는 부분은

HajaA,B,C 또는 HajaTotal, HajaTotal2, HajaTota3.... 으로 구분되게 하였다.

 

이렇게 숫자로 값을 순서대로 카운팅한것은 버튼의 값을 분리하여 그 값이 해당하는 부분만 값이 업데이트하기 위함이다.

또하나 유념해야 할것은

하단에 (A+B+C)Sum 구문은 각각의 구문들이 변경이 될때마다 같이 변경되야 함으로 구문에 모두 들어가야 한다.

 

자세히 보면 HajaTotal7과 HajaTotal7_1이 구문3곳에 모두 들어가 있을 것이다. 이게 다잡님이 이야기한 디테일하다는 뜻이다. 

Table 안에는 Id 부분을 제외하고는 숫자 이외에는 입력이 되지 않는 구문이다.

 

나머지는 계속 반복이기에 따로 구문 설명을 하지 안겠다.

코드만 보면 별거 아니다. 실제 타이핑일 힘들다면 아..이런게 있었지는 알고 있다가 이러한 구문이 필요할때 쯤 다시 이 블로그를 찾아 주길 바란다.

 

아참 정말 꿀팁이다.. 이렇게 텍스트박스가 많을때는 창을 전환하면서 계속 작업을 해야하는데 유저폼을 띄어놓으면 다른작업은 할 수가 없다...

이때는 유저폼.show 0이라고 입력하면 된다.

우리가 늘 하던 것은 유저폼.show 인데 여기는 유저폼.show 1이 생략된것이다.

0을 붙히고 유저폼을 호출해보길 바란다..신세계다...ㅋ.ㅋ

Haja_VAT.xlsm
0.05MB

댓글