아래 그림처럼 개체변수 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