• ベストアンサー

エクセルでフォームを使って日付を保存しようとしているのですが、なぜかシートに保存された表示形式が違う

エクセルでフォーム(VBA)を使って日付を保存しているのですが、 保存をした後シートの内容を見ると表示形式が違って保存されている。 保存のときに米暦に直すようにフォーマットをかけているのですが、保存されたデータは、”mm/dd/yy”ではなく、別の形式になってしまっている。 確認した症状としては、たとえば先月のデータであれば、通常に保存されているので今月のデータ(具体的には12/04/06と入力すると形式が、違って保存されてします。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.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

mysawaki
質問者

お礼

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

その他の回答 (2)

  • papayuka
  • ベストアンサー率45% (1388/3066)
回答No.2

保存と言うのは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) この場合、データ-外部データの取り込み-テキストファイルのインポートで書式を指定して開いてやります。

mysawaki
質問者

お礼

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

noname#153814
noname#153814
回答No.1

>今月のデータ(具体的には12/04/06と入力すると形式が、違って保存されてします。 今月のデータが、12/04/06 という意味がわかりませんが、 「書式」-「セル」-「日付」で直りませんか。

mysawaki
質問者

お礼

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

関連するQ&A

専門家に質問してみよう