Excel VBA 質問スレッド №1989 (解決済)

横型カレンダーで最終列にInputboxに入力された日数分日付と曜日を横に足したい

投稿者 : けろ     投稿日時 : 2024/08/11(Sun) 18:16:49     OS : Windows 10     EXCEL : Excel 2013
連日の投稿ですみません。

横型カレンダーを作っています。
やりたいことはずらずらと横にとにかく足していきたいです。
最終列から1列を起点にinputboxに入力された日数分足したいです。50と入力すれば最終列から50日分足す、120と打てば120日分足すといった感じが理想です。

初歩の初歩で止まってしまいました。

Sub inputbox分、カレンダーを作る()

    Dim lastColumn As Integer '最終列格納用変数

    ' 最終列を取得
    lastColumn = Cells(2, Columns.Count).End(xlToLeft).Column
    
    '取得した最終列の横にinputbox入力日数分カレンダー追加


End Sub

スポンサーリンク
[返信 1] Re : 横型カレンダーで最終列にInputboxに入力された日数分日付と曜日を横に足したい
投稿者 : さんこう     投稿日時 : 2024/08/11(Sun) 18:54:31
>ずらずらと横にとにかく足していきたいです。

手動でやるとしたら、どうしますか?

「足していく」を具体的な手順に落とし込んでいくといいでしょう。

[返信 2] Re : 横型カレンダーで最終列にInputboxに入力された日数分日付と曜日を横に足したい
投稿者 : けろ     投稿日時 : 2024/08/12(Mon) 11:33:37
理解不足ですみません。
全く歯が立ちませんでした。(下の記述はエラーになります。)
手動でもしやるとなる事をイメージしたら、最終列のところを選択して、その前のセルに1を足す、前のセルに1を足す、それを任意の数字まで繰り返す、です。



Sub カレンダー作成()

   Dim ws_1 As Worksheet
   Dim i As Long
   Dim lastcolumn_1 As Long
   Dim inp As String
   Dim newDate As Date
  
   Set ws_1 = Worksheets("ガントチャート")
   lastcolumn_1 = ws_1.Cells(2, Columns.Count).End(xlToLeft).Column ' 日付行の最終列を取得
   newDate = DateAdd("d", 1, lastcolumn_1) ' lastcolumn_1の数字の1日後取得
   inp = InputBox("カレンダーに追加したい日数を入力してください") ' インプットボックスの数値を
   
   For i = lastcolumn_1 To inp
   ws_1.Cells(2, i).Value = newDate
   Next
  
End Sub



■[返信 1] さんこうさん(2024-08-11 18:54:31)の記事
> >ずらずらと横にとにかく足していきたいです。

> 手動でやるとしたら、どうしますか?

> 「足していく」を具体的な手順に落とし込んでいくといいでしょう。


[返信 3] Re : 横型カレンダーで最終列にInputboxに入力された日数分日付と曜日を横に足したい
投稿者 : てらてら     投稿日時 : 2024/08/12(Mon) 12:41:32
こんにちは。

DateAddはFor文の中。
繰り返しの i は、追加していく数
転記する番地は、 lastcolumn_1 + i

エラー処理と書式のコピーはおまけ。


Sub カレンダー作成()

   Dim ws_1 As Worksheet
   Dim i As Long
   Dim lastcolumn_1 As Long
   Dim inp As Long      '数値型
   Dim newDate As Date
  
   Set ws_1 = Worksheets("ガントチャート")
   lastcolumn_1 = ws_1.Cells(2, Columns.Count).End(xlToLeft).Column ' 日付行の最終列を取得
   
   'newDate = DateAdd("d", 1, CDate(Cells(2, lastcolumn_1))) ' lastcolumn_1の数字の1日後取得
   
   On Error Resume Next
   inp = CInt(InputBox("カレンダーに追加したい日数を入力してください")) ' インプットボックスの文字列を数値に
   
   For i = 1 To inp
        ws_1.Cells(2, lastcolumn_1 + i).Value = DateAdd("d", i, CDate(Cells(2, lastcolumn_1)))
        ws_1.Cells(2, lastcolumn_1 + i).NumberFormatLocal = ws_1.Cells(2, lastcolumn_1).NumberFormatLocal
   Next
  
End Sub

[返信 4] Re : 横型カレンダーで最終列にInputboxに入力された日数分日付と曜日を横に足したい
投稿者 : さんこう     投稿日時 : 2024/08/12(Mon) 13:14:43
答えはでているようなので、余談です。

>手動でもしやるとなる事をイメージしたら

コピーとかオートフィルなどは使わないのですか。

参考になれば。

<vba 列 コピー>
https://www.google.com/search?q=vba+%E5%88%97+%E3%82%B3%E3%83%94%E3%83%BC

[返信 5] Re : 横型カレンダーで最終列にInputboxに入力された日数分日付と曜日を横に足したい
投稿者 : けろ     投稿日時 : 2024/08/12(Mon) 13:21:02
さんこう様 てらてら様

ありがとうございました!!!やりたい事ができました。

変な記述にもかかわらず読み解いてくださり、感謝しかありません。

当掲示板について
  • Excel VBA に関する掲示板です。Excel VBA に関する質問や疑問、それに対する解決方法など気軽に投稿してください。
  • 記事内ではHTMLのタグは使用できません。
  • 記事は一度投稿すると修正できません。内容を訂正したい場合は返信で対応してください。
  • Sub〜End Sub、Function〜End Function は自動的にプログラムコードとみなし、枠で囲って見やすくします。
  • Excel VBA とは関係ないことや、他人が不快に思うようなことなど、管理人が適当でないと判断した記事は削除する場合があります。
スポンサーリンク
返信入力フォーム
お 名 前  :
内  容   :

ステータス  :

認証コード  : キャプチャ画像 




( 処理日時 : 2025-07-06 08:01:36 )
タイトルとURLをコピーしました