シート エクセルVBAワークシートの名前・数・追加・移動・削除・コピー・非表示

※より実装に近く表示させる為、コードの改行を避けています。スマホ等で閲覧される際は向きを変えてご覧ください。

※実装するバージョンによってはバージョンアップの仕様により動作しないコードもあります。実装には動作確認の上ご使用下さい。

Option Explicit


'ExcelSheet
'エクセルワークシートの操作全般
'   ・シート名             (Name) 取得・変更
'   ・シート数             (Count)
'   ・シートの追加         (Add)
'   ・シートの移動         (Move)
'   ・シートの削除         (Delete)
'   ・シートのコピー       (Copy)
'   ・シートの表示と非表示 (Visible)

Sub ExcelSheetAllName()
'*****************************************
'指定ブックにある全てのシート名を取得する
'*****************************************

Dim bok As Workbook, sht As Worksheet
Dim strMSG As String, i As Long

Set bok = ThisWorkbook

Application.ScreenUpdating = False
i = 0
    For Each sht In bok.Worksheets
        With sht
           i = i + 1
           strMSG = strMSG & i & vbTab & .Name & vbCr

        End With
    Next sht
Application.ScreenUpdating = True

MsgBox strMSG

End Sub


Sub ExcelSheetAllNameChange()
'*****************************************
'指定ブックにある全てのシート名を変更する
'*****************************************

Dim bok As Workbook, sht As Worksheet
Dim strMSG As String, i As Long

Set bok = ThisWorkbook

Application.ScreenUpdating = False
i = 0
    For Each sht In bok.Worksheets
        With sht
           i = i + 1
           .Name = "シート" & i

        End With
    Next sht
Application.ScreenUpdating = True

MsgBox "END"

End Sub


Sub ExcelSheetAllCount()
'***********************************************
'指定ブックにある全てのシートの数をカウントする
'***********************************************

Dim bok As Workbook

Set bok = ThisWorkbook

MsgBox "シート数" & vbTab & bok.Sheets.Count

End Sub


Sub ExcelSheetAdd()
'***********************************************
'指定ブックのシートを追加する
'***********************************************

Dim bok As Workbook, sht As Worksheet

Set bok = ThisWorkbook
Set sht = bok.Sheets.Add

MsgBox "追加シート" & vbTab & sht.Name

End Sub


Sub ExcelSheetAddCount()
'***********************************************
'指定ブックのシートを複数追加する
'***********************************************

Dim bok As Workbook, bytCnt As Byte

bytCnt = 3

Set bok = ThisWorkbook

bok.Worksheets.Add Count:=bytCnt

MsgBox "追加シート" & vbTab & bytCnt

End Sub


Sub ExcelSheetAddAfter()
'*************************************************
'指定ブックのシートを最後(追加場所指定)に追加する
'*************************************************

Dim bok As Workbook, bytCnt As Byte

bytCnt = 2

Set bok = ThisWorkbook

With bok
    .Worksheets.Add After:=.Worksheets(.Worksheets.Count), Count:=bytCnt
End With

MsgBox "最後に追加シート" & vbTab & bytCnt

End Sub


Sub ExcelSheetAddBeforeName()
'*****************************************************
'指定ブックのシートを名前と追加場所を指定して追加する
'*****************************************************
'シート群の最初に名前を指定して追加
'同名シートは追加不可です。

Dim bok As Workbook

Set bok = ThisWorkbook

With bok
    .Worksheets.Add(Before:=.Worksheets(1)).Name = "テスト前"
End With

MsgBox "END"

End Sub


Sub ExcelSheetAddAppName()
'*****************************************************
'指定ブックのシートを名前と追加場所を指定して追加する
'*****************************************************
'指定シートの前に名前を指定して追加
'同名シートは追加不可です。

Dim bok As Workbook

Set bok = ThisWorkbook

With bok
    .Worksheets.Add(Before:=.Worksheets("Sheet11")).Name = "横"
End With

MsgBox "END"

End Sub


Sub ExcelSheetMoveAfter()
'*****************************************************
'指定ブックのシートを移動する
'*****************************************************
'指定シートを指定シートの後に移動

Dim bok As Workbook

Set bok = ThisWorkbook

With bok
    .Worksheets("横").Move After:=.Worksheets("テスト")
End With

MsgBox "END"

End Sub


Sub ExcelSheetDelete()
'*****************************************************
'指定ブックの指定シートを削除する
'*****************************************************
'全てのシートは削除不可(最低1枚は必要)
'以下の例はシート名に「Sheet」がつくシートを全て削除してます。

Dim bok As Workbook, sht As Worksheet

Set bok = ThisWorkbook

Application.ScreenUpdating = False

    For Each sht In bok.Worksheets
        With sht
           If InStr(1, .Name, "Sheet") <> 0 Then
                'ダイアログ非表示
                Application.DisplayAlerts = False
                .Delete
                'ダイアログ表示
                Application.DisplayAlerts = True
           End If
        End With
    Next sht

Application.ScreenUpdating = True

MsgBox "END"

End Sub


Sub ExcelSheetCopy()
'*****************************************************
'指定ブックの指定シートをコピーする
'*****************************************************
'新しくブックを追加して指定シートの後にコピー

Dim bok As Workbook, bok2 As Workbook

Set bok = ThisWorkbook
Set bok2 = Workbooks.Add

bok.Worksheets("テスト").Copy After:=bok2.Worksheets("Sheet1")

MsgBox "END"

End Sub


Sub ExcelSheetVisibleFalse()
'*****************************************************
'指定ブックの指定シートを隠す(非表示)
'*****************************************************
'メニューから表示可能

Dim bok As Workbook

Set bok = ThisWorkbook

bok.Worksheets("テスト").Visible = False

MsgBox "END"

End Sub


Sub ExcelSheetVisibleTrue()
'*****************************************************
'指定ブックの指定シートを表示(再表示)
'*****************************************************

Dim bok As Workbook

Set bok = ThisWorkbook

bok.Worksheets("テスト").Visible = xlSheetVisible 'True'でも可(xlSheetVisible)

MsgBox "END"

End Sub


Sub ExcelSheetHidden()
'*****************************************************
'指定ブックの指定シートを隠す(非表示)
'*****************************************************
'メニューから表示可能

Dim bok As Workbook

Set bok = ThisWorkbook

bok.Worksheets("テスト").Visible = xlSheetHidden

MsgBox "END"

End Sub


Sub ExcelSheetVeryHidden()
'*****************************************************
'指定ブックの指定シートを隠す(非表示)
'*****************************************************
'メニューから表示不可(VBAからのみ可能)

Dim bok As Workbook

Set bok = ThisWorkbook

bok.Worksheets("テスト").Visible = xlSheetVeryHidden

MsgBox "END"

End Sub





 

 

2000年01月01日|[VBサンプルコード]:[Sheet]