プロが教えるわが家の防犯対策術!

エクセルでフォーム(VBA)を使って日付を保存しているのですが、
保存をした後シートの内容を見ると表示形式が違って保存されている。
保存のときに米暦に直すようにフォーマットをかけているのですが、保存されたデータは、”mm/dd/yy”ではなく、別の形式になってしまっている。

確認した症状としては、たとえば先月のデータであれば、通常に保存されているので今月のデータ(具体的には12/04/06と入力すると形式が、違って保存されてします。
よろしくお願いします。

A 回答 (3件)

こんにちは。



最初に、フォームではなく、UserFormだということで、書かせていただきます。フォームツールを使いこなす人もいないわけではありませんが。

>具体的には12/04/06と入力すると形式が、違って保存されてします。

それには、本来、まともにやるのだったら、入力を、自分が考える日付のDate型として認識させるコードが必要です。本来は、12/04/2006 とすれば、正しいDate型として認識しているはずです。

しかし、ごく簡単な方法は、ワークシート側の自動キャストが働かないようにして、テキストベースで、以下のように貼り付けることですね。たぶん、こんなところで、とりあえずは良いかもしれません。ただし、日付の入力間違いについては、チェックが働いていません。

例:

Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
Dim myDate As String 'Date型でなく、String型で
If KeyCode = 13 Then 'Enter で、入力
 myDate = TextBox1.Text
 Cells(1, 1).NumberFormatLocal = "mm/dd/yy" '必ず先に来る
 Cells(1, 1).Value = myDate
End If
End Sub
    • good
    • 0
この回答へのお礼

ありがとうございます。
Date型でやったら正しく認識しました。
テキストベースは、試してみます。

お礼日時:2006/12/05 19:57

保存と言うのはCSV等ではなく、Excel形式で保存したファイルですか?


例えばCSVの場合、当然セルの書式設定情報を保持して保存されてないので「開く時」に勝手に変換されたりします。
テキストエディタで開くとちゃんと「12/04/06」となっていても、Excelでそのまま開くと「H12.4.6」になってしまうなど。

12/04/06 → H12.4.6(2000/4/6)
12/05/06 → H12.5.6(2000/5/6)
12/06/06 → H12.6.6(2000/6/6)

この場合、データ-外部データの取り込み-テキストファイルのインポートで書式を指定して開いてやります。
    • good
    • 0
この回答へのお礼

ありがとうございます。
Date型を指定したら(yyyy)正しく認識しました。

お礼日時:2006/12/05 19:59

>今月のデータ(具体的には12/04/06と入力すると形式が、違って保存されてします。



今月のデータが、12/04/06 という意味がわかりませんが、
「書式」-「セル」-「日付」で直りませんか。
    • good
    • 0
この回答へのお礼

ありがとうございます。
Date型を指定したら(yyyy)正しく認識しました。

お礼日時:2006/12/05 20:00

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!