3流プログラマのメモ書き

元開発職→社内SE→派遣で営業支援→開発戻り浦島太郎状態の三流プログラマのIT技術メモ書き。 このメモが忘れっぽい自分とググってきた技術者の役に立ってくれれば幸いです。

(VBA)Excelでシートをコピー・削除

Excelでワークシートを複数コピーして、名前を変更し、セルに値を入れるサンプル(SheetCopyプロシージャ)です。

シート名は、For分のループ変数を使います。

また、SheetDelプロシージャはシートの削除を行ってます。

Public Const sBaseSheet = "Sheet1"

Public Const iMaxSheet = 4

 

Sub SheetCopy()

'ループ変数

Dim i As Integer

i = 0

Dim rng As Range

'コピー元のシートを選択

Worksheets("Sheet1").Select

'削除時の確認メッセージをOFFに

Application.DisplayAlerts = False

'画面高速化

Application.ScreenUpdating = False

For i = iMaxSheet To 1 Step -1

'シートをコピーする

ThisWorkbook.Sheets(sBaseSheet).Copy after:=Sheets(sBaseSheet)

'シートの名前をヘンコする

ThisWorkbook.Sheets(sBaseSheet & " (2)").Name = CStr(i)

'セルに値セット

Set rng = ThisWorkbook.Sheets(CStr(i)).Range("A1")

rng.Value = i

Next i

'削除時の確認メーッセージをOnに

Application.DisplayAlerts = True

'画面高速化

Application.ScreenUpdating = True

 

End Sub

 

Sub SheetDel()

Dim i As Integer

i = 0

Dim rng As Range

'削除時の確認メッセージをOFFに

Application.DisplayAlerts = False

'画面高速化

Application.ScreenUpdating = False

 

For i = iMaxSheet To 1 Step -1

'シート削除

ThisWorkbook.Sheets(CStr(i)).Delete

Next i

'削除時の確認メーッセージをOnに

Application.DisplayAlerts = True

'画面高速化

Application.ScreenUpdating = True

End Sub

参考:

ワークシートの追加 - ワークシートの追加 - Excel VBA入門

Office TANAKA - Excel VBA講座:シートの操作[シートを削除する]

Office TANAKA - Excel VBA Tips[ワークシートの名前を変更する]