2012-03-24 89 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