| 
    
     |  | ▼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してしまえば、問題はないと思われます(こっちはテストしてません^^;)。
 
 以上、ご参考になれば!
 それでは!
 
 |  |