• ベストアンサー

DateDiffについて教えてください

初心者です E列に入力されている日付から今日まで何日経過したかをK列に表示したいと思っています。 下記ではエラーになってしまうのですがDateDiffがおかしいのでしょうか?どなたか教えてください。 Sub 経過日カウント() Dim K As Long K = 2 Do While Cells(K, 2) <> "" Cells(K, 11) = DateDiff(Cells(K, 5), Date, "d") K = K + 1 Loop End Sub

質問者が選んだベストアンサー

  • ベストアンサー
  • hana-hana3
  • ベストアンサー率31% (4940/15541)
回答No.1

>DateDiff(Cells(K, 5), Date, "d") 関数内のパラメーターの順番が違っています。 この程度の使い方はヘルプにも記載されていますし、ネットでも簡単に探せますよ。 DateDiff("d" , Cells(K, 5), Date) http://homepage2.nifty.com/pasocon/nyumon/datediff.html

関連するQ&A

  • VBA グループ化について

    VBAで、取り込んだ本のリストをグループ化して見やすくしようと思ったのですが、@のついているところでエラーが出ます。 (あるところからとってきたVBAを自分で付け加えたものです。) A列に著者、B列に本のタイトルが書かれているリストで、完成図としては著者の毎にグループがされ、著者のグループを開くと、本のタイトルのグループが出てくるかたちを目指しています。 エラー内容は以下の通りです。 実行時エラー 1004 アプリケーション定義またはオブジェクト定義のエラーです。 どなたか教えて下さい。 Sub TEST() Dim wri1 As Long Dim wri2 As Long Dim wri As Long Dim com1 As Long Dim com2 As Long Dim com As Long Dim strFORMULA As String ActiveCell.Activate com = 1 Do While Cells(com, 2).Value <> "END" com1 = com com = com + 1 Do While Cells(com, 2).Value = Cells(com1, 2).Value com = com + 1 Loop com2 = com - 1 Rows(com).Insert Cells(com, 2).Value = Cells(com1, 2).Value Cells(com, 1).Value = Cells(com1, 1).Value Rows(com1 & ":" & com2).Group com = com + 1 Loop wri = 1 Do While Cells(wri, 1).Value <> "END" wri = wri wri = wri + 1 @@@ Do While Cells(wri, 1).Value = Cells(wri1, 1).Value wri = wri + 1 Loop wri2 = wri - 1 Rows(wri).Insert Cells(wri, 1).Value = Cells(wri1, 1).Value Rows(wri1 & ":" & wri2).Group wri = wri + 1 Loop End Sub 

  • エクセルVBAの繰り返し処理の質問

    C列にある項目とG列にある項目を比較して、 一致し、H列にある数字が10以上ならば、B列にフラグ1を立てる という処理を行いたいんですが、 下記ぐらいまでしか作れず、うまくいきません・・・ Sub フラグを立てる処理() Dim i As Integer Dim j As Integer Dim k As Integer i = 1 j = 1 Do j = j + 1 Do i = i + 1 If Cells(j, 8) > 9 Then Cells(i - 1, 4) = 1 End If Loop Until Cells(i, 3) <> Cells(j, 7) Or Cells(i, 3) = "" Loop Until Cells(j, 7) = "" End Sub わかる方がいらっしゃいましたら、お願いします。

  • VBA ループ文

    お手数ですが、回答お願いします。 VBAでループ文を勉強しております。 最初のfor 文で1000行、1000列に文字を入力、 次のdo 文でその文字を全部消したいのですが、うまくいきません。 またfor 文で1000行、1000列で文字を入力しているのですが、 時間がかかるのは仕方がないことなのでしょうか? お手数ですが、ご教授お願いします。 Sub 文字入力() Dim i As long Dim t As long For i = 1 To 1000 For t = 1 To 1000 Cells(i, t) = "wooo" Next t Next i End Sub ================================================================= Sub 文字入力消し() Dim i As long Dim t As long i = 1 Do t = 1 Do Cells(i, t) = "" t = t + 1 Loop Until Cells(i, t) = "" i = i + 1 Loop Until Cells(i, t) = "" End Sub

  • VBA初心者です。プログラム教えてください。

    行1にA~Kの値があり、この範囲で、A列に同じ値が入っている限り1、2、3と始まる値が入るよう処理をする。A列の値が変ったら、また1からスタートする値が入るよう処理をしたい。 Sub Work() Dim M As Integer Dim N As Integer M = 2 N = 2 Do While Cells(2 ,N) <> "" Cells(3 , N) <> "" Or C = Cells(3 , N - 1)  (1) N = N + 1 Loop End Sub 上記を作りましたが、(1)の所でデバックしてしまいます。 解決策をぜひ教えてください。よろしくお願いします。

  • 日付のカ増減は特に行っていません

    参考日が個々でバラバラのため、セルを下に順繰りに送って基準日と照らし合わせる形をとっています。 下記に簡素ではありますが、プロシージャを貼り付けて置きます。 ご回答いただければ助かります Sub ranking() Dim o As Integer Dim Date1 As Date, Date2 As Date o = 5 Date2 = wsFrom.Cells(16, 3) Date1 = wsFrom.Cells(o, 6)←こちらはきちんとセルごとの参考日が代入されている ↑ここのデータ変数が変わらない Do While Cells(3, o) <> "" If DateDiff("m", Date1, Date2) > 0 Then    Cells(7,o).Copy Cells(12,o).paste Else    Cells(7,o).Copy Cells(14,o).paste End If o = o + 1 Loop End Sub

  • 【VBA】土日をスキップして日付計算

    今A列に土日を除いた日付があり、マクロを実行すると、日付が一日加算される下記のようなVBAを書いてます。 Sub DateCulc() i = 3 Do dodate = (DateAdd("d", 1, Cells(i, 1))) Cells(i, 1) = dodate i = i + 1 Loop While Cells(i, 1).Value <> "" End Sub 一日加算した場合、土日をスキップ、つまり金曜の日付は月曜になるようにしたいのですが、思いつきません。WeekDayを使うのだと思うのですが。 ご教授頂けますか。宜しくお願いします。

  • このマクロの繰り返し?

    VBA初心者です。 これを、繰り返し(入れ子)でもっと省略できますか? Sub test() Dim retu1 As Integer retu1 = 50 Do While retu1 >= 1 Cells(retu1, retu1 + 50).Interior.ColorIndex = 9 retu1 = retu1 - 1 Loop 'ココから先をもっと簡単にしたいです! retu1 = 50 Do While retu1 >= 1 Cells(retu1 + 1, retu1 + 50 - 1).Interior.ColorIndex = 9 retu1 = retu1 - 1 Loop retu1 = 50 Do While retu1 >= 1 Cells(retu1 + 2, retu1 + 50 - 2).Interior.ColorIndex = 9 retu1 = retu1 - 1 Loop End Sub どなたか、お願いします。

  • セル内に連続して数字を入力するコード

    空白行に連続で数字を入れたくて次のようなコードを記述しましたが、入力できません。 sub() Dim i As Integer i = 1 Do While Cells(2 * i + 6, 1).Value = "" Cells(2 * i + 6, "1").Value = i i = i + 1 Loop end sub 対象のセルは8行1列目からでセル自体は2行1列結合されています。

  • VBAで空欄にデータに表示

    エクセルVBAのIFを使って、シートaのA列に値があって、B列が空欄の場合のみ、空欄のセルにシートbの値を表示させたいです。 上手くできませんでしたので、教えてください。 Sub Do文2() Dim i As Integer i = 1 If Worksheets("a").Cells(i, 2) = "" Then Do While Worksheets("a").Cells(i, 1) <> "" Worksheets("a").Cells(i, 2) = Worksheets("b").Cells(1, 1) i = i + 1 Loop End If End Sub

  • 下記の式の意味が解りません、どなたか解る方がいらっしゃれば訳していただ

    下記の式の意味が解りません、どなたか解る方がいらっしゃれば訳していただけると大変ありがたいです。 当方、初心者なので宜しくお願い致します。 Private Sub CommandButton1_Click() Dim WCnt As Long Dim WIdx As Long Dim WChk As Integer WIdx = 2 WChk = 0 Do While Not WIdx > 65535 If Cells(WIdx, 4) = 1 And Cells(WIdx, 6) = 1 Then WChk = 1 ElseIf Cells(WIdx, 4) = "" And Cells(WIdx, 6) = 1 Then WChk = 0 End If If WChk = 1 Then Cells(WIdx, 3) = 5 End If WIdx = WIdx + 1 Loop Range("C2").Select End Sub Private Sub CommandButton2_Click() Selection.AutoFilter Field:=1 Range("C2:G65536").ClearContents Range("G2").Select End Sub