VBAで業務効率化!シート名がなかったら自動で作成する方法

こんにちは!大阪市を拠点に活動している『縁紡ぐ』の稲垣です。

SWELLを使ったホームページ制作や、Excel、ACCESS、RPAなどのシステム開発を行っています。
また、Excel、Word、Outlookの研修や、情報セキュリティ研修も行っています。身近なITの相談相手になりたいと思っています。

お気軽にお問い合わせください。

目次

なんでシートを自動で作成するん?

業務効率化を目指すあなたに、VBAを使って指定したシート名がない場合に自動で新しいシートを作成する方法を紹介します。この方法を知っておくと、日々の作業がほんまに楽になるんです!

 VBAコードの全体像

 コード

Sub CreateSheetIfNotExists(sheetName As String)
    Dim ws As Worksheet
    Dim sheetExists As Boolean
    sheetExists = False

    ' ワークブック内のすべてのシートを確認
    For Each ws In ThisWorkbook.Worksheets
        If ws.Name = sheetName Then
            sheetExists = True
            Exit For
        End If
    Next ws

    ' シートが存在しなかったら、作成するで
    If Not sheetExists Then
        ThisWorkbook.Worksheets.Add(After:=ThisWorkbook.Worksheets(ThisWorkbook.Worksheets.Count)).Name = sheetName
        MsgBox "シート '" & sheetName & "' を作成しました!"
    Else
        MsgBox "シート '" & sheetName & "' はすでに存在します!"
    End If
End Sub

コードのポイント

このコードは、指定したシート名があるかどうかを確認し、存在しなかったら新しいシートを作成します。これによって、手動での作業を省けるんです。

 メソッドの呼び出し

このメソッドを使うには、CreateSheetIfNotExists "シート名"と入力するだけでOKです。

Sub test()
    CreateSheetIfNotExists ("新しいシート")
End Sub

実行前と実行後

実行前

実行後

すでにシートがある場合

複数のシート名を処理したい場合

コード

Sub CreateSheetsIfNotExists(sheetNames As String)
    Dim ws As Worksheet
    Dim sheetExists As Boolean
    Dim nameArray() As String
    Dim sheetName As String
    Dim i As Integer

    ' カンマ区切りでシート名を分割
    nameArray = Split(sheetNames, ",")

    ' 各シート名に対して処理
    For i = LBound(nameArray) To UBound(nameArray)
        sheetName = Trim(nameArray(i)) ' 前後の空白を削除
        sheetExists = False
        
        ' ワークブック内のすべてのシートを確認
        For Each ws In ThisWorkbook.Worksheets
            If ws.name = sheetName Then
                sheetExists = True
                Exit For
            End If
        Next ws

        ' シートが存在しなかったら、作成する
        If Not sheetExists Then
            ThisWorkbook.Worksheets.Add(After:=ThisWorkbook.Worksheets(ThisWorkbook.Worksheets.count)).name = sheetName
        End If
    Next i
End Sub

メソッドの呼び出し

Sub test()
    CreateSheetsIfNotExists "Sheet1, Sheet2, Sheet3"
End Sub

自動化でミスがなくなる

VBAを使うことで、シートを自動的に作成できるんです。これって、業務を効率化するだけでなく、ヒューマンエラーも防げるんですよ。手動でシートを作成する時、名前を間違えたり、作成を忘れたりすることがありますが、自動化すればそういうミスが減ります。ぜひチャレンジしてみてくださいね!

まとめ

VBAを使ってシート作成を自動化することで、手動での作業を省けて、業務効率化が図れます。これからの作業をもっとスムーズにするために、ぜひこの方法を試してみてくださいね!

記事を書いた人

稲垣

  • Excel、ACCESSでのシステム開発が得意
  • ITスキルを共有し実践的に学びながら成長する人を見るのが幸せ
  • 自家焙煎するほどのコーヒー好き
  • 使用言語 VBA、Python、Javascript、Java、HTML、CSS etc.
  • 保有資格 Kintoneアソシエイト、日商簿記検定2級、マンション管理士、管理業務主任者、情報セキュリティマネジメント、ExcelVBA etc.
  • 業務フロー図の作成や業務時間分析を通して、効率化ポイントを探る人
  • お客様にとって本当に良いことかを第一に考える人
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

目次