Excelで生産予定・実績表を作ってみよう

Step 3 入力値のチェックと新シート作成




Homeに戻る > Excelでアプリケーションソフト > 生産予定・実績表アプリ

シートのVBAコード

下記のVBAコードを追加してください。

Option Explicit

Private MakeSheetName As String

'シートの存在チェック
Private Function ExSheetexist(sheetname As String) As Boolean
  Dim tsheet As Object
  
  ExSheetexist = False
  '全シートを順に調べる
  For Each tsheet In ActiveWorkbook.Worksheets
    If LCase(tsheet.Name) = LCase(sheetname) Then
        '同じ名前が見つかれば終了
        ExSheetexist = True
        Exit For
    End If
  Next
End Function

'新しいシート名を捜す
Private Function ExNewSheetName() As String
    Dim n As Long
    Dim sheetname As String
    
    '「年月」をシート名にする
    sheetname = Range("L9") & "年" & Range("L10") & "月"
    If ExSheetexist(sheetname) Then
        '同名シートが見つかった場合
        n = 1
        Do
            '連番を加えてシート名にする
            If ExSheetexist(sheetname & "(" & n & ")") = False Then
                'このシート名はない
                ExNewSheetName = sheetname & "(" & n & ")"
                Exit Do
            End If
            '次のシート名
            n = n + 1
        Loop
    Else
        ExNewSheetName = sheetname
    End If
End Function

'設定値のチェック
Private Function SetDataCheck() As Boolean
    SetDataCheck = False
    
    '開始セル位置
    If Range("L4") = "" Then
        Range("L4").Select
        Beep
        MsgBox "開始セル位置を入力してください。", , "生産予定実績表"
        Exit Function
    End If
    
    '作成年のチェック
    If Range("L9") < 2000 Or Range("L9") > 2100 Then
        Range("L9").Select
        Beep
        MsgBox "作成年を2000~2100の範囲で入力してください。", , "生産予定実績表"
        Exit Function
    End If
    
    '作成月のチェック
    If Range("L10") < 1 Or Range("L10") > 12 Then
        Range("L10").Select
        Beep
        MsgBox "作成月を1~12の範囲で入力してください。", , "生産予定実績表"
        Exit Function
    End If
    
    SetDataCheck = True
End Function

Private Sub ExNewSheetMake()
    MakeSheetName = ExNewSheetName
    'シートの追加
    ActiveWorkbook.Sheets.Add After:=Worksheets(Worksheets.Count)
    '名前の変更
    ActiveWorkbook.ActiveSheet.Name = MakeSheetName
End Sub

Private Sub CommandButton1_Click()
    Range("L12").Select
    If Not SetDataCheck Then
        Exit Sub
    End If
        
    ExNewSheetMake
    
    Worksheets("機種マスター").Select
    Range("L12").Select

End Sub


シート画面

「作成開始ボタン」をクリックすると、「開始セル位置」・「作成年、月」の入力値が正常かチェックします。
次に年月で新しいシートを作成します。
もし同じ年月のシート名があれば、連番を付け作成します。
例えば、[2007年2月(1)]や[2007年2月(2)]のようになります。


Homeに戻る > Excelでアプリケーションソフト > 生産予定・実績表アプリ

■■■
このサイトの内容を利用して発生した、いかなる問題にも一切責任は負いませんのでご了承下さい
■■■
当ホームページに掲載されているあらゆる内容の無許可転載・転用を禁止します


Copyright (c) Excel-Excel ! All rights reserved