- ベストアンサー
エクセルでフォームを使って日付を保存しようとしているのですが、なぜかシートに保存された表示形式が違う
エクセルでフォーム(VBA)を使って日付を保存しているのですが、 保存をした後シートの内容を見ると表示形式が違って保存されている。 保存のときに米暦に直すようにフォーマットをかけているのですが、保存されたデータは、”mm/dd/yy”ではなく、別の形式になってしまっている。 確認した症状としては、たとえば先月のデータであれば、通常に保存されているので今月のデータ(具体的には12/04/06と入力すると形式が、違って保存されてします。 よろしくお願いします。
- みんなの回答 (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
その他の回答 (2)
- papayuka
- ベストアンサー率45% (1388/3066)
保存と言うのは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) この場合、データ-外部データの取り込み-テキストファイルのインポートで書式を指定して開いてやります。
お礼
ありがとうございます。 Date型を指定したら(yyyy)正しく認識しました。
>今月のデータ(具体的には12/04/06と入力すると形式が、違って保存されてします。 今月のデータが、12/04/06 という意味がわかりませんが、 「書式」-「セル」-「日付」で直りませんか。
お礼
ありがとうございます。 Date型を指定したら(yyyy)正しく認識しました。
お礼
ありがとうございます。 Date型でやったら正しく認識しました。 テキストベースは、試してみます。