0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

【編集中 記事】Excelシート該当範囲をコピーし、別シートへ書式&値のみコピー

Posted at

作成の目的

毎日移り変わる日毎のテスト進捗を関数で取得し管理していたが
日毎のテスト進捗をログとして残す必要が出たため、別シートへ値として残すマクロを書きました。

Sub 各日報告シート出力くん()

  'ワークシートオブジェクト取得
  Dim ws As Worksheet

  'あとで条件判定に使うflag
  Dim flag As Boolean

  'マクロ実行時の日付(mmdd)で取得
  Dim TodayDate As String
  TodayDate = Format(Date, "mmdd")

  'コピー元シート名
  Dim CopyMotoSheet As String
  CopyMotoSheet = "FORMAT"

  'コピー元セル範囲
  Dim CopyMotoRange As String
  CopyMotoRange = "A1:K100"

  'コピー先シート名
  Dim OutputSheet As String
  OutputSheet = TodayDate & "_" & "進捗報告"

  'コピー先セル番地
  Dim OutputCell As String
  OutputCell = "A1"

  '本日分の作業報告シート有無調査
  'あれば、エラー表示
  'なければ、本日分作業報告出力
  For Each ws In Worksheets
    If ws.Name = OutputSheet Then flag = True
    Next ws
    
    If flag = True Then
      MsgBox ("本日分の【" & OutputSheet & "】シートがあるため出力できません。" & _
      Chr(10) & "再出力する場合、" & "【" & OutputSheet & "】シートを削除してください。")

    Else
      'シートを追加し、名前を「mmdd_進捗報告」にする
      Worksheets.Add After:=Worksheets(CopyMotoSheet)
      ActiveSheet.Name = OutputSheet

      '変数CopyMotoSheetシートの指定範囲を「mmdd_進捗報告」シートへコピペ
      Sheets(CopyMotoSheet).Range(CopyMotoRange).Copy
      Sheets(OutputSheet).Range(OutputCell).Select

      '書式 貼り付け
      Selection.PasteSpecial Paste:=xlFormats

      '値 貼り付け
      Selection.PasteSpecial Paste:=xlPasteValues


      'コピーモードが継続しているためESCさせる
      Application.CutCopyMode = False

      '処理実行後は、処理したシートのA1セルを選択しておく
      Range(OutputCell).Select
      Worksheets(CopyMotoSheet).Select
      Range(OutputCell).Select


      '列幅自動調節 どの列幅を調節しよう?
      Range("B:B").Columns.AutoFit
    End If
End Sub
0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?