|
▼123 さん:
新緑の季節の昼下がり。
まだまだお昼の東京から。
問題は、以下の部分。
>TextBox1.Value = Format(TextBox1.Value, "gee.mm.dd")
>tdate = TextBox1.Value
ここでテキストボックスの日付表示をgee.mm.dd形式に変更していますよね。
この形式の文字列を、VBAは日付型として認識しません。
IsDate関数を使用して調べてみると、Falseが返ってきます。
DateDiff関数は日付型の変数を扱うので、日付型ではないgee.mm.dd(おそらくString型として扱われている)が引数になると、「型が一致しません」というエラーが出ますよね。
これが原因です。
なので、
>TextBox1.Value = Format(TextBox1.Value, "gee.mm.dd")
この部分をなくして、yyyy/mm/dd形式などで入力してもらうようにするのがベストかと思います。
もしくは、以下のように
Dim tdate As Variant
Dim ddate As Variant
Private Sub CommandButton1_Click()
For i = 1 To 10
ddate = Cells(i, 1).Value
Cells(i, 2).Value = DateDiff("yyyy", tdate, ddate)
Next i
End Sub
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
tdate = TextBox1.Value
TextBox1.Value = Format(TextBox1.Value, "gee.mm.dd")
End Sub
このようにして、変換する前にテキストボックスの日付型をGetしてしまえば、問題はないと思われます(こっちはテストしてません^^;)。
以上、ご参考になれば!
それでは!
|
|