728x90
아래 첨부 파일은 매크로 [실행] 버튼을 클릭하면 [I1] 셀에 유효성 검사 목록을 설정합니다.
실제로 정상적으로 작동은 되는데, 저장하고 다시 열면 아래와 같이 문서 복구가 진행이 됩니다.
사용된 코드는 매우 간단해서 아래와 같습니다.
Sub test()
Dim strText As String
Dim int1 As Integer
With CreateObject("Scripting.Dictionary")
For int1 = 2 To 21
If Not .Exists(Cells(int1, 2)) Then .Add Cells(int1, 2), ""
Next int1
strText = Join(.keys, ",")
End With
With Range("I1").Validation
.Delete
.Add xlValidateList, xlValidAlertStop, xlBetween, strText
End With
End Sub
아무런 오류도 발생하지 않고, 매크로 실행후에도 유효성 검사가 정상적으로 작동하는데 어떻게 된 것일까요???
유효성 검사에 등록할 값은 10개의 목록이 2번 중복되어 있어서
Dictionary를 이용해서 10개만 남긴 후에 휴효성 검사 목록에 넣는 것인데,
실제로는 20개가 그대로 모두 등록이 됩니다.
왜 그럴까요?
Dictionary를 개체 변수를 할당하여 Debug 해 봅니다.
어라... Range Object 개체가 통으로 Dictionary의 Key로 등록이 되었네요...
Dictionary에 개체도 key로 등록이 되는군요...
이제 오류가 발생하지 않도록 Cells.Value2 로 수정된 코드를 시험해 봅니다.
Sub test()
Dim strText As String
Dim int1 As Integer
With CreateObject("Scripting.Dictionary")
For int1 = 2 To 21
If Not .Exists(Cells(int1, 2).Value2) Then .Add Cells(int1, 2).Value2, ""
Next int1
strText = Join(.keys, ",")
End With
With Range("I1").Validation
.Delete
.Add xlValidateList, xlValidAlertStop, xlBetween, strText
End With
End Sub
생각했던 대로 String 값으로 Key에 잘 등록되었고, 중복검사도 잘 되어 10개만 남았네요...
이제는 저장을 하고 열어도 문제 없이 제대로 열립니다.
728x90
'Excel - Sample' 카테고리의 다른 글
양력과 음력, 율리우스력 변환표 (기원전 59년부터 2100년까지) (0) | 2024.06.30 |
---|---|
[Excel] Microsoft 365의 Icon 목록 (0) | 2024.01.27 |
[Excel] Microsoft에 Feedback (0) | 2023.12.28 |
[Excel] 척도가 있는 세로 꺽은선 그래프 그리기 (0) | 2023.12.21 |
[Office] 문서에 저장할 이미지 자동압축 해제하기 (0) | 2023.11.22 |