在下面的代碼中,我設置了3個範圍等於變量。我對rngNext
和rngDays
沒有任何問題,他們將正確的變量分配到正確的範圍 - 無後顧之憂。返回mainsub時函數中設置的範圍清零
Bizarely,rngLast不寫入工作表。更確切地說(在進入代碼時),我可以看到正在預期的值被寫入rngLast.Value = LastBillDate
行的表格中,然後在End Function
行後消失,當我返回到主分支時。
我以前從未遇到過這種情況,我能想到的唯一的事情就是它可能會在變量失去其價值後再回到子變量中,但它肯定已經寫入工作表了?
Function DaysRemaining(lngBillDate As Long, lngRow As Long)
Dim rngLast As Range, rngNext As Range, rngDays As Range
Dim NextBillDate As Date, LastBillDate As Date
Set rngLast = Worksheets("Data").Range("G" & lngRow)
Set rngNext = Worksheets("Data").Range("H" & lngRow)
Set rngDays = Worksheets("Data").Range("I" & lngRow)
If lngBillDate > Day(Date) Then
NextBillDate = CDate(Format(lngBillDate, "00") & "/" & Format(Month(Date), "00") & "/" & Year(Date))
LastBillDate = DateAdd("m", -1, NextBillDate)
Else
NextBillDate = CDate(Format(lngBillDate, "00") & "/" & Format(Month(Date) + 1, "00") & "/" & Year(Date))
LastBillDate = DateAdd("m", -1, NextBillDate)
End If
rngNext.Value = NextBillDate
rngLast.Value = LastBillDate
rngDays.Value = rngNext.Value - Date
End Function
幫助讚賞一如既往。
這很奇怪。如果你只爲'rngNext'的硬編碼值會發生什麼?這可能有助於確保這種價值導致它沒有任何不可思議的東西。 –
我得到相同的結果硬編碼兩個變量,不幸的是rngLast消失在同一點。 – User632716
Woops,如756tgs所言,如果它是一個工作簿函數,則會出現此行爲。 –