まりふのひと

エクセルVBA/シートのコピーを最後に追加する

 YSC でパソコン講習のアシスタントをしていた時、「エクセルで請求書を作る」というVBAの例題があった。残念ながら1日で完成するまでに至らなかったが、「シートのコピー」が今後役に立つ‥‥ のではないかと、残すことにした。



「請求書雛形」というシートがある前提。

  1. Worksheets("請求書雛形").Copy
    • これでは新しいブックを作ってしまう。
  2. Worksheets("請求書雛形").Copy after:=Worksheets(2)
    • '2番目のワークシートの後ろに作る。
  3. Worksheets("請求書雛形").Copy after:=Worksheets("請求書雛形")
    • 請求書雛形の後ろに作る。
  4. Worksheets("請求書雛形").Copy after:=Worksheets(Worksheets.Count)
      • 最後に追加する。
    • Worksheets(Worksheets.Count).Name = Kokyaku
      • 追加したシートの名前を変更する。

以下は残骸で、未完成のコード。

        'ワークシート名を取引先にする。
    Kokyaku = "Bセンター"
    Worksheets(Worksheets.Count).Name = Kokyaku
        '顧客名をセルA6にセットする。
    Worksheets(Kokyaku).Range("A6").Value = Kokyaku
        'セルE2に今日の日付をセットする
    Worksheets(Kokyaku).Range("E2").Value = Date
'「販売実績」シートのデータを請求書にコピーする。(未完成)
    Cnt = 12
    For i = 4 To 12
        If Worksheets("販売実績").Cells(i, 2).Value = Kokyaku Then
            Worksheets(Kokyaku).Cells(Cnt, 1).Value = Worksheets("販売実績").Cells(i, 1).Value    '日付
            Worksheets(Kokyaku).Cells(Cnt, 2).Value = Worksheets("販売").Cells(i, 3).Value    '商品
            Worksheets(Kokyaku).Cells(Cnt, 3).Value = Worksheets("販売").Cells(i, 4).Value    '単価
            Worksheets(Kokyaku).Cells(Cnt, 4).Value = Worksheets("販売").Cells(i, 5).Value    '数量
            Worksheets(Kokyaku).Cells(Cnt, 5).Value = Worksheets("販売").Cells(i, 6).Value    '金額
            Cnt = Cnt + 1   '出力行を1っ進める。
        End If
    Next