[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『型が一致しません』(くま)
教えてください。
下記コードを実行しようとしたところ「エラー13 型が一致しません」と
表示され、k = DateDiff("yyyy", d, i)部分が引っ掛かります。
longを変えてみてもダメで、どのようにすればよろしいのでしょうか。
Worksheets("Sheet2").Cells(1, 3)と
Worksheets("Sheet1").Cells(q, 15)には日付が入っています。
Sub test()
Dim i As String Dim d As String Dim k As Long For q = 6 To 10000
i = Worksheets("Sheet2").Cells(1, 3).Value d = Worksheets("Sheet1").Cells(q, 15).Value k = DateDiff("yyyy", d, i)
If k < 3 Then
Worksheets("Sheet1").Cells(q, 18).Value = DateAdd("yyyy", 3, d)
ElseIf k >= 3 And k < 5 Then
Worksheets("Sheet1").Cells(q, 18).Value = DateAdd("yyyy", 5, d)
End If
Next
End Sub
< 使用 Excel:Excel2013、使用 OS:Windows10 >
DateDiff は、エクセル関数では・・・。 (BJ) 2020/03/04(水) 18:42
第二引数、第三引数は バリアント、かデート型で宣言して エクセル様が自動で日付と認識できる値、 若しくはシリアル値にすれば良いと思います。 ← 思うだけです ^^; 詳しくはマイクロソフト様のHP等でご確認を。。。 m(_ _)m (隠居じーさん) 2020/03/04(水) 18:45
あ、vbaでも使えたんだ・・・ http://officetanaka.net/excel/vba/function/DateDiff.htm
変数iとdに何が入っているか確認してみましたか?
(BJ) 2020/03/04(水) 19:00
こんばんは ^^ ですから。。。変数の宣言がストリング型に なっているからでは? m(_ _)m (隠居じーさん) 2020/03/04(水) 19:30
エラーになった時の q の値を確認後、そのセルの値を確認すると・・・。 >日付が入力されているセル どんな日付なんですかね?
因みに文字でも可。 MsgBox DateDiff("yyyy", "2000/1/9", "2020/3/3") (BJ) 2020/03/04(水) 19:45
ですから、セルの値に間違いが無いのなら、エラーになる方がおかしいと思うので、 エラーになった時のセルの値を確認してくださいと言っているのです。
Worksheets("Sheet2").Cells(1, 3).Value は、固定セルなので間違いはないだろうと思ってます。
表現に気になった事があるので、 セルを選択するコードは見当たらないけどね。 >日付が入力されているセルが選択されています。
(BJ) 2020/03/04(水) 20:05
MsgBox Worksheets("Sheet2").Cells(1, 3).Value MsgBox TypeName(Worksheets("Sheet2").Cells(1, 3).Value) こんなので、何が表示されるか調べて、同じ内容を アップしてみると原因が解るかもしれませんね。。。^^; m(_ _)m (隠居じーさん) 2020/03/04(水) 21:28
(q)は行数の間違いと思いますので確認してみては。
Cells(q, 15) → にCells(1, 15)にしてみるとエラーは出ない。
>k = DateDiff("yyyy", d, i)部分が引っ掛かります。
1) (q)には 6 が代入されるのでCells(6, 15)、つまり O列6行目「O6」に日付が入力されていないため。
2) DateDiff(単位, 開始日時, 終了日時)です。
ここでは(d)に空白である「""」が代入されるので開始日時と違う。
つまり型が一致しないのでエラー表示が出る。
>iとdには、日付が入力されているセルが選択されています。
セルが選択されているわけではありません。セルの値を変数に格納しているだけです。
変数について もう一度確認勉強してください。
他の不具合については回答しません。
(閲覧者) 2020/03/05(木) 21:56
ワークシート関数 → DATEDIF ROUND DATE → 全て大文字
VBA関数 → DateDiff Round Date → 頭文字のみ大文字
同じ関数名でも両方同一だったり違ったりする場合もある
ご存知だったら失礼します。
(jk) 2020/03/05(木) 22:49
茶々入れ専門のjkへ 頭から全部読め。 (BJ) 2020/03/06(金) 01:41
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.