業務短縮化のために、VBAを使って社内のスケジュール管理ファイルを制作しています。
つくろうとしているのは、こんな感じです。
1、まず、罫線だけのマスター用紙があります。
2、別シートに設置した「スケジュール作成」ボタンをクリックすると、マスター用紙がコピーされ、新しいシートが作成されます。
この新しいシートの「A」列に、自動的にカレンダーが入力されます。
この2の部分をVBAで自動化したいと考えています。
すでにボタン押下→シートをコピーするところはできました。
カレンダーを作るには、月の最終日の日にちと曜日をとればいいのかな?とか予想はしているのですが。。。
手掛かりなどありましたらお願いします
No.1ベストアンサー
- 回答日時:
関数でもできるので参考に
A1=2007、B1=12
A2に=DATE($A$1,$B$1,1)
A2に =IF(A2="","",IF(A2+1>DATE($A$1,$B$1+1,0),"",A2+1))
以下32行目まで式を複写する。
これで1か月分の日付が出る。
ーー
VBAでこの部分は(ついでに曜日も出した)
Sub test01()
y = Cells(1, "A")
m = Cells(1, "B")
For i = 2 To 32
Cells(i, "A") = DateSerial(y, m, i - 1)
Cells(i, "B") = Format(DateSerial(y, m, i - 1), "aaa")
If DateSerial(y, m, i - 1) = DateSerial(y, m + 1, 0) Then End
Next i
End Sub
ーー
人により色々なコードの組み方がありそう。
上記での、ポイントは終了脱出条件のDateSerial(y, m + 1, 0)
で月末日を出している0の部分です。
この回答への補足
すみません。補足です。
日付の入力するのはA6からです。
あと、12月中に1月のカレンダー・・・というように、基本的に1ヵ月先のものを制作します。
教えていただいたものだと、「DateSerial」を使って作成日の日付をとって・・という感じでしょうか?
正解に近づけそうなのに悔しいのでがんばります!
お二人の間をとって、
Sub Sheet_Copy()
Worksheets("ワークシート").Copy After:=Worksheets("ワークシート")
y = Cells(3, "C")
m = Cells(3, "D")
For i = 1 To 31
Cells(i + 7, "A") = DateSerial(y, m, i - 1)
Cells(i + 7, "B") = Format(DateSerial(y, m, i - 1), "aaa")
If DateSerial(y, m, i - 1) = DateSerial(y, m + 1, 0) Then End
Next i
End Sub
というふうにしてみました。
(シート内の「3C」に作成したい予定表の年を入力、「3D」に月を入力します)
すると一応指定したセル内に日付が収まるんですが・・。
例えば、2007年の11月を指定すると、1行目が10月31日になってしまいます。。。(水曜日?なのに)
あと、スケジュール帳は部内で共有するため、
>(シート内の「3C」に作成したい予定表の年を入力、「3D」に月を入力します)
↑の部分をできれば「スケジュールの作成」ボタンとともに別ワークシートに設定したいと思います。(このワークシートは後ほど、管理者しか見られないように設定します)
そこでy = Cells(3, "C","sheet1")と指定したら、コンパイルが通らずにエクセルから怒られてしまいました。。。(当たり前でしょうか)
No.2
- 回答日時:
このような質問は実際のシートが見えないので回答しにくいですが、できるだけ汎用的な方法で回答します。
ヒント程度に考えてください。マクロは以下でよいでしょう。カレンダの開始セルはA3としています。
Sub Macro1()
Worksheets("Master").Copy After:=Worksheets("Master")
ActiveSheet.Name = Format(Date, "YYYY") & "年" & Format(Date, "MM") & "月"
ActiveSheet.Range("A3").Value = Date - Day(Date) + 1
End Sub
マスタシートのA4セルには
=IF(MONTH($A$3+ROW(Z1))=MONTH($A$3),$A$3+ROW(Z1),"")
を貼り付けて、下方向に30行分コピーして、セルの書式を日付形式にします。
マクロを実行するとA3セルと同じ月の日付列が生成されるはずです。
この回答への補足
すみません。補足です。
日付の入力するのはA6からです。
あと、12月中に1月のカレンダー・・・というように、基本的に1ヵ月先のものを制作します。
教えていただいたものだと、「Date」を使って作成日の日付をとって・・という感じでしょうか?
正解に近づけそうなのに悔しいのでがんばります!
お二人の間をとって、
Sub Sheet_Copy()
Worksheets("ワークシート").Copy After:=Worksheets("ワークシート")
y = Cells(3, "C")
m = Cells(3, "D")
For i = 1 To 31
Cells(i + 7, "A") = DateSerial(y, m, i - 1)
Cells(i + 7, "B") = Format(DateSerial(y, m, i - 1), "aaa")
If DateSerial(y, m, i - 1) = DateSerial(y, m + 1, 0) Then End
Next i
End Sub
というふうにしてみました。
(シート内の「3C」に作成したい予定表の年を入力、「3D」に月を入力します)
すると一応指定したセル内に日付が収まるんですが・・。
例えば、2007年の11月を指定すると、1行目が10月31日になってしまいます。。。(水曜日?なのに)
あと、スケジュール帳は部内で共有するため、
>(シート内の「3C」に作成したい予定表の年を入力、「3D」に月を入力します)
↑の部分をできれば「スケジュールの作成」ボタンとともに別ワークシートに設定したいと思います。(このワークシートは後ほど、管理者しか見られないように設定します)
そこでy = Cells(3, "C","sheet1")と指定したら、コンパイルが通らずにエクセルから怒られてしまいました。。。(当たり前でしょうか)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) シートが違う2枚のエクセルシートにある数値を別シートにコピーしたい(VBA?) 8 2022/03/31 12:24
- Visual Basic(VBA) Excel VBA 最終行を取得しVlookup関数をコピーする方法をコーディングで教えてください。 3 2023/05/11 13:14
- Excel(エクセル) エクセルでカレンダーを作りたい 5 2023/05/16 07:32
- Visual Basic(VBA) VBA 複数のブックに同じ列を表示させる方法 2 2022/07/20 23:49
- Excel(エクセル) 【困っています】VBA 追加処理の記述を教えてください。 1 2022/08/25 22:54
- Visual Basic(VBA) 【ExcelVBA】動的にボタン、ボタン名を生成できますか? 7 2022/04/08 12:54
- Visual Basic(VBA) エクセルVBA 2 2022/04/27 13:29
- Excel(エクセル) VBA ふたつの同じ様式シートのセルをコピーしたい 2 2023/03/08 15:28
- Excel(エクセル) エクセルで”入力シート”の文字書式の変更を”出力シート”で同じ文字書式で印刷したいです。VBA希望 4 2023/04/24 11:07
- Visual Basic(VBA) Excel VBA シートを追加後に余分なシートを削除する、の意味 21 2022/05/19 22:46
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・思い出すきっかけは 音楽?におい?景色?
- ・あなたなりのストレス発散方法を教えてください!
- ・もし10億円当たったら何に使いますか?
- ・何回やってもうまくいかないことは?
- ・今年はじめたいことは?
- ・あなたの人生で一番ピンチに陥った瞬間は?
- ・初めて見た映画を教えてください!
- ・今の日本に期待することはなんですか?
- ・【大喜利】【投稿~1/31】『寿司』がテーマの本のタイトル
- ・集中するためにやっていること
- ・テレビやラジオに出たことがある人、いますか?
- ・【お題】斜め上を行くスキー場にありがちなこと
- ・人生でいちばんスベッた瞬間
- ・コーピングについて教えてください
- ・あなたの「プチ贅沢」はなんですか?
- ・コンビニでおにぎりを買うときのスタメンはどの具?
- ・おすすめの美術館・博物館、教えてください!
- ・【お題】大変な警告
- ・【大喜利】【投稿~1/20】 追い込まれた犯人が咄嗟に言った一言とは?
- ・洋服何着持ってますか?
- ・みんなの【マイ・ベスト積読2024】を教えてください。
- ・「これいらなくない?」という慣習、教えてください
- ・今から楽しみな予定はありますか?
- ・AIツールの活用方法を教えて
- ・最強の防寒、あったか術を教えてください!
- ・【大喜利】【投稿~1/9】 忍者がやってるYouTubeが炎上してしまった理由
- ・歳とったな〜〜と思ったことは?
- ・モテ期を経験した方いらっしゃいますか?
- ・好きな人を振り向かせるためにしたこと
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Access レポート印刷するときに...
-
Microsoft 365 Basic サブスク...
-
Accessのクエリで、replace関数...
-
【Access】Dcount関数の複数条...
-
Accessレポートのチェックボッ...
-
ACCESS VBA でのエラー解決の根...
-
access2021 強制終了してしまう
-
Access 複数条件検索の設定が上...
-
CSVファイルの「0落ち」にVBA
-
教えてください! アクセスの書...
-
【至急・画像あり】建物or住所...
-
Accessデータベースを開くと同...
-
Access VBA [リモートサーバー...
-
access2021 VBA メソッドまたは...
-
Accessのスプレッドシートエク...
-
accessでlaccdbファイルが削除...
-
Accessでフォームに自動入力し...
-
Access VBA を利用して、フォル...
-
Access DLookup vbaで条件を2件...
-
【アクセス】レポート テキスト...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Access レポート印刷するときに...
-
Accessのクエリで、replace関数...
-
access2021 強制終了してしまう
-
ACCESS VBA でのエラー解決の根...
-
Accessのスプレッドシートエク...
-
access2021 VBA メソッドまたは...
-
Access VBA [リモートサーバー...
-
Accessレポートのチェックボッ...
-
【Access】Dcount関数の複数条...
-
Accessで選択クエリを作成中で...
-
1月2日より、いまだアクセスで...
-
Access Error3061 パラメータが...
-
Accessデータベースの保存形式...
-
Access 複数条件検索の設定が上...
-
実行時エラー3131 FROM 句の構...
-
Accessデータベースを開くと同...
-
Accessのクエリの結果を、既存...
-
Access VBA を利用して、フォル...
-
Accessフォームにマクロを組み...
-
アクセス レポートを開いたとき...
おすすめ情報