『日付入力のしかた』(まき) 同じフォーマットのシートを何枚か作るさいに1枚目のエクセルシートセルに『2004年5月 7日(金曜日)』としたときに2枚目のエクセルシートセルに『2004年5月 10日(月曜日)』とオートで日付(土・日は除外)が変わるようにする方法があるなら教えてください。さらにエクセルのシート名を「2004年5月 10日(月曜日)」なら「0510」などとしたいのですがかのうですか?? ---- マクロを利用することになると思いますが、問題ありませんか? (INA) ---- やっぱりそうなんですか・・・。マクロ使用するのは問題ないのですが、 マクロの使い方が一切わからないので、あきらめるしかないのでしょうか? 参照できるHPなどあったら教えてください。 (まき) ---- 日付を入力するセル番地をお教え下さい。 また、その日付の書式設定は、日付型or文字列のどちらでしょうか?  あと、1ブックに作るシート数は、1ヶ月分でしょうか? 仕様が分かれば、マクロ自体は簡単に作れますので、お教え下さい。 (INA) ---- ・1箇所目は番地はR2です。 (R2からV2まで結合しているのですが)  ・2箇所目は番地はC26です。(C26からT26まで結合しているのですが) ・書式は1箇所目のフォントは(12)2箇所目のフォントは(28)で両方とも文字 列です。 ・1ブックは一ヶ月分です。 ・あとできればなのですが2箇所目に『本日、2004年5月 10日(月曜日)現 在・・・』などと文字を入力することはできますか?日付以外の文字は毎回変わらな い固定の文字です。  以上ですよろしくお願いいたします。 ---- >1箇所目 日付として扱いたいので、文字列でなく ユーザー定義で、 yyyy"年"m"月"d"日""("aaaa")" としてはダメでしょうか? >2箇所目 スペースや、全角半角、は正しいですか? 「月」の後に全角スペースですか? マクロはプログラムです。 文字や日付の取り扱いはシビアです。  決まり切ったこと、条件が明確なこと、かならず決まった判断が出来ること が重要です。 これまでのご説明では、 >1箇所目 『2004年5月 7日(金曜日)』 ↑ 2桁表示のスペース? >2箇所目 『本日、2004年5月 10日(月曜日)現  在・・・』             ↑ このスペースは、必ず必要なもの?     いずれにせよ日付が半角文字で表示されて問題ないなら どちらも、ユーザー定義で表示した方が容易だと思います。 >2箇所目 のユーザー定義の場合です。 "本日、"yyyy"年"m"月"d"日""("aaaa") 現 在・・・" (INA) ---- ・日付は全角表示可能であればユーザ定義でOKです。 ・月の後のスペースですが、日にちが2桁(10以降)は不要で1桁(1〜9)の場合は全角で1つスペースが必要です。 (まき) ---- >・日付は全角表示可能であればユーザ定義でOKです。 残念ながら日付型は、半角にしかできません。 それでは文字列から取得して判別させるしかないので、もっと詳しくお教え下さい。 >>『2004年5月 7日(金曜日)』 というのは、5の前にスペースは必要なく、 日付のみ、二桁目のスペースが必要ということでよろしいですね? >・月の後のスペースですが、日にちが2桁(10以降)は不要で1桁(1〜9)の場合は >全角で1つスペースが必要です。 >> 『本日、2004年5月 10日(月曜日)現  在・・・』      ↓ 『本日、2004年5月10日(月曜日)現  在・・・』 が正しいということですね?      (INA) ----- ・『本日、2004年5月10日(月曜日)現  在・・・』でよろしいです。 >それでは文字列から取得して判別させるしかないので、もっと詳しくお教え下さい。 とありますが何を教えたらよろしいですか?  本当に何もわかってなくて申し訳ありません。INAさんもおいそがところありがとうございます。 (まき) ---- 表示形式で、日付の数字を全角にすることは可能です。 ユーザー定義で、先頭に [DBNum3] (←カギ括弧も含む)を付けます。 [DBNum3]"本日、"yyyy"年"m"月"d"日("aaaa")現  在・・・" ってところでしょうか。 (ちゅうねん) ---- 表示形式「d」が何桁かはコード内で調べれば、判別できるので、 日付入力値によって、表示形式の差し替えできますよ。 もしよければどぞ。   With Selection If Len(Format(Selection.Value, "d")) = 2 Then .NumberFormatLocal = _ "[DBNum3]""本日、""yyyy""年""m""月""d""日""(aaaa)""現  在""" Else .NumberFormatLocal = _ "[DBNum3]""本日、""yyyy""年""m""月 ""d""日""(aaaa)""現  在""" End If End With   割り込み失礼しました。 (KAMIYA) ----- 表示形式で全角が使えるとのことですので、 あとは、1桁のときの日付の前のスペースですが、 これは 0 (ゼロ)でも問題ないでしょうか? もし問題なければ、 [DBNum3]"本日、"yyyy"年"m"月"dd"日("aaaa") にすることで、  本日、2004年5月09日(月曜日) のようになり、日付型として扱えます。 いかがでしょうか? >とありますが何を教えたらよろしいですか? 私の文章で、疑問符(?)の付いている文章です。 ↓ >  >>『2004年5月 7日(金曜日)』 > というのは、5の前にスペースは必要なく、 > 日付のみ、二桁目のスペースが必要ということでよろしいですね? (INA) ---- 1桁のときの日付の前のスペースですが、これは 0でも問題ないです。 よろしくお願いいたします。 (まき) ---- それと、ご質問の回答はどうなりますか? (INA) ---- 一応『[DBNum3]"本日、"yyyy"年"m"月"dd"日("aaaa")』で定義してできるというのは わかりましたが、具体的に1枚目、2枚目のシートで自動的に日付を変える方法がわかりません。(KAMIYA)さんなどからも回答いただきましたがはじめに記載したように私はマクロについてまったく理解がないため(KAMIYA)回答をどう使っていいのかわかりません。(INA)さんもしよろしければ今までの内容を整理していただき、私の一番最初の質問の答えになるように答えていただけないでしょうか?? (まき) ---- >などとしたいのですがかのうですか?? マクロを使えば可能です。 私の最後の質問には答えていただけないようなので、 既記の表示形式で問題ないと解釈してよろしいですか? (INA) ---- すみませんでした。問題ありません。 (まき) ----- 作ってみました。お試し下さい。 Sub Sample() Dim myDate As String Dim i As Long myDate = Application.InputBox("日付を入力して下さい。" & Chr(13) & Chr(13) & _ "入力例) 2004/01/01", _ "シート作成マクロ", Format(Date, "yyyy/mm/dd"), Type:=2) If IsDate(myDate) = False Then MsgBox "入力が不正です。マクロを終了します。", vbExclamation, "入力エラー" Exit Sub End If Range("R2").Value = CDate(myDate) Range("C26").Value = CDate(myDate) ActiveSheet.Name = Format(myDate, "mmdd") For i = 1 To 30 If Month(CDate(myDate)) <> Month(CDate(myDate) + i) Then Exit For If Not (Weekday(CDate(myDate) + i) = 1 Or Weekday(CDate(myDate) + i) = 7) Then Worksheets(Format(myDate, "mmdd")).Copy after:=Worksheets(Worksheets.Count) With ActiveSheet .Range("R2").Value = CDate(myDate) + i .Range("C26").Value = CDate(myDate) + i .Name = Format(CDate(myDate) + i, "mmdd") End With End If Next i End Sub (INA) ---- すごいです。感激しました。もう少しお願いですが 番地R2・C26ともにセンタリングで表示したいのですが。。 あと日付の後に『本日、2004年5月10日(月曜日)現  在・・・』と曜日を自動入力したいのですが?? (まき) ---- もとになるシートを開いている状態でマクロを実行して下さい。 開かれているシートをコピーしますので、 そのシートが「R2・C26ともにセンタリング」されて、 表示形式も設定されていれば、問題ないはずです。 (INA) ----- できました!!! 本当にありがとうございました。 (まき)