[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『シート名の増加』(愛子)
お世話になります。
日報1日から31日のシート名をVBAで作成したいのです。
シート1には、日報の表があります。
シート1の表と同じものが、マクロを実行すればシートが追加され
結果、シート1を残し次の右シートから各シート名が”1日”から"31日"
迄(各シートには同じ日報の表が作られます。)にしたいと思って色々調べ
下記VBAを探しました。
Sub test()
Dim k As Long
For k = 1 To Day(WorksheetFunction.EoMonth(Date, 1)) Sheets("a").Copy after:=Worksheets(Worksheets.Count) ActiveSheet.Name = k & "日" Next End Sub
しかし実行すれば1日から30日迄で31日がありません。
質問1、どこをなおしていいか、わからなくなりましたので教えて頂けない
でょしょうか?
質問2、シート1のa1セルに日報の日付を入れたいのです。
例えば令和 年 月 日 と記載ます。
マクロが実行されれば、
シート名”1日”のa1セルに自動的に令和3年5月1日と
表示され、シート名”2日”のa1セルには、令和3年5月2日と
最後、シート名”31日”のa1セルには、令和3年5月31日と
なるイメージです。(出来ましたら当月の31日もしくは30日の
大小の日迄。)
次に月が変われば当該の月に、年が変われば当該の年に置き換わる
ように教えていただきたいのですが。
質問3、上記の質問1,2を含まえ、月報(1月から12月)に置き換えた
場合のVBAを教えていただけないでしょうか?
以上、よろしくお願いします。
< 使用 Excel:Excel2013、使用 OS:Windows10 >
Sub test() Dim k As Long Application.ScreenUpdating = False For k = 1 To Day(WorksheetFunction.EoMonth(Date, 0)) Sheets("a").Copy after:=Worksheets(Worksheets.Count) ActiveSheet.Name = k & "日" Range("A1").Value = WorksheetFunction.EoMonth(Date, -1) + k Range("A1").NumberFormatLocal = "ggge年m月d日" Next Application.ScreenUpdating = True End Sub
>質問3、上記の質問1,2を含まえ、月報(1月から12月)に置き換えた > 場合のVBAを教えていただけないでしょうか?
それだけの説明では、何がどうなればいいのか明瞭に伝わってこないです。
(半平太) 2021/05/13(木) 17:06
砂糖様、有難うございました。
EoMonth(Date, 0))ネットで調べましたら当月は、0ですね。−は、前月ですね。
半平太さん
有難うございました。
上記VBAを走らせますと、シート名:aの右からシート名:1日から31日までうまくいくんですが、
日報の日付が、シート名:2日 のところに令和3年5月1日になっています。ずーと来て最後シート名:
31日のところで、日報の日付が令和3年5月30日となり シート名:a は、日報の日付が31日と
なっています。色々触ったのですが思うようにいきません。教えてください。
質問3、につきましては日報がわからないので月報のVBAは、作っていませんので、
半平太さんに作って頂いたVBAを元に下記コードの2箇所を変更しましたが、
実行すれば1月から5月までシートが作成されました。?
For k = 1 To Dayをmonth に変更済み
ActiveSheet.Name = k & "日" を"月"に変更済み
月報のVBAの作成の折、月報の日付は、変動しますので、コードを省こうとしましたが、
うまく行きません、すみませんが省いて頂けますでしょうか?
(愛子) 2021/05/13(木) 20:17
今、衝突しましたアップですが、
下記の通りです。
下記の文章「 」が貼りつけの際、切り取られていました。
大変、申し訳ございませんでした。
「上記お返事が遅れまして大変申し訳ございませんでした。」
(愛子) 2021/05/13(木) 20:23
うまく行きました。
有難うございます。
自分で出来なにので、申し訳ございませんが、
後は、日報のシート名の数値と日報の日付のずれ 及び月報の日付が不要 ということに
なります。
すみません、よろしくお願いします。
(愛子) 2021/05/13(木) 20:35
>日報の日付が、シート名:2日 のところに令和3年5月1日になっています。ずーと来て最後シート名: >31日のところで、日報の日付が令和3年5月30日となり シート名:a は、日報の日付が31日と >なっています。色々触ったのですが思うようにいきません。教えてください。
何のことか分からないです。こっちでは普通に出来上がっています。 私のコードに何か変更を加えてないですか?
(半平太) 2021/05/13(木) 20:36
半平太さん
お世話になっています。
下記、コードは、半平太さんの上記コードを貼り付けしたものです。
そしてエクセルの表にも同じものを貼り付け直しました。
実行しますと、やはりシート名:2日の日報日付は、令和3年5月1日になっています。(以降のシート名
の数値と日報日付は、1日づれています。)最後のシート名:31日の日付は5月30日となります。
そしてシート名:a は、令和3年5月31日、シート名:1日の日付はブランクとなっています。
でも半平太さんは、普通に出来上がっているのですね。私のどこかが間違っているとは思いますが、
どこかわかりません。
Sub test()
Dim k As Long Application.ScreenUpdating = False For k = 1 To Day(WorksheetFunction.EoMonth(Date, 0)) Sheets("a").Copy after:=Worksheets(Worksheets.Count) ActiveSheet.Name = k & "日" Range("A1").Value = WorksheetFunction.EoMonth(Date, -1) + k Range("A1").NumberFormatLocal = "ggge年m月d日" Next Application.ScreenUpdating = True End Sub
(愛子) 2021/05/13(木) 21:39
半平太さんは、何のことか分からないです。と書かれていますが、
以下の事はお解りと思うのです。
ただ認識が違いで、私が間違っていればよくないので下記に思いを記載しました。
マクロが実行されれば、
シート名”1日”の1が、a1セルの日報の日にちの1にして頂きたいのです。 シート名”2日”の2が、a1セルの日報の日にちの2にして頂きたいのです。 以降同じ扱いにして頂きたいのです。
そのシート名の数値と日報日付の数値がずれているということです。
(愛子) 2021/05/13(木) 22:10
私のコードは、標準モジュールに貼り付けて実行してください。
(半平太) 2021/05/13(木) 23:02
砂糖さまが言われるようにf8で試し、シート名:1日 のところで日報日付が記載されていないのは、
わかったのですが、コードをどうしたらいいのかがわからなかったのです。
標準モジュールに貼り付けることが頭、働きませんでした。
お時間を取らせて申し訳なかったです。
月報は、私のほうで後で処理します。
本当に有難うございました。
砂糖さまも時間を取らせてすみませんでした。有難うございました。
(愛子) 2021/05/13(木) 23:18
Sub 別案() Dim i As Long Dim MyDate As Date
MyDate = Date Worksheets("a").Range("A1").NumberFormatLocal = "ggge年m月d日"
For i = DateSerial(Year(MyDate), Month(MyDate), 1) To DateSerial(Year(MyDate), Month(MyDate) + 1, 0) Sheets("a").Copy after:=Worksheets(Worksheets.Count) With Worksheets(Worksheets.Count) .Name = Format(i, "d日") .Range("A1").Value = i End With Next i
End Sub
ポイントは以下のとおり。
(1)アクティブシートに依存しないようにした (2)ループのカウンタをシリアル値そのものにした (3)Format関数を使うようにした
(もこな2 ) 2021/05/14(金) 10:56
先程、何かコメントがあるかと思い開いてみましたら、もこな2様から
別案を頂いていました。
マクロを実行して3つのポイントは、理解できました。(もちろん、コードは、自分では書けませんが
コードを見ての意味は、自分ながらに理解できました。)
有難うございました。
(愛子) 2021/05/14(金) 20:21
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.