2017年06月09日

【Excel】オリジナルの家計簿作り⑦

今日は、下記に「④処理中の日付(月)に合わせて、転記先のシートを選択する」プログラムを加えていきます。

sub タイトル()
    dim 最終行 as long, 処理行 as long
    dim 日付 as date
    最終行=cells(rows.count,2).end(xlup).row
    for 処理行=3 to 最終行
        'ここに順繰り回してどうすのかという指示文を入力します
        日付=cells(処理行,2).value
    Next 処理行
end sub


さて、現在のファイルの中身は、「入力画面」と「フォーマット」の2種類があります。

【VBA】シート.JPG

フォーマットシートをコピーして、
マクロで取得した日付に合わせてシート名を変更するプログラムが必要ですね。

●シートをコピーする


worksheet(シート名).copy 挿入位置

の構文となりますので、

sub タイトル()
    dim 最終行 as long, 処理行 as long
    dim 日付 as date
    最終行=cells(rows.count,2).end(xlup).row
    for 処理行=3 to 最終行
        'ここに順繰り回してどうすのかという指示文を入力します
        日付=cells(処理行,2).value
        'フォーマットシートのコピー
        worksheets("フォーマット").copy after:=worksheets("フォーマット")
    Next 処理行
end sub


となるのですが…
・すでに該当月のシートが存在する場合は、シート作成をしない
・シート名を変更するのに、どんな名前にするのか
という条件も組み込まなければいけません。

シート名は、便宜上、取得した日付の「yyyy年m月」ということにしましょう。

プログラムでコピーして追加したシートは、アクティブの状態になります。
なので、シート名を変更するときは、

activesheet.name = 変更したい名称

とします。

sub タイトル()
    dim 最終行 as long, 処理行 as long
    dim 日付 as date
    最終行=cells(rows.count,2).end(xlup).row
    for 処理行=3 to 最終行
        'ここに順繰り回してどうすのかという指示文を入力します
        日付=cells(処理行,2).value
        'フォーマットシートのコピー
        worksheets("フォーマット").copy after:=worksheets("フォーマット")
        activesheet.name = year(日付) & "年" & month(日付) & "月"
    Next 処理行
end sub



ということで、本日はここまで。
明日は「すでに該当月のシートが存在する場合は、シート作成をしない」という条件を加えていきましょう。


にほんブログ村さんのランキングへ参加はじめました。
よろしければ、クリックで応援お願いします☆

にほんブログ村 IT技術ブログ VBAへ
にほんブログ村


ラベル:VBA 家計簿
posted by くま母 at 22:51| Comment(0) | ExcelVBA | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
コチラをクリックしてください
×

この広告は180日以上新しい記事の投稿がないブログに表示されております。