我正在为Excel 2007编写一个UDF,我希望将表传递给,然后在UDF中引用该表的部分内容。因此,例如我的名为“Stock”的表可能看起来像这样:
库存中的名称成本项目
泰迪熊£10 10
Lollipops 20p 1000
我有一个UDF,我想计算库存中剩余物品的总成本(实际例子要复杂得多,没有非常复杂的公式就无法真正完成)
理想情况下,UDF的语法类似于
TOTALPRICE(Stock)
从我可以解决的问题来看,UDF将具有签名
Function TOTALPRICE(table As Range) As Variant
我遇到的问题是如何引用表的列并迭代它们。理想情况下,我希望能够引用列标题(如表[Cost])。
答案 0 :(得分:1)
这是非常基本的(没有双关语),但它会按照你的描述进行。对于较大的表格,它可能变得很慢,因为它会在宏功能和工作表之间来回传递,并且这种活动会增加。
它假设您有一行标题和一列名称(因此For循环变量从2开始)。
有各种各样的事情可能是必要的 - 我们可以将这些事件保存在另一个问题或另一个问题上。
请注意,该函数返回“Variant”,btw ...
Public Function TotalPrice(table As Range) As Variant
Dim row As Long, col As Long
Dim total As Double
For row = 2 To table.Rows.Count
For col = 2 To table.Columns.Count
TotalPrice = TotalPrice + table.Cells(row, col) * table.Cells(row, col + 1)
Next
Next
End Function
答案 1 :(得分:0)
注意:我没有Excel 2007,我正在尝试使用网络上的MSDN doc来编写它 看起来该范围将具有ListColumns集合
因此,语法可以是table.ListColumns(“Cost”) 这有用吗?