我正在为Excel 2007编写一个UDF,我希望将表传递给,然后在UDF中引用该表的部分内容。因此,例如我的表格称为“股票”。可能看起来像这样:

  

姓名          费用          库存中的商品

     

泰迪熊   £ 10               10

     

Lollipops         20p               1000

我有一个UDF,我想计算库存中剩余物品的总成本(实际例子要复杂得多,没有非常复杂的公式就无法真正完成)

理想情况下,UDF的语法类似于

TOTALPRICE(Stock)

从我可以解决的问题来看,UDF将具有签名

Function TOTALPRICE(table As Range) As Variant

我遇到的问题是如何引用表的列并迭代它们。理想情况下,我希望能够引用列标题(如表[Cost])。

有帮助吗?

解决方案

这是非常基本的(没有双关语),但它会按照你的描述进行。对于较大的表格,它可能变得很慢,因为它会在宏功能和工作表之间来回传递,并且这种活动会增加。

它假设您有一行标题和一列名称(因此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

其他提示

注意:我没有Excel 2007,我正在尝试使用网络上的MSDN doc编写此内容 看起来该范围将具有ListColumns集合

因此,语法可以是table.ListColumns(" Cost")。
这有用吗?

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top