- 締切済み
エクセルVBA DateAdd関数の使い方
お願いいたします・・DateAdd関数の三つ目の引数・・ ↓ココ DateAdd( 単位, 増減値, 基準となる日付・時刻) ここには変数を使うことは可能でしょうか? また、以下のコードは間違いでしょうか? Cells(6, 4).Value = DateAdd("n", 5, Format(Cells(5, 4), "hh:mm")) ※試したら機能しましたけど・・不安です。 とか Cells(6, 4).Value = DateAdd("n", 5, Cells(5, 4),value) ※これは不正確のようです、時々機能しません。 アドバイスお願いいたします<m(__)m>、エクセルVBAです。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- mt2008
- ベストアンサー率52% (885/1701)
> この組み合わせだとマクロが機能しないのです・・ 今、手元にExcelがないので確認できませんがデータ型が異なる物同士を比較しているせいで誤差が出ているからかもしれません。 また、捕捉で提示されたコードですが、私ならこう書きます。 #これも、手元にExcelがないので未検証ですが……。 Sub Add() if DateDiff("n",Cells(1, 2).Value, Cells(1, 1).Value) = 5 Then Cells(2, 1).Value = DateAdd("n", 5, Cells(1, 2).Value) End If End Sub
- mt2008
- ベストアンサー率52% (885/1701)
> ここには変数を使うことは可能でしょうか? もちろん、可能です。 Dim Kijun Kijun = Now() Cells(6, 4).Value = DateAdd("n", 5, Kijun) > Cells(6, 4).Value = DateAdd("n", 5, Cells(5, 4),value) > ※これは不正確のようです、時々機能しません。 誤:Cells(6, 4).Value = DateAdd("n", 5, Cells(5, 4),value) ↓ 正:Cells(6, 4).Value = DateAdd("n", 5, Cells(5, 4).value) もちろん、Cells(5, 4)に日付又は時刻として認識できる値が入っている事が前提ですが。
補足
ご回答ありがとうございます・・ 誤:Cells(6, 4).Value = DateAdd("n", 5, Cells(5, 4),value) ↓ 正:Cells(6, 4).Value = DateAdd("n", 5, Cells(5, 4).value) 上記二つの違いはvalueの前のカンマとピリオドでしょうか? 誤解される記述になっていましたが、実際はピリオドでテストしています。 でも、 Sub Add() If Cells(1, 1).Value = DateAdd("n", 5, Cells(1, 2).Value) Then Cells(2, 1).Value = DateAdd("n", 5, Cells(1, 2).Value) End If End Sub こうした形で、 cells(1,1)に 10:00 cells(1,2)に 9:55 もしくは09:55・・ この組み合わせだとマクロが機能しないのです・・
お礼
mt2008さま・・ ありがとうございました、でもなぜか良い結果が得られませんでした。 データの参照元(引数の)がシート上のアドインなのでそのせいかもしれません、 目的は他の方法で済ませることにしました・・。 ありがとうございました。