在Excel中使用类似于对象的表格

我在Excel中创build了一个表格,例如:

    
            AB
     1水果价格($)
     2苹果5
     3香蕉3
     4橙4
     5柠檬2
     6菠萝4
    

这个表的名字是Fruits。 我怎样才能在VBA代码中使用这个表像obejct?

例如在Match函数中使用:

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

结果是2。


问题解决了 – 一个观察,最好使用Application.Match而不是WorksheetFunction.MatchWorksheetFunction.Match返回#值#Value! ,当没有find该值时。 不同于返回#N/A Application.Match

您需要对表格中的相应列进行范围参考的特殊构build。 如果我只是提高你的代码,这将是最好的:

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

假设Fruits是表格的范围名称。 result = 2

在VBA中,表格被称为ListObjects。 ListObjects有ListRows和ListColumns。 所有这些(加标题,总计等)都有一个返回一个Range对象的DataBodyRange属性。

 Application.WorksheetFunction.Match("Banana",Sheet1.ListObjects("Fruits").ListColumns("Fruit").DataBodyRange,False)