- ベストアンサー
INPUT関数で入力した日付でワークシートとセルに値をいれる。
こんにちは、最近VBAを勉強し始めたのですが、 躓いてしまいました。 すでにあるワークシートからINPUT関数で”20101016”を入力して ワークシートをコピー(シート名は”20101016”)する事はできたのですが このシートに”2010年 10月 16日 (曜日)”を表示する事ができないのです。 指定したセルには”20101016”が入っているのですが 表示が"###################”になってしまいます。 (”負の日付又は時間は###の表示になります。”の意味がわかりません。) 書式設定で日付等をいじっても変化がありません。 どなたか、ご教示願います。 Sub 新規シート() Dim tuki As String ActiveSheet.Copy after:=ActiveSheet 'アクティブシートの後ろへコピーを作る。 Range("a46:r57").Select 'コピー元の値を削除 Selection.ClearContents Range("a1").Select tuki = InputBox("日付を半角英数字で入力してください。" & Chr(13) & _ "yyyymmdd 形式で入れてね!", "日付入力") 'tukiに8桁を入力 If tuki = "" Then Application.DisplayAlerts = False ActiveSheet.Delete Application.DisplayAlerts = True '入力が無い場合、作成したシートを削除 Else On Error Resume Next ActiveSheet.Name = tuki '新規ワークシート名に”tuki”を代入 Range("d6").Value = tuki ’ここが問題! If Err.Number = 1004 Then MsgBox "日付が重複しています。" Application.DisplayAlerts = False ActiveSheet.Delete Application.DisplayAlerts = True 'シート名が重複した場合、警告後に削除 End If End If End Sub
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
>Range("d6").Value = tuki ’ここが問題! ↓ Range("d6").Value = Left(tuki, 4) & "/" & Mid(tuki, 5, 2) & "/" & Right(tuki, 2) ”20101016”は日付じゃないよね "2010/10/16"が日付だよ 日付にしたければ、日付にしなきゃ
その他の回答 (1)
- grumpy_the_dwarf
- ベストアンサー率48% (1628/3337)
tukiの内容が"2010/10/16"などExcelが日付だろうと思い込む文字 列ならよかったんですが、間違ってExcelが数値だろうと思い込む 20101016を入れちゃったんですね。 Excelは基準とする日(前世紀初頭)からの経過日数で日付を扱い、 その最大値は西暦9999年末です。数値で書くと296万弱ってところ ですね。そこに2010万ちょいの数値を入れて「日付で表せ」と言わ れても無理、範囲外だからとエラー表示になります。 入力する文字列を考え直してください。
お礼
ご返事ありがとうございます。 人間の目から見ると、普通に日付と認識していましたがEXCELから見ると… おはずかしい限りで、ご教授ありがとうございました。
お礼
ご返事ありがとうございます。 LEFT、MID、RIGHT関数は以前使ったことがあったので思い出しながら 実行してみました。 問題なく動作することが確認できました。 頂いたコードに&”日”を追加して表示させ、曜日は=TEXT(D6,"(aaa)")で対応しました。 ご教授、ありがとうございました。