2012-03-24 85 views
0

我從來沒有做過VBA,但有朋友要求幫助,所以我一直在爲他的項目工作。我試圖增加給定日期一天,但我在DateAdd函數中收到「Object Required」錯誤。據我可以告訴我在一個對象(firstDate)...VBA增量日期錯誤

爲了我的測試目的輸入的日期至少是12/03/2012在該格式。 格式和CDate函數似乎工作正常,並解析日期。

下面是代碼,我得到的錯誤在它的DateAdd行。

Sub GetDate() 

Dim strDate As String 

strDate = InputBox(Prompt:="Enter the first day of the week in dd/mm/yyyy format.", _ 
     title:="First day of the week", Default:="") 

    If strDate = "" Or strDate = vbNullString Then 
     Exit Sub 
    Else 
     Dim firstDate As Date 
     firstDate = CDate(Format(strDate, "Short Date")) 

     'Add to O and 6 after 
     For inc = 0 To 6 Step 1 
      Range(Chr(79 + inc) & 1) = firstDate 
      firstDate = DateAdd(DateInterval.Day, 1, firstDate) 
     Next 

    End If 
End Sub 

感謝您的幫助。

+3

'DateAdd(「d」,1,firstDate)'你似乎在你的問題(和標籤)中混淆了VBA和.NET。最好挑選一個...... – 2012-03-24 19:08:53

+0

啊我不熟悉.Net框架,我認爲VB是它的一部分。我現在試試你的建議,謝謝。 – Peanut 2012-03-24 19:11:37

+0

謝謝它的作品:)如果你把它作爲答案,我會標記它是正確的。如果你也可以解釋爲什麼這個工作以及DateInterval.Day不是那麼好。我認爲DateInterval.Day是枚舉值,所以只會返回任何vba用來表示「日」... – Peanut 2012-03-24 19:14:56

回答

3

很好...

DateAdd("d", 1, firstDate)

但是:我沒那麼大驚小怪,如果有人轉播礦作爲回答的評論。我閱讀評論以及答案。也許是因爲我有這種在評論中暗示答案的習慣......

+0

我的意圖是在正確的地方得到正確的答案。如果不是這樣,我很抱歉。 – transistor1 2012-03-26 00:58:09

+0

沒問題。我真的應該停止迴應評論... – 2012-03-26 04:40:46

+0

你有去蒂姆。我也閱讀了評論,但我認爲這是本網站的精神,也有一個實際的答案標記。再次感謝。 – Peanut 2012-03-26 14:51:53

7

你只是想增加一天,對吧?

firstDate = firstDate + 1 

Date類型的單位是一天。因此,添加1會增加一天。

+1

+1。有時它是比我們想象的簡單的方式:) – 2012-03-24 21:13:20

+1

順便說一句,你應該聲明'Dim firstDate As Date'以避免對其類型有任何歧義。實際上,你應該總是使用'Dim'聲明所有的變量,並且使用模塊頂部的'Option Explicit'強制你這樣做。 – 2012-03-25 07:52:55

+0

啊我以爲我試過了,並得到了一個類型不匹配,但只是試了一遍,它的工作原理。我也是這樣宣佈firstDate的。由於蒂姆還沒有公佈他的答案,我會將其標記爲正確的。 – Peanut 2012-03-25 13:15:37