엑셀 VBA - 개체변수 오류 질문드립니다.

익명
2018-03-25T05:17:43+00:00

아래 그림처럼 개체변수 c 에서 문제가 발생합니다.

Function을 한번 거치면 개체변수가 사라지네요

원래 그런건가요?

(잘못하면 무한루프가 발생하므로 디버그 모드에서 확인해 주셨으면 합니다.)

http://sendanywhe.re/8H0MYGRX  (48시간동안 유효한 링크입니다)

Option Explicit

Sub Purchase_Order()

    Dim sht1, sht2  As Worksheet  '// 시트(Sheet)를 넣을 변수

    Dim Target As Range   '// 검사할 시트의 범위 구간

    Dim rngAll As Range, FindCell As Range  '// 현재시트의 구간 범위

    Dim c As Range

    Dim strAddr As String   '// 영역변수 및 주소를 저장할 변수

    Set sht1 = Sheets("주문")

    Set rngAll = sht1.Range(sht1.Cells(2, "B"), sht1.Cells(Rows.Count, "B").End(xlUp))

    Set sht2 = Sheets("메뉴")

    Set Target = sht2.Range(sht2.Cells(2, "B"), sht2.Cells(Rows.Count, "B").End(xlUp))

    sht1.Range(sht1.Cells(2, "B"), sht1.Cells(Rows.Count, "B").End(xlUp)).Offset(0, 1).ClearContents '

    For Each FindCell In rngAll.Cells

        Set c = Target.Find(what:=FindCell, LookIn:=xlValues, Lookat:=xlWhole)  '

        '// Target 범위에서 FindCell 과 100% 일치하는 데이터를 찾아 C에 넣기

        If Not c Is Nothing Then    '// 찾는 값이 있으면

            strAddr = c.Address     '// 최초 셀 주소를 기억하게 strAddr 에 저장

            Do  '// 무한 루프 시작

                If FindCell.Offset(0, -1).Value = c.Offset(0, -1).Value Then '// 옆의 셀(A열)이 서로 일치하면

                    FindCell.Offset(0, 1).Value = c.Offset(0, 1).Value       '// 찾는셀 우측으로 C열에 기록

                End If

                Set c = Target.FindNext(c)   '// 다음셀을 찿음

                'If c Is Nothing Then Exit Do '// 개체변수 오류 임시 대응

            Loop While Not c Is Nothing And strAddr <> c.Address  '// 찿는 셀이 있거나, 셀주소가 서로 다르면 루프문 반복

        End If

    Next

End Sub

Function strClear(Str)

    Dim x As Long

    Dim y As Integer

    Dim z As String * 1

    Dim strWidth As Long

    Dim getSet As Range

    strClear = vbNullString

    Set getSet = Str.Find(what:="set", LookIn:=xlValues, Lookat:=xlPart)

    If Not getSet Is Nothing Then

        strWidth = Len(Str)

        For x = 1 To strWidth

            z = Mid(Str, x, 1)

            If z Like "#" Then strClear = strClear & z

        Next

        strClear = strClear * 3

    Else

        strWidth = Len(Str)

        y = 1

        For x = 1 To strWidth

            z = Mid(Str, x, 1)

            If z Like "#" Then

                strClear = strClear & z

                y = y + 1

            Else

                strClear = strClear & "+"

            End If

        Next

        If y = 1 And Not IsEmpty(Str) Then

            strClear = Application.Evaluate("#VALUE!")

        Else

            strClear = Application.Evaluate("0" & "+" & strClear & "+" & "0")

        End If

    End If

End Function

Microsoft 365 및 Office | Excel | 가정용 | Windows

잠긴 질문. 이 질문은 Microsoft 지원 커뮤니티에서 마이그레이션되었습니다. 질문이 도움이 되었는지 여부에 대해 응답할 수는 있지만, 메모나 회신을 추가하거나 질문을 따를 수는 없습니다.

댓글 0개 설명 없음

답변 1개

정렬 기준: 가장 유용함
  1. 익명
    2018-03-26T04:09:43+00:00

    안녕하세요. flashnote님.

    Microsoft Community를 방문해 주셔서 감사합니다.

    Excel VBA에서 개체변수 오류가 발생하는 현상으로 원인을 찾고 계시는군요.

    해당 문의는 MSDN 포럼에 문의해보는 것을 추천해 드립니다.

    개발자 및 전문가분들이 사용하는 포럼이라 좋은 답변을 받으실 수 있습니다.

    아래의 링크를 클릭하시면, 해당 포럼으로 이동합니다.

    MSDN 포럼

    추가적인 질문이 있을 때는 [응답] 버튼을 눌러 회신해주시기 바랍니다.

    Microsoft 제품을 사용해 주셔서 감사합니다.

    이 대답이 도움이 되었나요?

    댓글 0개 설명 없음