質問: vbaで datediffで日数を求めていたのですが何故か11月だけエラーを起こします start=.range("b2") end= .range("b3") x=datediff("d".start.end) と言った簡単(コピペじゃないので誤字ってるかも)なものなのです。 シートへの入力はユーザーフォームからのもので1-12までしか月は入らないようになっています。 スタート.エンドはdateを宣言しています。 エラーとしてはend=でemptyを返されて止まります。 日や年は関係ないようです。他の月だと正常です。 原因はなんでしょうか?
回答: こんにちは。 宣言が日付でも、startとendに、考えられない数値が入っている、 ということです endは、変数に使ってはダメなんですよ。 まず、変数を予約語でないものに修正。でないなら、変数は使わない 次、フォームからセルに。。。 これですね。 セルは、書式設定をyyyy/m/dなど、正しく設定して、 年、月、日を正しく扱うようにしてください datediffの計算前に、正しくセルにあるようなら、 datediff("d", .Range("B2").value , .Range("B3").value ) と、セルを指定です。 フォームは、テキストボックスの場合、基本的に文字列です 日付は、formatで、正しく日付を扱えるようにするか、 文字列を正しく加工して、セルに設定してください 11月がエラー、、 エクセルは言ったことしかしないのです。 エラーなのは、使い方に問題があるということです