0
我有一個包含多個工作表的工作簿。除彙總表外,其他所有工作表都有一個連續單元格(列內)的動態範圍,用於存儲某些日期格式的值。我需要動態選擇該範圍並選擇最大日期值。該函數應該返回該值。返回類型爲Excel的自定義Excel VBA函數
這是我試圖:
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 =」語句。
調試的輸出在哪裏?.....編輯:對不起,我的即時窗口隱藏在後面。所以這些值是0和雙倍 – user1931485 2013-03-08 19:09:59
如果我打印GetMSDate作爲聲明代替v作爲Variant,它將打印12:00:00 AM和Date。我在想這意味着Max()函數沒有按照我預期的那樣進行評估。 – user1931485 2013-03-08 19:55:33
我建議分解你的工作表函數,例如確保.address返回你想要的範圍。你也可以在這些上使用debug.print。最終你會看到發生了什麼。 – 2013-03-09 04:46:00