1

たとえば、Excelでテーブルを作成しました。

    
           AB
    1 フルーツ 価格 ($)
    2 アップル 5
    3 バナナ 3
    4 オレンジ 4
    5 レモン 2
    6 パイナップル 4
    

このテーブルの名前は Fruits です。このテーブルを VBA コードのオブジェクトのように使用するにはどうすればよいですか?

たとえば、Match 関数での使用:

result = WorksheetFunction.Match("Banana", Table("Fruits").Column("Fruit"), 0)

そして結果は2。


問題が解決しました - 1 つの観察では、Application.Matchの代わりに使用することをお勧めしますWorksheetFunction.Match。値が見つからない場合、 は を返しWorksheetFunction.Matchます。#Value!それとは異なり、Application.Matchを返します#N/A

4

2 に答える 2

1

VBA では、テーブルは ListObjects と呼ばれます。ListObject には ListRows と ListColumns があります。これらすべて (およびヘッダー、合計など) には、Range オブジェクトを返す DataBodyRange プロパティがあります。

Application.WorksheetFunction.Match("Banana",Sheet1.ListObjects("Fruits").ListColumns("Fruit").DataBodyRange,False)
于 2013-08-16T15:02:22.617 に答える
1

テーブル内の適切な列への範囲参照の特別な構築を行う必要があります。コードを改善するだけで提示するのが最善です。

result = WorksheetFunction.Match("Banana", Range("Fruits[Fruit]"), 0)

Fruitsそれがテーブルの範囲名であると仮定します。結果としてresult = 2

于 2013-08-16T14:00:06.600 に答える