このトピックに書きこむ |
---|
Re[4]: 追加行数だけ当該行日付を月加算して増分するVBAについて | |
---|---|
[196509] Re[4]: 追加行数だけ当該行日付を月加算して増分するVBAについて- ■ ![]() □投稿者/ VBA初心者 -(2025/04/08(20:48)) □U R L/ 半平太 さん、 ご多忙中、大変ありがとうございます。 うまく動作しました。 大変お世話になりました。 また、よろしくお願いいたします。 |
[196508] Re[3]: 追加行数だけ当該行日付を月加算して増分するVBAについて- ■記事引用/メール受信=OFF■ □投稿者/ 半平太 -(2025/04/08(15:45)) □U R L/ こんなことかな? Private Sub CommandButton1_Click() Dim k As Long ’作成行数 Dim gyouSrc As Long ’当初シート(データ)行ステップ数 Dim gyouTgt As Long ’結果シート(データ移行作成)行ステップ数 Dim wsSrc As Worksheet, wsTgt As Worksheet Application.ScreenUpdating = False Set wsSrc = Worksheets(”データ”) Set wsTgt = Worksheets(”データ移行作成”) gyouSrc = 2 gyouTgt = 2 wsSrc.Activate Do Until wsSrc.Cells(gyouSrc, "H") = ”” k = wsSrc.Cells(gyouSrc, "C") ’所要行数分 転記 wsSrc.Activate wsSrc.Rows(gyouSrc).Copy wsTgt.Activate wsTgt.Rows(gyouTgt).Resize(k + 1).PasteSpecial Paste:=xlAll ’日付 修正 If k > 0 Then With wsTgt.Cells(gyouTgt, "H") .AutoFill Destination:=.Resize(k + 1), Type:=xlFillMonths End With End If gyouTgt = gyouTgt + k + 1 gyouSrc = gyouSrc + 1 Loop wsTgt.Select MsgBox ”end” Application.CutCopyMode = False Application.ScreenUpdating = True End Sub |
[196507] Re[2]: 追加行数だけ当該行日付を月加算して増分するVBAについて- ■記事引用/メール受信=OFF■ □投稿者/ VBA初心者 -(2025/04/07(14:13)) □U R L/ 匿名 さん、ありがとうございます。 自分で作成してみましたが うまく動作しません お手数おかけします 手直しご指導 よろしくお願いいたします。 Private Sub CommandButton1_Click() Application.ScreenUpdating = False Dim k As Long V作成行数 Dim gyou As Long V当初シート(データ)行ステップ数 Dim gyou2 As Long V結果シート(データ移行作成)行ステップ数 k = Range(WF2W) gyou = 2 gyou2 = 2 Do Until Cells(gyou + 1, 8) = WW Do Until k = 0 Worksheets(WデータW).Activate Worksheets(WデータW).Rows(gyou).Copy Worksheets(Wデータ移行作成W).Activate Worksheets(Wデータ移行作成W).Rows(gyou + 1).PasteSpecial Paste:=xlAll k = k − 1 gyou = gyou + 1 Loop Worksheets(WデータW).Activate Worksheets(WデータW).Rows(gyou2).Copy Worksheets(Wデータ移行作成W).Activate Worksheets(Wデータ移行作成W).Rows(gyou2 + 1).PasteSpecial Paste:=xlAll gyou2 = Range(WF2W).End(xlDown).Count Loop Worksheets(Wデータ移行作成W).Select MsgBox WendW Application.CutCopyMode = False Application.ScreenUpdating = True End Sub |
[196506] Re[1]: 追加行数だけ当該行日付を月加算して増分するVBAについて- ■記事引用/メール受信=OFF■ □投稿者/ 匿名 -(2025/04/07(09:14)) □U R L/ 初心者であれば、まずは以下のような考え方をしてみてはいかがでしょうか。 現在のシート名をAとします。 ダミーの新規シートをBとします。 @ダミーのシートAを作成 AAシートを1行分(n行目[初期値は2])をコピー、Bシートにペースト又は、Aシートの値をBシートに代入 BBシートの書き込み行数を持つ変数に1を足す CAシートを1行分をコピー、Bシートに貼り付け又は代入した後、Bシートの日付の月に1を足す DBCを追加行数分だけ繰り返す Enに1を足す FA〜EをAシートの行数分だけ繰り返す GAシートを削除 HBシートの名前をAシートの名前に変更 もちろん二次元配列が使えればよと思いますが、 まずは、Excelのシートを二次元配列のようなものと思って、 ダミーのシートを作ることで、実行結果を1行ずつ 確認しながらできるので、ダミーのシートを作るのもありだと思います。 ※二次元配列とワークシートでは添え字の初期値は違いますが、 自分の目で動きを確認しながらできるので、 ワークシートを「2次元配列なようなもの」と記述しました 上記の@〜Hのどれについて、ご自身で調べてみて わからなければ1つずつ質問することをお勧めします。 その作業をしているうちに、VBAが書けるようになると思います。 もし、この作業をしないで丸投げしているなら、 「VBA初心者ではなく、VBAをやってない人になると思います。」 と言われて、VBAを続けてきて、VBAができるようになったので、 質問者もやってみるとよいでしょう。 |
[196505] 追加行数だけ当該行日付を月加算して増分するVBAについて- ■親トピック/記事引用/メール受信=OFF■ □投稿者/ VBA初心者 -(2025/04/06(22:58)) □U R L/ 追加行数の数だけ当該行を日付を月加算して増分したいVBAコードについて シート内容の当初と結果 aの当初シート(実行前) A B C D E F G H I J K L M ・・ 1 項1 項2 追加行数 項3 項4 NO. 名前 日付 金額1 金額2 金額3 . . . 2 ・ ・ 4 ・ ・ 23 山田 2023/6/1 55 77 24 ・・ 3 ・ ・ 3 ・ ・ 46 鈴木 2024/11/1 29 1 5 ・・ 4 ・ ・ 0 ・ ・ 38 五島 2022/9/1 11 1 5 ・・ 5 ・ ・ 1 ・ ・ 10 菊井 2022/12/1 11 1 5 ・・ 6 aの実行後シート結果 A B C D E F G H I J K L M ・・ 1 項1 項2 追加行数 項3 項4 NO. 名前 日付 金額1 金額2 金額3 . . . 2 ・ ・ 4 ・ ・ 23 山田 2023/6/1 55 77 24 ・・ 3 ・ ・ 4 ・ ・ 23 山田 2023/7/1 55 77 24 ・・ 4 ・ ・ 4 ・ ・ 23 山田 2023/8/1 55 77 24 ・・ 5 ・ ・ 4 ・ ・ 23 山田 2023/9/1 55 77 24 ・・ 6 ・ ・ 4 ・ ・ 23 山田 2023/10/1 55 77 24 ・・ 7 ・ ・ 3 ・ ・ 46 鈴木 2024/11/1 29 1 5 ・・ 8 ・ ・ 3 ・ ・ 46 鈴木 2025/12/1 29 1 5 ・・ 9 ・ ・ 3 ・ ・ 46 鈴木 2025/1/1 29 1 5 ・・ 10 ・ ・ 3 ・ ・ 46 鈴木 2025/2/1 29 1 5 ・・ 11 ・ ・ 0 ・ ・ 38 五島 2022/9/1 11 1 5 ・・ 12 ・ ・ 1 ・ ・ 10 菊井 2022/12/1 11 1 5 ・・ 13 ・ ・ 1 ・ ・ 10 菊井 2023/1/1 11 1 5 ・・ 14 上記例のように 追加行数の数だけ当該行について H列に月を1月づつ加算していき 当該行をコピーペーストして増分させていきたいのです (実際にはaの当初シートのデータは300位あります) 各データのユニークとなるキーは NO.です どなたか 上記のようなVBAコードについて ご教示いただければ、幸いです。 ++++++++++++++++++++ OS ⇒Windows 11 Version⇒Excel 2019 ++++++++++++++++++++ |