0
我正在使用Excel 2010 VBA,並且正在創建基本時間線。以下是代碼片段,它以「D-MMM」的形式創建了一些列標題,基於開始日期和跳過週末。
i = 0
' Add column headers based on the day of the week. Skip working on Saturday and Sunday; do not show weekends
Do
' D-MMM format = "[$-409]d-mmm;@"
ActiveCell.Value = Format(DateAdd("d", i, dteLowestStartDate), "[$-409]d-mmm;@")
ActiveCell.Interior.Color = RGB(153, 204, 255)
' IF it's a weekend do not print those days in the column
If Format(ActiveCell.Value, "dddd") = "Friday" Then
' Skip Saturday, Sunday
i = i + 3
Else
' Weekday
i = i + 1
End If
ActiveCell.Offset(0, 1).Select
'End processing more column headers once the start date + index(i) is a few days greater then end date
Loop Until DateAdd("d", i, dteLowestStartDate) > DateAdd("d", 3, dteHighestStartDate)
代碼正確執行並顯示列標題。我遇到的問題是,當1月1日出現時,它保持當前年份(今天是2011年),但我預計它是2012年。
作爲測試,我刪除FORMAT(... ", "[$-409]d-mmm;@")
部分,所以它只是讀取DateAdd("d", i, dteLowestStartDate)
重新運行,並且它在1月1日正確增加了一年,但隨後的代碼使用了使用Application.Match
函數失敗的代碼。
任何想法如何使列標題(頂部行中的文本,跨越多列)以DateAdd
和dd-mmm格式正確地遞增年份?或者我應該看看更改我的Application.Match()
,以便它不返回錯誤2042?
這裏就是匹配失敗:
colStartDate = Application.Match(CLng(dteStartDate), Range(colLetter & "1:XFD1"), 0)
因爲我不能自我回答:看起來像是我將FORMAT()函數更改爲Format(DateAdd(「d」,i,dteLowestStartDate),「Short Date」)它工作正常。 – user1075999