アプリ版:「スタンプのみでお礼する」機能のリリースについて

マクロでシートの自動作成するのに悩んでいます。

下記の二つを条件を入れるにはどうしたらいいですか?

1、コピーしたシートの日付を明日の設定する。
2、過去のシートを開いても日付を変えたくない。


コピー元のシートを"原本"という名前にしてます。

アドバイスよろしくお願いします。

A 回答 (4件)

質問内容がよくわかりません。



>1、コピーしたシートの日付を明日の設定する。

シートの日付というのはシート名ということでしょうか?

単純にDate+1にすれば明日の日付が取得できると思うのですが・・・

>2、過去のシートを開いても日付を変えたくない。

どうしてシートを開くと日付が変わってしまうのでしょうか?

現在どのようなマクロが設定されていて、どの部分が問題になっているのか、ポイントを絞って、シート構成やセル位置などを含め、できる限り具体的に質問するようにして下さい。
    • good
    • 0

とりあえず新しいブックに「原本」という名前のシートを作成して、以下のマクロを実行してみてください。



「原本」シートを複写して、シート名が「実行した日+1」のシートを作成しますが、既に同名のシートがある場合は何もしません。
もし解釈が違っていたらごめんなさい。

Sub Macro1()
Dim nmSheet As String
Dim idx As Integer
 nmSheet = Format(today + 1, "YYYY-MM-DD")
 For idx = 1 To ThisWorkbook.Worksheets.Count
  If Worksheets(idx).Name = nmSheet Then Exit Sub
 Next idx
 Worksheets("原本").Copy after:=Worksheets("原本")
 ActiveSheet.Name = nmSheet
End Sub

ただしシート数が多くなったときなどのエラー処理は組み込んでいませんから、ずっと使っているとエラーになる可能性はあります。
エラー処理は必要に応じて適宜組み込んでください。
    • good
    • 0

>コピーしたシートの日付を明日の設定する。


どういう意味?
シート名に日付文字列を入れたいのか?
ブックには作成日付などあるが、シートには無い。セルの値を日付を入れたいのか。
しっかり質問内容を表現してください・
シートの名前のことなら下記のコードを実行すればわかるだろう。
Sub test01()
MsgBox Date
MsgBox Date + 1
MsgBox Format(Date + 1, "yymmdd")
a = #12/31/2009#
MsgBox a
MsgBox a + 1
MsgBox Format(a + 1, "yymmdd")
End Sub
わざと年末の例も挙げておいた。
シートの何処かのセルの値のことなら、やはり上記で判るだろう。
>過去のシートを開いても日付を変えたくない
これも可笑しな表現。
将来そのシートを見てもその日に変わらない、というべき。
マクロでセルの値を設定すれば(関数と違って)セルの値は変わらないよ。
ただしイベントプロシージャ(自動実行)の中でDateを使うと、将来その日に変わる。
>コピー元のシートを"原本"という名前にしてます
何の関係があるのかな。
コピー元のシート名と、コピー先のシート名は関係ないはず。
関係持たせたいなら、質問に層初めから書くこと。
ーーー
明日の名前のシートを自分が指定するVBAの中で作るなら
Sub test02()
Worksheets.Add.Name = Format(Date + 1, "yymmdd")
End Sub
これで良いのか。
ーーー
しかし挿入の操作の都度ということになると難しい。
シートを挿入するとき
ThisWorkookのイベントの
Private Sub Workbook_NewSheet(ByVal Sh As Object)
MsgBox "AAA"
End Sub
は反応するが、シートの移動またはコピーのコピーでは反応しないようだ。
だから別途コピー以下をボタンのクリックイベントなどで、自分のコードで面倒を見ないと(記述し実行しないと)ダメかもしれない。操作者がシートをコピーしたとき、というイベントがエクセルに無い。
    • good
    • 1

#02です


VBAは久方ぶりだったのでミスしました。4行目は
 nmSheet = Format(Date + 1, "YYYY-MM-DD")
が正しいです。

すみません
    • good
    • 0

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