はじめまして。常連の方々の的確な回答に いつも目からウロコをこぼしています。
さて、連休を良いことにVBAで遊んでいたのですが、些細な事で座礁してしまい、ココだけが納得できない状態で暫定完成してしまいました。何か基本的な事を見落としているような気がするのですが、アドバイス頂けませんでしょうか?
'本日は 2001/05/06 なり
Dim TMP As Variant
TMP = InputBox("日付", , Date) '実行時にEnterキーを押すものとする。期待値"01/05/06"
If TMP = False Then Exit Sub '入力キャンセル時の処理
Cells(1, 3) = TMP
結果 TMP・・・・・"01/05/06" Variant/Stringタイプ
セル1,3・・・94/01/05 Variant/Object/Rangeタイプ
と、セルに入れたとたんに 入力した日付が変わってしまっています。また、直後に下記のように比較しても FALSEが返ってきます。
If TMP = Date Then
If Cells(1, 3) = TMP Then
If Cells(1, 3) = Date Then
TMPを強制的に文字変数にしてエラーを拾って・・・や、Date$を使って文字を置換していっても
期待した動作が可能のような気もするのですが、無用のゴチャゴチャな記述も避けたく、
また、過程に納得がいかず悶々としています(^^;
セル1,3に 01/05/06 と表示し、Date関数で格納したセルと単純に比較出来るようにしたいのですが、いかがなものでしょう? よろしくお願いいたします。
|