【ユーザーフォーム】シートをコピー・削除する:VBA

エクセルマクロ_ユーザーフォームシートコピー削除_アイキャッチ エクセルマクロで効率化する

ユーザーフォームで特定シートをコピー、または削除するマクロコードをご紹介します。

シートのコピー・削除は以外と手間がかかるので、VBAを組むと作業高速化できちゃいます。

このページのマクロコードは、コピペで使えます。
ぜひお試しください!

ユーザーフォームを作成して開く

エクセルにコマンドボタンを作成し、ユーザーフォームを開きます。


 

マクロコードを標準モジュール「Module1」に入力します。


Sub ボタン1_Click()
    UserForm1.Show vbModeless
End Sub

 

マクロコードを「Module1」に入力した画面の様子


 

ユーザーフォーム内部にマクロコードを入力する

マクロコードを「UserForm1」に入力します。


Option Explicit

Dim ShtName As String
Dim Rc1 As Long

Private Sub CommandButton1_Click()
    'シートコピー
    ShtName = UserForm1.ListBox1.Value
    Sheets(ShtName).Copy After:=Sheets(ShtName)
    Call main
End Sub

Private Sub CommandButton2_Click()
    'シート削除
    ShtName = UserForm1.ListBox1.Value
    Rc1 = MsgBox(ShtName & " シートを削除しますか?", vbYesNo + vbQuestion)

    '「はい」の場合
    If Rc1 = vbYes Then
        Application.DisplayAlerts = False
            Sheets(ShtName).Delete
        Application.DisplayAlerts = True
        Call main
    Else
        '「いいえ」の場合
        Exit Sub
    End If

End Sub

Sub main()

Dim MyList() As Variant
Dim i As Integer

    UserForm1.ListBox1.Clear

    With UserForm1.ListBox1

        '1つだけ選択
        .MultiSelect = fmMultiSelectSingle

        'チェックボックス表示
        .ListStyle = fmListStyleOption

        ReDim Preserve MyList(Sheets.Count)

        'シート名を取得
        For i = 2 To Sheets.Count
            MyList(i) = Sheets(i).Name
        Next i

        'リストボックスに追加
        For i = 2 To UBound(MyList)
            .AddItem MyList(i)
        Next i

    End With

End Sub

Private Sub UserForm_Initialize()
    Call main
End Sub

 

マクロコードを入力する場所「UserForm1」


 

動作

「ユーザーフォームを開く」ボタンをクリックして、ユーザーフォームを起動します。

[ ListBox1 ] にシート名の一覧が表示されます。


 
 

シートをコピーしたいとき

ユーザーフォームからコピーしたいシートを指定して、「コピー」ボタンをクリックします。


 

選択したシートのコピーを作成しました。
[ListBox1] に コピーとして作成したシート名が即表示されます。


 
 

シートを削除したいとき

ユーザーフォームから削除したいシートを選択して、「削除」ボタンをクリックします。


 

メッセージボックスが表示されるので、シートを削除するか選択します。
・「はい」をクリックすると、選択したシートを削除します。
  [ListBox1] が即時更新され、削除したシート名が消えます。

・「いいえ」をクリックすると、シートを削除せず処理をキャンセルすることができます。


 
 
この記事がお役に立ちますと幸いです。
 

【VBAユーザーフォーム】何ができるの?:具体的な使用例19選
...

 

「たった1秒で仕事が片づくExcel自動化の教科書【増強完全版】」
「5時間かかる作業が3時間でできます」ではなく「1秒で終わらせます」へ
毎日の業務を瞬時に終わらせるしくみを解説