0

範囲内の単一のテーブル(たとえば、rngOuter)にアクセスするために、次を使用しました。tblOuter = rngOuter.Tables [1]; ネストされたテーブルをその外側の範囲のテーブル内の範囲(たとえば、rngInner)に配置した後、次のことがわかりました。tblInner = rngInner.Tables [1]; 動作しませんでした。rngInner.Tables [1]は、それ自体のテーブルではなく、tblOuterを参照します。実際、rngInnerのTablesコレクションには要素が1つだけあり、それがtblOuterです。tblInnerにアクセスするには、tblOuter.Range.Tables[1]にアクセスする必要があります。

私が間違いを犯しているかどうか誰かが知っていますか、それともそうです。

4

1 に答える 1

2

私の知る限り「その通りです」が、Cell.Range.TablesではなくCell.Tablesを使用して、テーブルを含むセルを探すことができます。たとえば、使用できるテーブルを含む現在の選択範囲内のセルを探す

Sub listInnerTables()
Dim c As Cell
Dim r As Range
Dim t As Table
Dim tcount As Long
Set r = Selection.Range
If r.Tables.Count > 0 Then
  tcount = 0
  For Each t In r.Tables
    tcount = tcount + 1
    For Each c In t.Range.Cells
      If c.Range.InRange(r) Then
        If c.Tables.Count > 0 Then
          Debug.Print "Table: " & CStr(tcount) & _
            vbTab & " Row: " & CStr(c.RowIndex) & _
            vbTab & " Col: " & CStr(c.ColumnIndex) & _
            vbTab & " Table count: " & CStr(c.Tables.Count)
        End If
      End If
    Next
  Next
End If
Set r = Nothing
End Sub
于 2012-08-24T16:07:36.770 に答える