1. FAQ
  2. 엑셀(Excel)
  3. AfterEffects
  4. Premiere
  5. Photoshop
  6. ETC

이 게시판은 아별닷컴 회원만 질문을 올릴 수 있습니다. 회원에게 주어지는 특권인셈이지요. 회원이 아닌 분들은 열람만 가능합니다.

VBA에러처리2

VBA 조회 수 2924 추천 수 0 2012.09.26 09:35:08

운영체제 : win7

엑셀 : 2010 sp1

 

질문1)

첨부된 예제의 "형식1" 워크시트에서 실행버튼을 누르고 나오는 대화 상자에서 F열, H열, J열, L열을 선택하고 확인을 누르면

원하는 목적이 달성됩니다. 그런데 "형식2" 워크시트에서 실행버튼을 누르고 나오는 대화 상자에서 F열, H열, J열, L열을 선택하고 확인을 누르면 대상이 없으므로 Msgbox로 "해당되는 셀이 없습니다" 라고 딱 1번만 나오게끔 하려는데 이게 잘 안되네요.

 

질문2)

"형식1" 워크시트에서 셀 1개만 선택하면 Msgbox로 "열 전체를 선택하세요"라고 처리했는데, 여기서 확인을 누르면 다시 InputBox로 돌아가게끔 했습니다. 그리고 다시 나오는 InputBox에서 "취소'버튼을 누르면 exit sub가 되는데 아니고 오류가 나네요. "취소"버튼을 누르면 exit sub로 되게끔 하려면 어떻게 해야 하는지요?

 

질문3)

선택영역에 숫자가 없을때의 오류처리인데요. 이리저리 생각해 봤는데 잘 안되네요.

코드에는 주석으로 표현된 부분인데요. 선택영역에 숫자가 1개라도 없다면 이라는 구문을 어떻게 표현해야 하는지요?

주석으로 표현한 것처럼

Cset IsNumeric(rngSelection.Cells)
MsgBox "선택영역에 숫자가 없으므로, 작업을 진행하지 않고 종료합니다.", vbOKOnly + vbInformation, Es
Exit Sub

이게 아니더라구요.

설사 표현했다하더리도 숫자가 1개만 있다면 for each 구문에서 선택영역이 1개이므로 이것도 문제가 될 것 같고요..

좋은 방법이 있는지요?


댓글 '5'

profile

[레벨:30]아별

2012.10.08 20:39:44
*.104.126.21

고수가되고파님..

안녕하세요? 제가 요즘 시간이 없어서 답변이 늦었습니다. ( 회사일 + 여행 + 개인적인 일 )

 

질문1번과 2번은 Do Loop문으로 해결 할 수 있습니다.

 

    strMsg = "'금액'이라는 문자가 있는 열을 선택하세요." & vbCr & vbCr & _
              "('금액'이라는 문자가 있는 열을 선택하지 않으면 올바르지 않은 결과를 초래합니다.)"
    Do
        On Error Resume Next
        Set rngSelection = Application.InputBox(strMsg, Es, Type:=8)
        If rngSelection Is Nothing Then
            MsgBox "취소 버튼을 누르셨네요.. 종료합니다."
            Exit Sub
        ElseIf rngSelection.Cells.Count = rngSelection.EntireColumn.Cells.Count Then
            bln = True
        Else
            bln = False
        End If
        If Err.Number <> 0 Or bln = False Then
            MsgBox "'금액'이라는 문자가 있는 열 전체을 선택하세요", vbOKOnly + vbCritical, "영역선택 오류"
        End If
        On Error GoTo 0
    Loop Until bln '### 선택행이 열 전체일때까지 반복 실행합니다.

 

 

질문3번은

숫자 셀만 영역 변수에 할당을 시키고.. 이때 발생하는 에러의 종류에 따라 처리하면 되겠습니다.

할당할 셀 영역이 없으면 1004 에러.. "해당되는 셀이 없습니다." 에러를 발생시키거든요..

 

    Dim rngNumber As Range
    On Error Resume Next
    Set rngNumber = rngSelection.SpecialCells(xlCellTypeConstants, xlNumbers)
    Select Case Err.Number
        Case 0
            rngNumber.Interior.Color = vbGreen
        Case 1004
            MsgBox "선택영역에 숫자가 없으므로, 작업을 진행하지 않고 종료합니다.", vbOKOnly + vbInformation, Es
        Case Else
            MsgBox "원인을 알 수 없는 에러가 발생하여 종료합니다."
    End Select

 

 

자세한 내용은 첨부파일을 참고하시기 바랍니다.

다운받기 : abyul.com_inputbox_20121008-1.xlsm

 

도움이 되셨기를.. ^^

첨부

[레벨:4]고수가되고파

2012.10.10 11:32:04
*.104.208.234

고맙습니다. 덕분에 잘 해결되었습니다, 복 받으세요^^

그런데, 이런 생각을 한번 해보았습니다. 굳이 InputBox로 범위를 전달 받아야만 하는가이죠.

*금*액* 이란 단어가 어느 행에 위치하는지 특정할 수가 없는 상황에서,

*금*액* 이라는 단어가 입력된 열을 찾아서 한방에 해결하는거죠.

물론, *금*액* 이라는 단어가 없는 경우가 있을 수 있으므로 MsgBox로 제어해야겠지만서두...

이런 생각을 해보았는데 가능은 한건가요?

profile

[레벨:30]아별

2012.10.11 16:06:06
*.104.126.21

다시 올리신 질문에 대한 답변으로 이 문제는 설명이 된 것 같네요..

http://www.abyul.com/zbxe/111532


찾은 결과가 없을 때는 아래처럼 처리합니다.

찾은 결과가 없으면 rng가 nothing이거든요.. IF문으로 검사해서 진행하면 되겠습니다.


Sub test()

    Dim rng As Range

    Set rng = Cells.Find("금 액")

    If rng Is Nothing Then

        MsgBox "그런 셀이 없습니다."

        Exit Sub

    Else

        '### 작업할 코드를 여기에 넣습니다.

    End If

End Sub


[레벨:4]고수가되고파

2012.10.10 18:58:04
*.104.208.234

한가지만 더 문의드릴께요.

만약 범위선택에서 빈 열을 선택하면 엉뚱한 메세지가 출력되는데요.

*금*액* 이라는 단어가 없는 열을 선택하면 "선택한 열에 금액이라는 단어가 없습니다." 라고 제어하고 싶다면 어떻게 수정이 되어야 하는지요? 오늘 이 것땜에 생각 많이 했는데 안되네요...

실력이 부족하네요...

profile

[레벨:30]아별

2012.10.11 16:06:33
*.104.126.21

바로 위 댓글을 참고하세요..

문서 첨부 제한 : 0Byte/ 2.00MB
파일 제한 크기 : 2.00MB (허용 확장자 : *.*)
List of Articles
번호 제목 글쓴이 날짜 조회 수sort
공지 공지 [공지] 아별닷컴의 엑셀 질문방 폐쇄합니다. 카페 질문방 이용하세요.. imagefile [레벨:30]아별 2015-04-23 45166
502 피벗테이블 엑셀 작업 중, 질문사항 몇개... _ 피벗테이블 계산 필드, 계산 항목 [3] [레벨:4]나카타 2011-09-16 4480
501 (VBA) 또 질문할 수 밖에 없는 내가 너무 싫어요. file [3] [레벨:1]사오정원조 2009-07-06 4479
500 엑셀 2007 질문입니다. file [1] [레벨:1]베이스맨 2009-12-30 4468
499 도와 주세요~ ^^;; file [1] [레벨:1]papabear 2009-07-17 4450
498 AK18101*2 으로 되어 있는 셀을 빈셀에 AK18101 AK18101 으로 나열하는 방법 [2] 한따까리 2009-10-09 4430
497 엑셀일반 아별을 깔면 이러네요.ㅠ.ㅠ 엑셀 창이 알트텝으로 검색이 안되요 imagefile [2] [레벨:2]큰아빠에요 2012-01-30 4428
496 VBA [긴급] Range 범위 "A2:A10" -> 를 변수로 받게 하는 방법.. file [3] [레벨:1]마리너 2012-07-05 4427
495 VBA 엑셀 메모의 배경으로 삽입한 이미지 추출하기 file [레벨:2]이런젬젬 2015-01-06 4423
494 엑셀일반 엑셀로 출력시 출력물이 깨지는 데에 대한 문의.... imagefile [레벨:1]하룽아비 2015-01-18 4408
493 엑셀일반 줄바꿈을 나누기 file [1] [레벨:4]요셉 2013-09-13 4404
492 테두리 두께 변경과 색상 입히기 file [2] [레벨:1]최선 2012-01-08 4402
491 엑셀일반 셀 병합 후 데이터가 지워지지 않는 방법이 있는지요.. [2] [레벨:3]읍내꽃미남 2011-09-19 4401
490 엑셀일반 엑셀 작업한 내용이 안보여요. file [5] [레벨:2]시나브로 2012-06-20 4398
489 셀에 입력한 규격 계산. [5] 최선으로 2009-07-10 4391
488 엑셀일반 셀안의 텍스트에....... imagefile [6] [레벨:1]월계몽키 2014-11-26 4390
487 매크로 질문요 [3] [레벨:2]yang1019 2010-04-10 4363
486 엑셀일반 최대값, 최소값 범위 지정 file [레벨:3]읍내꽃미남 2015-01-20 4358
485 직원현황표에서.. [1] [레벨:1]파이오니어 2009-07-08 4358
484 아별님~ 두번째 질문을 구체적으로 작성했습니다~^^ [5] [레벨:1]리시안샤스 2009-07-27 4355
483 VLookup VLOOKUP으로 하이퍼링크 주소 가져오기 [1] [레벨:1]으앙 2014-11-06 4349