【VBA】シートに対する処理

2024年4月5日VBA

シートに対する処理


シートの追加と削除

シートを追加する

  • 追加されるシート名は「Sheet」+「既存シート数 + 1」
Sub AddSheet()

    Set WS = Sheets.Add(after:=Sheets(Sheets.Count))

End Sub

シートを削除する

Sub DelSheet()

    Worksheets("シート名").Delete

End Sub

シート名を指定して追加する

  • シート名の重複エラーを回避するために時分秒を付与している
Sub AddNamedSheet()

    Set WS = Sheets.Add(after:=Sheets(Sheets.Count))
    WS.Name = "シート名" & "_" & Format(Now, "HNS")

End Sub

シートの別ファイル保存

アクティブなシートを別ファイルに保存する

  • 保存場所はカレントディレクトリを指定している
Sub SheetSave()

    Dim sheetName As String
    sheetName = ActiveSheet.Name

    ActiveSheet.Copy
    ActiveWorkbook.SaveAs ThisWorkbook.Path & "\" & sheetName & ".xlsx"
    ActiveWorkbook.Close

End Sub

シートの存在チェック

シート名が存在するかチェックしてメッセージボックスで表示する

  • 「Sheet1」が存在するかチェック
Sub SheetNameCheck()

    Dim WS As Worksheet
    Dim chkFlg As Boolean

    For Each WS In Worksheets
        If WS.Name = "Sheet1" Then
            chkFlg = True
        End If
    Next WS

    If chkFlg = True Then
        MsgBox ("存在します")
    Else
        MsgBox ("存在しません")
    End If

End Sub

シート名一覧を作成する

シート名を全て取得して一覧に書き出す

  • 一覧用のシートを追加してシート名を転記する
Sub CreateSheetList()

    Dim ws As Worksheet
    Dim sheetNameList As Worksheet
    Dim i As Integer

    ' 一覧用のシートを追加する
    Set sheetNameList = ThisWorkbook.Sheets.Add(after:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count))
    sheetNameList.Name = "シート名一覧"

    ' シート名を転記する
    i = 1
    For Each ws In ThisWorkbook.Sheets
        If ws.Name <> sheetNameList.Name Then
            sheetNameList.Cells(i, 1).Value = ws.Name
            i = i + 1
        End If
    Next ws

    ' セルの幅を自動調節
    sheetNameList.Columns("A:A").AutoFit

    MsgBox "シート名一覧を作成しました", vbInformation

End Sub

VBA

Posted by junichi