2014-09-08 4 views
1

Application.Match를 사용하여 나머지 줄을 사용하여 기존 스프레드 시트를 편집하기 전에 스프레드 시트에서 일련의 줄을 삭제하려고합니다. 여기에 내가 사용하고있는 코드가 있는데, 이로 인해 형식 불일치 오류가 발생합니다. 나는 이전이 아닌 문제를 가지고 작은 데이터 세트와 유사한 논리를 사용했다 :VBA 매크로에서 Application.Match와 형식이 일치하지 않습니다.

If IsError(Application.Match(Fund_Inv_Cusip_Change(LineNumber), Fund_Inv_Cusips_to_Edit, 0)) Then 
     If DeletionRange Is Nothing Then 
      Set DeletionRange = Cells(Override_Workbook_Line + 3, 1).EntireRow 
     Else 
      Set DeletionRange = Union(DeletionRange, Cells(Override_Workbook_Line + 3, 1).EntireRow) 
     End If 
    End If 
Next LineNumber 
DeletionRange.Delete Shift:=xlUp 
Set DeletionRange = Nothing 

Fund_Inv_Cusips_to_Edit 문자열로 선언 66,124 항목이 배열을 선언합니다. FUnd_Inv_Cusip_Change는 문자열로 선언 된 3329 개의 항목이있는 배열입니다. 직접 실행 창에서 print (typename (fund_inv_cusips_to_edit())를 사용하면 각 배열에 대해 String()이 반환되므로 형식 불일치 이유가 확실하지 않습니다

도움이 될만한 의견을 보내 주셨습니다. 이 보드에 게시물 다른 사람의 많은과는 직접이 문제를 해결 뭔가를 볼 수 없습니다. 감사합니다!

+0

'? TypeName (LineNumber)'는 어떨까요? –

답변

1

Application.Match는 두 번째 인수에 65,536 요소 배열을 수 있습니다. 직접 실행 창

?application.match(1,range("A1:A65536").Value,false) 

없는 오류

?application.match(1,range("A1:A65537").Value,false) 

유형 불일치 오류.

반복 할 수 있습니다. 그다지 효율적이지는 않지만, 생각보다 더 빠를 수도 있습니다. 또는 연결이 끊긴 레코드 집합에 넣을 수도 있지만 루프를로드하는 것보다로드하는 데 시간이 오래 걸릴 수 있습니다.

관련 문제