행, 열 A부터 CA (79 열)까지 하나의 통합 문서 행에서 데이터를 추출합니다. 새 통합 문서의 테이블에 각 행을 추가하는 중입니다. 열 B는 CB입니다. 열 A는 수식입니다. 새 통합 문서를 Excel 테이블로 설정했습니다. 원본 통합 문서 행을 배열로 추출한 다음 해당 배열을 새 행의 테이블에 할당합니다. (listrows.add). (행 1에서 열 B를 CB에 대해 &의 내용을 지우고 처음 1 행을 제외한 모든 행을 삭제했습니다).새 listrow를 추가하면 1 대신에 마지막 행에서 행 번호 2가 부여됩니다.
배열을 할당하면 열 A 수식이 고유 ID를 계산합니다.이 고유 ID는 해당 ID 이름을 사용하여 새 워크 시트를 추가하는 데 사용됩니다.
내가 겪고있는 문제는 두 번째 행을 새 행으로 추가하면 newrow.index는 예상대로 2 개가되지만 newrow.range.row 대신 4가되어야한다는 것입니다 (머리글은 행 2), 5입니다. 그리고 newrow.range (newrow.index, 1)를 참조 할 때 newrow.range (2,1)에있는 값 대신에 (행 5를 사용하는 것처럼) 얻을 수 있습니다.
나는 이것이 배열 문제일지도 모른다고 느낀다. 그리고 나는 이것에 대해 너무 오래 빤히 보았을지도 모른다. 그러나 왜 그것이 두 줄을 건너 뛰는 지 알 수 없다.
다음은 문제가있는 코드입니다.
Sub importdata()
Dim lastrw As Long
Dim lastcl As Long
Dim newrow As ListRow
Dim i As Long
Dim j As Long
Dim v As Variant
lastrw = lastrow(1, sourcesheet)
lastcl = lastcolumn(1, sourcesheet)
ReDim v(1 To 1, 1 To lastcl)
For i = 2 To lastrw
If i = 2 Then
Set newrow = applicationtable.ListRows(1)
Else
Set newrow = applicationtable.ListRows.Add(alwaysinsert:=True)
End If
v = sourcesheet.Range(sourcesheet.Cells(i, 1), sourcesheet.Cells(i, lastcl))
newrow.Range.Offset(0, 1).Resize(, lastcl) = v
Debug.Print ".index " & newrow.Index
Debug.Print ".row " & newrow.Range(newrow.Index, 1).Row
Debug.Print ".value " & newrow.Range(newrow.Index, 1)
Call copytemplate(newrow.Range(newrow.Index, 1), i)
Next i
End Sub
을 Debug.Print 지수는 2 (이 newrow 추가해야 이후로)
을 Debug.Print 행 5 (이것은 listrow 때문에 (1) 열 (3)에 제 listrow이어야 제공 준다 (2) 은 4 행에 있어야합니다.
debug.print 값은 ""를 제공합니다.
sourcesheet 전 세계적으로 선포하고 내 소스 데이터 applicationtable 세계적으로 선언하고 내 대상 테이블
applicationtable.databodyrange (newrow.index, 1)은 newrow.range (newrow.index, 1)가 아닌 올바른 셀을 나타냅니다. 행이 여전히 올바르지 않습니다 (4 대신 5라고 말합니다). 올바른 셀을 참조하기 위해 databodyrange를 사용할 수 있으므로 지금 당장이를 수행하고 있습니다. 누군가가 아이디어를 가지고 있다면 다른 참조가 왜 틀린 지 아직도 알고 싶습니다. – Carol
ListRows를 SheetRangeRows와 비교하고 있습니다. – Variatus