シート エクセルVBAワークシートの名前・数・追加・移動・削除・コピー・非表示
※より実装に近く表示させる為、コードの改行を避けています。スマホ等で閲覧される際は向きを変えてご覧ください。
※実装するバージョンによってはバージョンアップの仕様により動作しないコードもあります。実装には動作確認の上ご使用下さい。
'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 |