2012-03-24 4 views
0

私はVBAをやったことはありませんでしたが、友人から助けを求められました。特定の日付を1日増やそうとしていますが、DateAdd関数で「Object Required」エラーが発生しています。限り、私はオブジェクト(firstDate)を入れていると言うことができます...VBA Incrementing Date Error

少なくとも私のテスト目的のために入力された日付は、その形式で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をミックスしているようです。 1つを選ぶのがベスト... –

+0

ああ、私は.Netフレームワークに精通していないので、私はVBがそれの一部であると思った。私はあなたの提案を今お試しいただきありがとうございます。 – Peanut

+0

ありがとうございます:)私はそれを正しいとマークする答えとしてそれを置く場合:)また、なぜそれがうまくいくのか、そしてDateInterval.Dayがうまくいかない理由を説明できる場合は、私はDateInterval.Dayが列挙された値だと思ったので、vbaが "Day"を表すために使用するものを返します。 – Peanut

答えて

3

非常によく...

DateAdd("d", 1, firstDate)

しかし:誰もが答えとして私のコメントをreposts場合、私はそれfussedありませんよ。 I doコメントと回答を読んでください。たぶん私はコメントの答えを提案するこの習慣を持っている可能性があります...

+0

私の意図は正しい場所で正しい答えを得ることでした。それがそうでなければ私は残念です。 – transistor1

+0

問題ありません。私は本当にコメントで答えるのを止めるべきです... –

+0

そこにあなたはティムに行きます。私もコメントを読んだが、私は実際の答えをマークしておくことがサイトの精神にあると思う。再度、感謝します。 – Peanut

7

あなたはちょうど1日増やそうとしていますよね?

firstDate = firstDate + 1 

Dateタイプのユニットは1日です。 1を加えると1日追加されます。

+1

+1。ときにはそれは私たちが考えるより簡単な方法です: –

+1

ちなみに、そのタイプについてあいまいさを避けるために、「Dim firstDate As Date」を宣言する必要があります。実際、 'Dim'を使ってすべての変数を宣言し、モジュールの上部にある' Option Explicit'を使ってこれを行うようにしなければなりません。 –

+0

ああ、私はそれを試して、型の不一致があると思ったが、もう一度試してみるとうまくいく。また、私はfirstDateをそのように宣言します。ティムが答えを投稿していないので、これを正しいとマークします。 – Peanut

関連する問題