【发布时间】:2015-03-31 00:57:55
【问题描述】:
我有一个包含多张工作表的工作簿。除摘要表外,所有其他表都有一个动态范围的连续单元格(在一列内),这些单元格存储了一些日期格式的值。我需要动态选择该范围并选择最大日期值。函数应该返回该值。
这是我正在尝试的:
Function GetMSDate(Counter As Integer, DesignCtrs() As String, NumOfVendors() As Long,
MSDesc() As String, PlanOrActual As String) As Date
GetMSDate = Application.Max(ThisWorkbook.Worksheets(Counter + 1).Range("A:A")
.Find(PlanOrActual, SearchOrder:=xlByColumns, searchDirection:=xlNext)
.EntireRow
.Find(MSDesc(1), SearchOrder:=xlByColumns, searchDirection:=xlNext)
.Offset(1, 0).Address & ":" & _
ThisWorkbook.Worksheets(Counter + 1).Range("A:A")
.Find(PlanOrActual, SearchOrder:=xlByColumns, searchDirection:=xlNext)
.EntireRow
.Find(MSDesc(1), SearchOrder:=xlByColumns, searchDirection:=xlNext)
.Offset(NumOfVendors(Counter) + 1, 0).Address)
MsgBox GetMSDate
End Function
我的意图是为Application.Max() 参数定义动态构造的范围。这样做时,找到范围锚,我选择了正确的工作表(Counter+1 允许正确);然后在第一列中找到一个特定的“预定义”字符串;选择找到的单元格的整行并在该范围内找到另一个预定义的字符串;然后将范围定义为从该锚单元下方的单元到由以下定义的偏移量:NumOfVendors(Counter)+1
在上面运行时,它给了我:
“GetMSDate =”语句中的类型不匹配错误。
【问题讨论】: