안녕하세요, 엑셀 고수 형님들!
매크로를 이용해서 엑셀의 데이터 유효성 검사 목록을 자동으로 펼치게 하려고 노력중인데요..
If Me.Range("AA" & tempRow).Value = "" Then
Select Case v
Case "단볼", "수"
c.Validation.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, _
Operator:=xlBetween, Formula1:="=" & v
DoEvents
Sleep 100
c.Validation.InCellDropdown = True
DoEvents
c.Select
Application.SendKeys "%{DOWN}", True
DoEvents
Sleep 100
Application.SendKeys "+{ }", True
End Select
위 매크로처럼 시간도 두고, 다시 되돌리기까지 하지만..
드롭다운 펼치기가 자꾸 튕기거나, 작동되지 않거나, num lock이 꺼지는 등의 문제가 발생합니다. sendkeys의 고질적인 버그라고 들었는데요. 어떻게 해야 안정적으로, 그리고 자동적으로 펼치게 할 수 있을까요?
혹시나 컴 시스템에 영향을 줄 정도로 유효성 검사를 펼치려고 하는 이유를 물어봐도 될까요?
견적서를 작성하려는데, 거기에 들어가는 품목명을 한번에 다 작성하는 게 오래 걸려서 쉽게 가려고 합니다. 가령, A라는 품목명을 하나 쓸 때도, 거기에 들어가는 부수적인 조건 B,C,D까지 총 4단계를 거쳐서 골라야 하는데, 일일이 쓰자니 번거로워서 다단계 드롭다운을 형성해 쉽게 가면 어떨까 해서 작업 중입니다.. ㅜ
2번 클릭을 1번만으로 가능하게 미리 펼쳐 놓는다는 말씀인가보네요.
샘플 파일이 있으면 저도 배울 겸 보고 싶네요. 신박한 아이디어입니다.
허허.. 보여드리고 싶어도, 이전처럼 작동하지 않는 터라 의미가 없을 듯 합니다. 그래도 만들어진 방식을 간략하게 말씀드리면,,(혹시나 방법을 아실 듯 하여..)
두 개의 시트가 있습니다. 한 시트는 견적서 시트고, 다른 시트는 품목명을 작성하기 위한 정보가 들어 있는 시트입니다. 정보가 들어있는 시트는 이름 정의를 사용하여 여러 정보들을 나름의 규칙으로 묶어 놓았는데요.
가령, 이런 식입니다. 견적서 시트의 특정 셀(매크로 작동 조건에 해당되는)에 '수'라는 단어를 치고 엔터를 누르면, 셀 이동을 매크로 발동 조건으로 하여, 정보가 들어있는 시트에서 '수'에 해당하는 이름 정의 목록을 가져와 '수'를 친 셀에다가 드롭다운 목록을 만듭니다. 이후, Alt + down을 눌러 자동으로 펼치게 합니다.
다단계 드롭다운 형성도 비슷합니다. 이름 정의가 된 목록을 계속 가져와 덧붙이고, Alt + down으로 열고.. 반복..반복.. 입니다. 그렇게 선택된 값들은 다른 셀에 임시 저장된 상태로 존재하다가 마지막 선택 이후 합쳐져서 '수'를 친 셀에 합쳐진 값으로 나타납니다.
여기서 문제는, alt + down의 불안정성입니다. 레딧에서 보니까, sendkeys의 고질적 문제가 numlock이 자동으로 꺼지고 켜지고 하는 거라고 하더군요. 저도 그랬습니다. 그런데 이 문제는, alt + ^ 로 나름 해결했었는데요. 그 다음에 생긴 문제는 튕김 현상입니다.
어느 순간부터, '수'를 치고 엔터를 누르면 드롭다운이 펼쳐지지 않고 튕기더군요. 원래도 조금 그랬습니다만, 여러 매크로를 추가하다 보니 더 심해졌습니다. 그래서 시간차를 두려고 sleep 100이나 doevents 따위를 넣어 보았지만, 소용이 없더군요..
전능하신 Ai께서는 콤보박스를 활용하라고 하지만, 제가 쓸 줄 몰라서 선뜻 시도하기가 어렵습니다. 동시에 저 또한 VBA를 잘 몰라서, 어쩌면 쉽게 할 수 있는 방법이 있음에도 너무 돌아가나 싶기도 합니다. 뭐가 됐든.. 파일을 보여드리면 좋은데, 말로 밖에 설명 드릴 수 없는 점 죄송합니다. . ㅜ
장문의 설명 감사합니다. 천천히 읽어 보겠습니다. 감사합니다~