로그인 유지
이 게시판은 아별닷컴 회원만 질문을 올릴 수 있습니다. 회원에게 주어지는 특권인셈이지요. 회원이 아닌 분들은 열람만 가능합니다.
2012.02.14 11:08
엑셀대단해님.. 안녕하세요?
음..
기존 열려 있는 폼을 인식해서 닫고 싶으시다구요?
일단.. 대단해님이 전문 프로그래머가 아니시라는 가정하에..
단순한 방법을 알려드리겠습니다. 프로그래머가 본다면 무식한 방법이라고도 할 수 있지요.. ^_^;;
하지만 제일 단순하고 쉽습니다.
어떤 폼을 열기 전에 아래와 같이 열려 있을 수 있는 유저폼을 전부 닫아버린 다음.. 새로운 유저폼을 Show해주면 됩니다.
if문을 이용해서 조건을 넣을 수도 있구요.. 쉽지요? ㅎㅎ
Sub unloadAllUserForms()
On Error Resume Next
If ActiveSheet.Name <> "abyul1" Then Unload ufrmAbyul1
If ActiveSheet.Name <> "abyul2" Then Unload ufrmAbyul2
If ActiveSheet.Name <> "abyul3" Then Unload ufrmAbyul3
If ActiveSheet.Name <> "abyul4" Then Unload ufrmAbyul4
If ActiveSheet.Name <> "abyul5" Then Unload ufrmAbyul5
On Error GoTo 0
End Sub
== 절 취 선 ==============================================
자.. 위에껀 사실 꼼수구요..
열려있을 수 있는 유저폼이 몇 백개 된다면.. 프로그램 효율이 떨어지겠지요?
솔직히 몇백개가 안되면 위와 같이 하셔도 별 문제 없습니다.
암튼.. 제대로 프로그래밍하려면 어떻게 해야하냐면요..
엑셀 VBA 자체의 기능으로는 안되구요.. Windows API를 사용하셔야합니다.
GetActiveWindow 함수를 이용해서 현재 활성창이 유저폼이면 닫아버린다든가.. 하면 되겠습니다.
또는 FindWindow 함수를 활용해 볼 수도 있구요..
API에 대해서는 개인적으로 공부를 하셔야할 겁니다.
제가 처음 API를 공부할때 자료들을 정리한 게시물이 있는데 그걸 참고해서 공부해보세요..
http://www.abyul.com/zbxe/71223
머.. VBA 프로그래밍에 재미를 느끼신다면 한번 API를 공부해보시구요..
그렇지 않다면.. 저 위에 설명해 드린 방법으로 구현하세요..
도움이 되셨기를.. ^^
새 창으로
선택한 기호
엑셀대단해님.. 안녕하세요?
음..
기존 열려 있는 폼을 인식해서 닫고 싶으시다구요?
일단.. 대단해님이 전문 프로그래머가 아니시라는 가정하에..
단순한 방법을 알려드리겠습니다. 프로그래머가 본다면 무식한 방법이라고도 할 수 있지요.. ^_^;;
하지만 제일 단순하고 쉽습니다.
어떤 폼을 열기 전에 아래와 같이 열려 있을 수 있는 유저폼을 전부 닫아버린 다음.. 새로운 유저폼을 Show해주면 됩니다.
if문을 이용해서 조건을 넣을 수도 있구요.. 쉽지요? ㅎㅎ
Sub unloadAllUserForms()
On Error Resume Next
If ActiveSheet.Name <> "abyul1" Then Unload ufrmAbyul1
If ActiveSheet.Name <> "abyul2" Then Unload ufrmAbyul2
If ActiveSheet.Name <> "abyul3" Then Unload ufrmAbyul3
If ActiveSheet.Name <> "abyul4" Then Unload ufrmAbyul4
If ActiveSheet.Name <> "abyul5" Then Unload ufrmAbyul5
On Error GoTo 0
End Sub
== 절 취 선 ==============================================
자.. 위에껀 사실 꼼수구요..
열려있을 수 있는 유저폼이 몇 백개 된다면.. 프로그램 효율이 떨어지겠지요?
솔직히 몇백개가 안되면 위와 같이 하셔도 별 문제 없습니다.
암튼.. 제대로 프로그래밍하려면 어떻게 해야하냐면요..
엑셀 VBA 자체의 기능으로는 안되구요.. Windows API를 사용하셔야합니다.
GetActiveWindow 함수를 이용해서 현재 활성창이 유저폼이면 닫아버린다든가.. 하면 되겠습니다.
또는 FindWindow 함수를 활용해 볼 수도 있구요..
API에 대해서는 개인적으로 공부를 하셔야할 겁니다.
제가 처음 API를 공부할때 자료들을 정리한 게시물이 있는데 그걸 참고해서 공부해보세요..
http://www.abyul.com/zbxe/71223
머.. VBA 프로그래밍에 재미를 느끼신다면 한번 API를 공부해보시구요..
그렇지 않다면.. 저 위에 설명해 드린 방법으로 구현하세요..
도움이 되셨기를.. ^^