繰り返しシートコピーする事例

久しぶりにエクセルのVBAを触ってみました。
内容としては週間出勤予定表なるものがあるのですがそれを何週間分のものを週別にシートを分けてみようといことを目的に作成しました。

内容としては

シート名を期間
次の週の週初めの日付はセルの値から値のみ貼り付け
何回かを繰り返す
最後の余分にできてしまうシートは削除(これはたぶん順番次第ではいらなくなるはず)

ということで

いろいろなところから引っ張ってきてみました。
処理がなかなか進まなかったのは

シートのコピーってどうするだい。ということここで3時間ぐらい
思いつく内容を入力してもエラー ”9”が出るは出るは、、、先に進まない。。。やけくそですね。。

最後はコピペ。。。。。
また次のシートの日付処理に2時間ぐらい
はじめは足して処理をしたらいいんじゃないかなぁと思っていたらそこでかなり時間を取り結局別セルに7を足してそれを引っ張ってくる方法にして解決を図りました。
多分足したほうがいいだろうなぁ。。。

それでもうまくいく方法で逃げるしかないのでそこは我慢…ということにしておいてください。

あとは全体をPDF化する処理をすれば・・・そこはまた今度にします。この手は私の昔のマクロ集から引っ張ってくれば何とかなると・・・昔のことを体系的にまとめる手間があれば・・・手を付けてみたいと思います。

では以下のサンプルですね

はい同じコードがループ処理前とその中にあります。( TДT)ゴメンヨー

思いつけませんでした。(´Д`)ハァ…

シートコピー後の名前 処理前

はい適切な名所が浮かびませんでした ( ´ー`)フゥー...

処理数 5 まぁいいかこれは特に意味はないですねぇ 4と迷いました。

シート削除時にアラートメッセージを出さないようにしたのは出したら自動化の意味がなくなると思ったので当然のように付けました。

-----------------------------------------------------------------------

Sub Sample1()

Dim zse As String

Dim i As Long

zse = Range("J9") & "月" & Range("J8") & "日~" & Range("K9") & "月" & Range("K8") & "日"

    ActiveSheet.Name = zse

    ThisWorkbook.Sheets(zse).Copy After:=Sheets(Sheets.Count)

    ActiveSheet.Name = zse & "1"

 Do While i <= 5

 Range("K11").Select

    Selection.Copy

   Range("B7").PasteSpecial xlPasteValues


zse = Range("J9") & "月" & Range("J8") & "日~" & Range("K9") & "月" & Range("K8") & "日"

    ActiveSheet.Name = zse

    ThisWorkbook.Sheets(zse).Copy After:=Sheets(Sheets.Count)

    ActiveSheet.Name = "処理前"

    i = i + 1

    Loop

    Application.DisplayAlerts = False

    ActiveSheet.Delete

    Application.DisplayAlerts = True

    

End Sub



コメント

このブログの人気の投稿

エクセルマクロをすこし 2018年8月25日 リストから別のリストを作成