2014-11-08 4 views
0

각 루프를 반복하는 For 루프가 있으므로 루프에서 사용할 각 행의 D 열에서 값을 가져와야합니다.형식 불일치 오류 # 13

다음과 같이 카운터 값을 행 번호로 사용하여 값을 가져 오려고했습니다.

X = Worksheets("Test").Cells(4, Counter).Value 

나는 Type mismatch error #13

+0

는 D 열 및 행 번호 카운터가 세포이다 (카운터, D는) –

답변

2

가 발생 계속이 난 당신이 당신은 특정 데이터 유형으로 X을 정의

A이 오류가 발생합니다 때 생각할 수있는 두 가지 시나리오가 있지만 다른를 할당하는 그것을 입력하십시오. 예를 들어. XLong으로 정의했지만 셀에 String이 포함되어 있습니다. 귀하의 셀이 A1이고 excelSU이라고 가정 해 보겠습니다. 오류가이 예제

Sub Sample() 
    Dim x As Long 
    x = ThisWorkbook.Sheets("Sheet1").Range("A1").Value 
End Sub 

마찬가지로 특정 유형의 Counter을 선언하지만, 다른으로 사용하여 수도를 참조 복제합니다. 예를 들어

Sub Sample() 
    Dim counter As Excel.Application 

    For counter = 1 To 20 
     x = ThisWorkbook.Sheets("Sheet1").Range("A" & counter).Value 
    Next 
End Sub 

B는하자 다시 세포 A1의 예를 취할. 셀에 #N/A 또는 #DIV/0!과 같은 수식 오류가 있거나 다른 오류가 있습니다. 오류가 위와 같은 코드를 사용하여 복제하려면 당신이

BTW 행 번호로 카운터의 값을 사용하여 Type Mismatch Error

편집

을 얻을 것이다, Counter이다 이 아닌 Column으로 사용됩니다. 구문은 Cells(Row,Column)

0

정수 배열이나 비슷한 것으로 문자열을 가져올 수 있습니다. I just answered someone's question on a somewhat similar problems.

는 내가 그에게 준 모든 기능을 코드 예제를 통해 갈 제안 : 귀하가 루프에 관해서는

.

즉 이유는

  1. 사용자는 하드 코딩 된 값 (4rth 칼럼)를 사용한다. 결국 유지 관리 문제가 발생할 것입니다. 열을 추가하는 사용자는 쉽게 코드를 망칠 것입니다.

  2. 코드는 자체적으로 말하지 않습니다. 하드 코딩 된 값을 적절히 명명 된 변수로 대체하면 해당 값이 대체됩니다.

참고 : 이것은 교차로 수 때문에 프로세서에서 더 많이 소모 될 수 있습니다. 10,000 개의 행이있는 테이블을 생각해 내면 항상 전략을 적용 할 수 있습니다.

링크와 답을 확인하지만, 한편 여기에 내가 테이블 /하고 ListObjects 함께 할 것입니다 방법의 짧은 버전입니다 :

dim listO as ListObject 
set listO = Worksheets("Test").ListObjects(1) 

dim listC as ListColumn 
set listC = ListO.ListColumns("ColumnTitle") 

dim listR as ListRow 
dim anArrayX() as Variant 
ReDim anArrayX (1 to listO.ListRows.Count) 
dim intersectedRange as Range 
for i = 1 to listO.ListRows.count 
    set rowRange = ListO.ListRows(i).Range 
    set intersectedRange = Application.Intersect(rowRange, listC.Range) 
    anArrayX(i) = intersectedRange.Value 
    Debug.Print anArrayX(i) 
next i 
관련 문제