こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

VBA 数日後の日付をうまく求められません

Windows7/Excel2002を使っています。
エクセルVBAで、数日後の日付をうまく求められません。

例えば、31MAR.xls というエクセルファイルがあります。
(ファイルは、デイリーベースで存在します。)
このファイル名の月と日にちを変数に入れます。
DD = 日にち (例えば、31日なら“31”)
MMM = アルファベット3文字 (3月なら“MAR”)

入力シートのセルC3に納期日を入れたいのです。
納期日は5日後もあれば、6日後もあり、取引先によって違いますので、
31MAR.xlsファイルのSheet1に、会社毎の納期日を入力しておきます。

セルA列(会社名)  セルB列(納期日)
ABC会社        5
DEF会社        6
GHI会社        7

セルB列は、5とか6とかシンプルに数字のみ入っています。
今日の日付をファイル名から変数に格納し、それにB列の数字をプラスした日付を求めたいのです。

--------------------
Dim HIDUKE As Date 
Dim PLUS As Integer

HIDUKE = Left(ThisWorkbook.Name, 5)
MMM = Mid(HIDUKE, 3, 3)
DD = Left(HIDUKE, 2)
Set NYURYOKU = Workbooks(DD & MMM & ".xls").Worksheets("入力")

※ここで、変数PLUSを求める記述あり(省略させていただきます)

NYURYOKU.Cells(3, 3) = HIDUKE + PLUS
--------------------

上記マクロを起動すると、
NYURYOKU.Cells(3, 3) = HIDUKE + PLUSのところで
実行時エラー‘13’ 型が一致しません。
となってしまいます。

変数HIDUKEには、31MARと入ってきており、
変数PLUSには、処理したい会社の納期日は入ってきています。

ABC会社であれば、NYURYOKU.Cells(3, 3)に 4月4日 と値を入れたいのです。

どなたか教えてください。よろしくお願いします。

投稿日時 - 2016-04-10 21:01:19

QNo.9156599

困ってます

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

NYURYOKU.Cells(3, 3) = HIDUKE + PLUS

NYURYOKU.Cells(3, 3) = cdate(cstr(year(date)) & "/" & MMM & "/" & DD) + PLUS
では?
省略して、NYURYOKU.Cells(3, 3) = cdate( MMM & "/" & DD) + PLUS
でも大丈夫(当年が自動補完される)な様ですが念のため。

投稿日時 - 2016-04-10 23:53:24

お礼

ご回答ありがとうございます。
試してみたところ、動きました! 
これで仕事がはかどります。助かりました。
どうもありがとうございました。

投稿日時 - 2016-04-12 21:25:18

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

HIDUKE が 日付形式で、PLUS が整数形式で定義されているので、どちらかの形式に統一する変換をしてから加算をしないと「型が一致しません」と言われるのではないでしょうか。

投稿日時 - 2016-04-10 21:15:27

補足

ご回答ありがとうございます。
私が書いた上記内容に間違いを発見しました。

誤 Dim HIDUKE As Date 
正 Dim HIDUKE As String
になります。


自分で型を変えてやってみたのですが、ぐちゃぐちゃになってしまい、いずれもうまくいきませんでした。
具体的にどこをどう変えればいいのか、教えていただけたら助かります。

よろしくお願い致します。

投稿日時 - 2016-04-10 21:26:25

あなたにオススメの質問