2017-10-13 12 views
0

3行目がエラー5でエラー出力され、プロシージャコールまたは引数が無効です。ソート時にこの表の列を名前で参照する方法は?

Set tbl = ActiveSheet.ListObjects(1) 
tbl.Sort.SortFields.Clear 
tbl.Sort.SortFields.Add Key:=tbl.Range("Table[Matter ID]"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal 

私はこの問題はtbl.Range("Table[Matter ID]")であると私はtbl.Range.Cells(8)を使用して、それを修正しましたし、それが動作します知っています。しかしなぜが最初の仕事ではないのですか?

私は?tbl.Range.Addressに行くことができ、有効な範囲のアドレスを取得します。

私は?tbl.Range.Resize(1).Addressに行き、有効な範囲のアドレスを取得できます。

"テーブル"と "マターID"の名前は正しいです。 Excelテーブル(ListObjects)の利点の1つは、名前で列を参照できることです。私は間違って何をしていますか?

答えて

2

tbl内に範囲( "Table [Matter ID]")はありませんが、tbl.parent内に範囲( "Table [Matter ID]")があります。

Option Explicit 

Sub aswqer() 
    Dim tbl As ListObject 
    Set tbl = ActiveSheet.ListObjects(1) 
    With tbl 
     .Sort.SortFields.Clear 
     .Sort.SortFields.Add Key:=.Parent.Range("table[Matter ID]"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal 
     .Sort.Apply 
    End With 
End Sub 

範囲(「テーブル[物質IDは、]」)テーブルが常駐ワークシートではなく、テーブルの子の子です。

enter image description here

+0

私の問題は、Excelオブジェクトモデルが十分に分かっていないと考えました。あなたは包括的なリファレンスを提案できますか?私はMSDNを掃除しますが、そのページの一部は素晴らしいものの、一部はそうではありません。 'transmogrify - xlYesに設定されていると、細胞は変形するでしょう。 ' 本当に知りたいのが「変身している」ということは、もちろん助けになりません。 – RobertSF

関連する問題