비슷한 질문이 있습니다. 나는 이것을 게시하기 전에 많은 연구를했다.
Sub testtest()
Dim aRange As Range
MsgBox ThisDocument.Tables.Count
For Each oTable In ThisDocument.Tables
For Each oCell In oTable.Range.Cells
Set aRange = oCell.Range
aRange.MoveEnd Count:=-2
aRange.Select
MsgBox aRange.Tables.Count
MsgBox oCell.Tables.Count
Next oCell
Next oTable
End Sub
Explaination : 나는 다음과 같은 코드로 또 다른 테이블 중 하나를 중첩 된 두 개의 작은 테이블을 삽입하고, 시험, 빈 문서를 만든 첫째,에 의해 셀의 범위의 끝을 이동하는 이유 -1 그리고 그 후에 -2까지 셀의 끝에서 모호한 Chr(13)
과 Chr(7)
을 제외하는 것입니다. 위의 테스트를 통해 이제 aRange.Tables.Count
은 테이블이 셀에 중첩되어 있지 않은 경우에도 항상 1 (그리고 절대로 0) 인 것으로 나타났습니다. MsgBox
을 통해 oCell.Tables.Count
을 검사 할 때까지 나는 당황했습니다. - oTable.Tables
대 oTable.Range.Tables
의 차이점은 비슷합니다. - 중첩 테이블이 상위 Table
에 중첩되어 상위 레벨 Cell
에 중첩되지만 테이블 또는 셀의 Range
에는 중첩되지 않습니다.
따라서 선택한 답변은 Collection
(vba에 고유 한 것으로, 나는 어딘가에서 읽음을 기억하는 것 같습니다)을 활용하는 환상적인 방법을 제공하며 문제를 해결하기 위해 노력하지만, 문제의 "경첩"또는 "요령"을 지적하지 않았습니다. 다시 한번 말하지만, "knack"은 oTable.Tables
을 사용하지만 중첩 된 테이블을 "catch"할 수 있지만 oTable.Range.Tables
은 사용할 수 없다는 것입니다. 비교에서는 oTable.Range.Cells
을 사용하는 테이블의 셀을 "catch"할 수 있지만 oTable.Cells
은 사용할 수 없습니다.
't.Range.Tables.Count'를 검사하면't'에 중첩 된 테이블이 들어 있는지 알 수 있습니다. 그런 다음 반복 할 수 있습니다. –
@TimWilliams 글쎄, 예를 들어 [ this] (https://stackoverflow.com/questions/12105718/how-to-access-a-table-within-a-range-nested-in-another-table)하지만 현재 어떻게 될 수 있는지 이해할 수 없습니다. 내 경우 적응 ... –
@ TimWilliams 여기 내 세미 작업 버전 (https://jsfiddle.net/n5b00mod/)입니다. 그러나 중첩 된 테이블의 첫 번째 수준에서만 작동합니다. 예를 들어, 테이블 정상, 첫 번째 안쪽에 두 번째 테이블 정상 및 다음 테이블 두 번째 보통 내 작은 경우이 작은 테이블 서식이 없습니다. 내가 이해하는 바와 같이, 여기에'Do While ... Loop'을 사용해야하지만 정확히 어떻게해야하는지 이해할 수 없습니다. –