imagelookup 에러메시지 첨부합니다.

VBA
작성자
u***
작성일
2020-05-28 17:31
조회
283

안녕하세요 오빠두 선생님

Function IsInArray(FindValue As Variant, _
vaArray As Variant, _
Optional ExactMatch As Boolean = True, _
Optional returnType As xlArrayReturnType = rtnValue, _
Optional Dimension As Integer = 0, _
Optional vbCompare As VbCompareMethod = vbTextCompare) As Variant

이 부분에서 에러가 표시 되네요.. 뭐가 잘못되었을까요?
보조명령어 전문을 아래와 같이 해서 s서브모듈에 넣었습니다.

계속 질문드려서 죄송합니다...

'###############################################################
'오빠두엑셀 VBA 사용자지정함수 (https://www.oppadu.com)
'▶ vbFileSearch 함수
'▶ 지정한 폴더에 특정 확장자를 가진 파일명을 유사일치/정확히 일치로 검색합니다.
'▶ 인수 설명
'_____________FileName : 검색할 파일명입니다.
'_____________LookIn : 조회할 폴더입니다.
'_____________Extension : 특정 확장자만 조회합니다. (쉼표(,)로 구분)
'_____________ExactMatch : 정확히일치 검색 여부입니다.
'_____________withPath : True일 경우 결과값에 폴더경로를 출력합니다.
'▶ 사용된 기타 사용자지정함수
'_____________SplitFileExt 함수
'_____________IsInArray 함수
'_____________ListFiles 함수
'###############################################################
Function vbFileSearch(FileName As String, _
LookIn As String, _
Optional ExactMatch As Boolean = True, _
Optional Extension As String = "", _
Optional withPath As Boolean = True) As String

Dim sFullName As Variant
Dim sExts As Variant: Dim sExt As Variant
Dim vaArr As Variant: Dim vaRtn As Variant
Dim i As Long: Dim j As Long

vbFileSearch = "-1"
If Right(LookIn, 1) <> "\" Then LookIn = LookIn & "\"

vaArr = SplitFileExt(ListFiles(LookIn, False))
vaRtn = IsInArray(FileName, vaArr, ExactMatch, rtnArrayValue, 0)

If TypeName(vaRtn) = "Variant()" Then
If Extension = "" Then
If withPath = True Then vbFileSearch = LookIn & vaRtn(0, 0) & vaRtn(0, 1) Else: vbFileSearch = vaRtn(0, 0) & vaRtn(0, 1)
Else
sExts = Split(Extension, ",")
For Each sExt In sExts
For i = LBound(vaRtn) To UBound(vaRtn)
If StrComp(CStr(vaRtn(i, 1)), CStr("." & Trim(sExt)), vbTextCompare) = 0 Then
If withPath = True Then
vbFileSearch = LookIn & vaRtn(i, 0) & vaRtn(i, 1)
Exit Function
Else
vbFileSearch = vaRtn(i, 0) & vaRtn(i, 1)
Exit Function
End If
End If
Next
Next
vbFileSearch = "-1"
End If
Else
vbFileSearch = vaRtn
End If

End Function

'###############################################################
'오빠두엑셀 VBA 사용자지정함수 (https://www.oppadu.com)
'▶ SplitFileExt 함수
'▶ 배열 또는 String으로 받아온 확장자가 포함된 파일경로를 파일이름과 확장자로 분리합니다. (2차원 배열, 0 - 파일명, 1 - 확장자)
'▶ 인수 설명
'_____________Files : 확장자를 분리할 배열 또는 파일명입니다.
'###############################################################
Function SplitFileExt(Files As Variant) As Variant

Dim i As Long
Dim sFile As String
Dim vaArr As Variant

On Error GoTo ErrHandler:

'// 파일 타입을 확인합니다. 배열 또는 기타 문자열일 경우
If TypeName(Files) = "Variant()" Then
'// 입력 형식이 배열일 경우
ReDim vaArr(LBound(Files) To UBound(Files), 0 To 1)
For i = LBound(Files) To UBound(Files)
sFile = Files(i)
vaArr(i, 0) = Left(sFile, InStrRev(sFile, ".") - 1)
vaArr(i, 1) = Right(sFile, Len(sFile) - InStrRev(sFile, ".") + 1)
Next
Else
'// 입력 형식이 기타 문자열일 경우
ReDim vaArr(0, 1)
vaArr(0, 0) = Left(Files, InStrRev(Files, ".") - 1)
vaArr(0, 1) = Right(Files, Len(Files) - InStrRev(Files, ".") + 1)
End If

SplitFileExt = vaArr

Exit Function

ErrHandler:
MsgBox "올바른 파일경로 또는 파일명을 입력하세요." & sFile
End

End Function

Option Explicit

Public Enum xlArrayReturnType
rtnSequence = 1
rtnValue = 2
rtnArrayValue = 3
End Enum

'###############################################################
'오빠두엑셀 VBA 사용자지정함수 (https://www.oppadu.com)
'▶ IsInArray 함수
'▶ 배열안에 선택한 값의 존재여부를 확인합니다. 4가지 값으로 반환 가능합니다. (순번, 값, 배열)
'▶ 인수 설명
'_____________FindValue : 배열에서 찾을 값입니다.
'_____________vaArray : 값을 검색할 배열입니다.
'_____________ExactMatch : 정확히일치/유사일치 검색여부입니다.
'_____________returnType : 반환형식을 결정합니다. (Public Enum)
'_____________Dimension : 값을 검색할 배열의 차원입니다.
'_____________vbCompare : 대소문자 구분 여부입니다. (vbTextCompare : 대소문자구분X, vbBinaryCompare : 대소문자구분)
'▶ 사용된 기타 사용자지정함수
'_____________ArrayDimension 함수
'▶ 그외 참고사항
'_____________xlArrayReturnType PublicEnum이 사용되었습니다.
'###############################################################

Function IsInArray(FindValue As Variant, _
vaArray As Variant, _
Optional ExactMatch As Boolean = True, _
Optional returnType As xlArrayReturnType = rtnValue, _
Optional Dimension As Integer = 0, _
Optional vbCompare As VbCompareMethod = vbTextCompare) As Variant

Dim i As Long: Dim j As Long
Dim dicArr As Object: Dim dicKey As Variant: Dim dicKeys As Variant
Dim rtnArr As Variant
Dim ArrDim As Integer

ArrDim = ArrayDimension(vaArray)
Set dicArr = CreateObject("Scripting.Dictionary")

'// IsInArray 초기값을 설정합니다.
IsInArray = -1

'// 정확히일치일 경우
If ExactMatch = True Then
'// 값이 있을시 ReturnType에 따라 반환합니다. (정확히 일치이므로 결과는 무조건 1개만 반환)
If ArrDim = 1 Then
'// 배열이 1차원일 경우
For i = LBound(vaArray) To UBound(vaArray)
If StrComp(FindValue, vaArray(i), vbCompare) = 0 Then
If returnType = rtnValue Or returnType = rtnArrayValue Then IsInArray = vaArray(i): Exit For
If returnType = rtnSequence Then IsInArray = i: Exit For
End If
Next i
Else
'// 배열이 2차원일 경우
For i = LBound(vaArray) To UBound(vaArray)
If StrComp(FindValue, vaArray(i, Dimension), vbCompare) = 0 Then
If returnType = rtnValue Then IsInArray = vaArray(i, Dimension): Exit For
If returnType = rtnSequence Then IsInArray = i: Exit For
If returnType = rtnArrayValue Then dicArr.Add i, i: Exit For
Exit For
End If
Next i

'// Dictionary에 값이 하나라도 존재시
If dicArr.Count > 0 Then
'배열 Redim
ReDim rtnArr(0, 0 To ArrDim - 1)
'// Dictionary 에서 받아온 각 값을 배열로 옮깁니다
For Each dicKey In dicArr.keys
For j = LBound(vaArray, 2) To UBound(vaArray, 2)
rtnArr(0, j) = vaArray(dicKey, j)
Next
Next
'// 배열로 결과를 출력합니다
IsInArray = rtnArr
End If
End If

'// 유사일치일 경우
Else
If ArrDim = 1 Then
'// 배열이 1차원일 경우
For i = LBound(vaArray) To UBound(vaArray)
'// 값이 있을시 ReturnType에 따라 결과를 반환합니다
If InStr(1, vaArray(i), FindValue) > 0 Then
If returnType = rtnValue Then IsInArray = vaArray(i): Exit For
If returnType = rtnSequence Then IsInArray = i: Exit For
If returnType = rtnArrayValue Then dicArr.Add i, i
End If
Next i

'// 유사일치 값이 하나라도 존재시
If dicArr.Count > 0 Then
'배열 Redim
ReDim rtnArr(0 To dicArr.Count - 1)
i = 0
'// Dictionary 에서 받아온 각 값을 배열로 옮깁니다
For Each dicKey In dicArr.keys
rtnArr(i) = vaArray(dicKey)
i = i + 1
Next
'// 배열로 결과를 출력합니다
IsInArray = rtnArr
End If
Else
'// 배열이 2차원일 경우
For i = LBound(vaArray) To UBound(vaArray)
'// 값이 있을시 ReturnType에 따라 결과를 반환합니다
If InStr(1, vaArray(i, Dimension), FindValue) > 0 Then
If returnType = rtnValue Then IsInArray = vaArray(i, Dimension): Exit For
If returnType = rtnSequence Then IsInArray = i: Exit For
If returnType = rtnArrayValue Then dicArr.Add i, i
End If
Next i

'// 유사일치 값이 하나라도 존재시
If dicArr.Count > 0 Then
'배열 Redim
ReDim rtnArr(0 To dicArr.Count - 1, 0 To ArrDim - 1)
i = 0
'// Dictionary 에서 받아온 각 값을 배열로 옮깁니다
For Each dicKey In dicArr.keys
For j = LBound(vaArray, 2) To UBound(vaArray, 2)
rtnArr(i, j) = vaArray(dicKey, j)
Next
i = i + 1
Next
'// 배열로 결과를 출력합니다
IsInArray = rtnArr
End If

End If
End If

End Function
'###############################################################
'오빠두엑셀 VBA 사용자지정함수 (https://www.oppadu.com)
'▶ ArrayDimension 함수
'▶ 배열의 차원수를 반환합니다.
'▶ 인수 설명
'_____________vaArray : 차원을 검토할 배열을 입력합니다.
'###############################################################
Function ArrayDimension(vaArray As Variant) As Integer

Dim i As Integer: Dim x As Integer

On Error Resume Next

Do
i = i + 1
x = UBound(vaArray, i)
Loop Until Err.Number <> 0

Err.Clear

ArrayDimension = i - 1

End Function

'###############################################################
'오빠두엑셀 VBA 사용자지정함수 (https://www.oppadu.com)
'▶ ListFiles 함수
'▶ 선택한 폴더의 파일목록을 배열로 반환합니다.
'▶ 인수 설명
'_____________sPath : 파일목록을 출력할 폴더입니다.
'_____________withPath : 폴더경로를 같이 출력할 여부를 결정합니다.
'###############################################################

Function ListFiles(sPath As String, Optional withPath As Boolean = False)

'// 각 변수를 생성합니다.
Dim arr As Variant
Dim i As Integer
Dim oFSO As Object: Dim oFolder As Object: Dim oFiles As Object: Dim oFile As Object

Set oFSO = CreateObject("Scripting.FileSystemObject")
Set oFolder = oFSO.GetFolder(sPath)
Set oFiles = oFolder.Files

'// 변수를 설정합니다.
i = 1
If oFiles.Count = 0 Then Exit Function
If Right(sPath, 1) <> "\" Then sPath = sPath & "\"

'// 폴더에 파일이 한개라도 존재시 배열 생성합니다.
ReDim arr(1 To oFiles.Count)

'// 각 파일을 돌아가며 Arr 배열로 반환합니다.
For Each oFile In oFiles
If withPath = False Then arr(i) = oFile.Name Else: arr(i) = sPath & oFile.Name
i = i + 1
Next

'// 배열을 결과값으로 출력합니다.
ListFiles = arr

End Function

'###############################################################
'오빠두엑셀 VBA 사용자지정함수 (https://www.oppadu.com)
'▶ cvRng 함수
'▶ 사용자지정함수에서 범위로 인수를 받을 시 사용합니다. 만약 인수가 범위로 입력되었을 경우, 범위에 입력된 값을 반환합니다.
'▶ 인수 설명
'_____________TargetRng : 값을 반환할 범위 또는 그외 값입니다.
'###############################################################
Function cvRng(TargetRng)

If TypeName(TargetRng) = "Range" Then
cvRng = TargetRng.Value
Else
cvRng = TargetRng
End If

End Function

전체 1

  • 2020-05-30 01:44

    적어주신 내용만으로는 답변을 드리기가 어렵습니다 ^^;;
    어떤 오류가 발생하는지 오류명까지 적어주세요..!! 🙂
    그리고 그 전 단계에서 IsInArray에 인수를 어떻게 넣으셨는지까지 적어주시면 더 정확한 답변을 드릴 수 있습니다 ^^


전체 3,238
번호 카테고리 제목 작성자 작성일 추천 조회
3225 VBA
New 네이버 API 이용 검색관련 질문좀요. (1)
녹색태양 | 02:30 | 추천 0 | 조회 14
녹색태양 02:30 0 14
3224 함수/공식
New 이름 중복자도 추출하는 방법... 첨부파일 (2) 답변완료
승재빠 | 2021.06.17 | 추천 0 | 조회 30
승재빠 2021.06.17 0 30
3223 함수/공식
New 다중조건 목록상자(드롭다운)에서 열참조가 아닌 행참조로 하는 방법이 있을까요?
치즈쿠키 | 2021.06.17 | 추천 0 | 조회 18
치즈쿠키 2021.06.17 0 18
3222 VBA
New INDEX,MATCH 함수로 불러온 값에 배경색까지 따라오게 하는 방법 문의 드립니다. 첨부파일 (2)
새하늘 | 2021.06.17 | 추천 0 | 조회 37
새하늘 2021.06.17 0 37
3221 함수/공식
New 같은 품번별로 누적합계 구하기 (품번이 바뀔 경우 해당 행에서부터 다시 누적합계) 첨부파일 (2)
ploki | 2021.06.17 | 추천 0 | 조회 29
ploki 2021.06.17 0 29
3220 파워쿼리/피벗
New 파워피벗(DAX)에서 countif (중복 개수) 값을 얻고싶어요
ㅎㅎ | 2021.06.17 | 추천 0 | 조회 25
ㅎㅎ 2021.06.17 0 25
3219 파워쿼리/피벗
New 관계형 데이터베이스 구축관련 문의입니다 (1)
뀨1 | 2021.06.17 | 추천 1 | 조회 31
뀨1 2021.06.17 1 31
3218 VBA
New 도움을 요청합니다. 첨부파일 (5)
백설공주 | 2021.06.16 | 추천 0 | 조회 56
백설공주 2021.06.16 0 56
3217 기능/도구
New 확장형(?) 드롭다운 첨부파일 (3) 답변완료
치즈쿠키 | 2021.06.16 | 추천 0 | 조회 43
치즈쿠키 2021.06.16 0 43
3216 VBA
New vba 차트 그래프의 마지막 포인트의 위치값? 확인 방법 (2) 답변완료
aaaadcba | 2021.06.16 | 추천 0 | 조회 26
aaaadcba 2021.06.16 0 26
3215 VBA
New 피벗 갱신관련 VBA 구문 (2) 답변완료
H.B | 2021.06.16 | 추천 0 | 조회 35
H.B 2021.06.16 0 35
3214 함수/공식
New 특정 셀 값이 갖고 있는 목록 중 원하는 값을 순차적으로 가져오기 (3)
만수르용 | 2021.06.16 | 추천 0 | 조회 43
만수르용 2021.06.16 0 43
3213 VBA
New 함수(수식)의 값들을 값으로 변환 첨부파일
소금인형 | 2021.06.16 | 추천 0 | 조회 32
소금인형 2021.06.16 0 32
3212 VBA
New 배송 정보를 입력할때 데이터를 효율적으로 관리하고 싶은데요. 첨부파일 (3)
silverf**** | 2021.06.16 | 추천 0 | 조회 39
silverf**** 2021.06.16 0 39
3211 VBA
New 공유폴더에 엑셀 파일을 DB 용으로 사용할 경우 불러들이고 수정, 삭제하는데 로딩시간이 원래 오래걸리나요? (2) 답변완료
log | 2021.06.16 | 추천 0 | 조회 24
log 2021.06.16 0 24
3210 함수/공식
New 복식부기 중 iferror 관련 질문입니다. 첨부파일 (2) 답변완료
Yoon | 2021.06.16 | 추천 0 | 조회 25
Yoon 2021.06.16 0 25
3209 VBA
New 두번째 질문 올립니다. 범위안에서 선택이되었는지 첨부파일
게임쇼핑 | 2021.06.16 | 추천 0 | 조회 20
게임쇼핑 2021.06.16 0 20
3208 함수/공식
New 클릭하면 원하는 셀로 이동하는 함수 or 매크로 (3)
LJH | 2021.06.16 | 추천 0 | 조회 48
LJH 2021.06.16 0 48
3207 문서서식
New 엑셀 실기시험 관련해서 사소한 질문 하나 드립니다. (4) 답변완료
행복지기 | 2021.06.16 | 추천 0 | 조회 40
행복지기 2021.06.16 0 40
3206 피벗테이블
New 다시 질문드립니다! 피벗테이블 부분합 2개 만들기!
모찌율 | 2021.06.16 | 추천 0 | 조회 26
모찌율 2021.06.16 0 26
3205 VBA
New 엑셀로 Word 파일 생성 (1)
fire6**** | 2021.06.16 | 추천 0 | 조회 31
fire6**** 2021.06.16 0 31
3204 함수/공식
New 동일 그룹 내 중복값 입력 못하게 할 수 있을까요? 첨부파일 (4)
지옥나비 | 2021.06.15 | 추천 1 | 조회 61
지옥나비 2021.06.15 1 61
3203 VBA
New VBA 에서 for 반복문 사용 관련 질문! (2)
팡이 | 2021.06.15 | 추천 0 | 조회 32
팡이 2021.06.15 0 32
3202 VBA
New VBA Access 첨부파일 다운로드 (1)
조형진 | 2021.06.15 | 추천 0 | 조회 36
조형진 2021.06.15 0 36
3201 함수/공식
New 엑셀 중복을 제거하고 조건에 맞는 데이터 갯수 세기 (1)
칭구 | 2021.06.15 | 추천 0 | 조회 49
칭구 2021.06.15 0 49
3200 VBA
New VBA 피벗갱신 구문
H.B | 2021.06.15 | 추천 0 | 조회 24
H.B 2021.06.15 0 24
3199 VBA
New 매크로 이용하여 사진 삽입 후 저장된 파일을 이동하면 사진이 깨집니다. 도와주세요 첨부파일 (2)
큰공쥬 작은공쥬~ ♥ | 2021.06.15 | 추천 0 | 조회 38
큰공쥬 작은공쥬~ ♥ 2021.06.15 0 38
3198 문서서식
셀병합이안되네요 첨부파일 (5) 답변완료
현정이 | 2021.06.15 | 추천 0 | 조회 41
현정이 2021.06.15 0 41
3197 VBA
엑셀 파일 raw 한개를 여러 파일로 나누어 자동 저장하는 방법? (1)
아라아라다 | 2021.06.15 | 추천 0 | 조회 39
아라아라다 2021.06.15 0 39
3196 VBA
Sheet5에 값을 입력하였고 아무 코드도 적용시키지 않았는데 왜 Sheet2의 같은 자리에 입력이 되고 Sheet5에는 입력이 안될까요? (2)
log | 2021.06.15 | 추천 0 | 조회 31
log 2021.06.15 0 31