Excelシート追加って、地味にめんどくさいんだよね
ボタンクリックで、シート追加することができるよ
しかも書式の設定付き!
シート追加ボタンの実装手順
ボタンを追加する
[開発]タブ → [挿入] → ActiveXコントロールのボタンをクリック
シート上で、ドラッグアンドドロップボタンが追加される
ボタン追加後、ボタン右クリック → [プロパティ]をクリック
プロパティダイアログの[オブジェクト名]と[Caption]を変更
オブジェクト名:btnAddSheet
Caption:シート追加 ※自由につけてOK
ボタンの設置は完了です
VBAの実装(コピペOK)
コピペ可能なVBAを用意しました
VBAには次のような特徴があります
- A2セルに入力した文字がシート名になる
- A2セルが空白の場合、「シート名を入力してください」とメッセージが表示される
- シート名が重複する場合「すでに存在するシートです」とメッセージが表示される
- 新規に追加されたシートのセルの書式設定は文字列
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 |
' シート名 Private Const CL_SHEETNAME = "A2" '------------------------------ ' シート追加ボタン '------------------------------ Private Sub btnAddSheet_Click() ' 新しいシートを作成 Call newAddSheet End Sub '------------------------------ ' シート名を指定して新しいシートを追加 '------------------------------ Private Sub newAddSheet() Dim sheetName As String sheetName = Range(CL_SHEETNAME).Value ' シート名未入力チェック If IsEmpty(sheetName) Then MsgBox "シート名を入力して下さい。" ' シート重複チェック ElseIf IsExistWs(sheetName) Then MsgBox "すでに存在するシート名です。" Else ' 新規シートの作成 Worksheets.Add ActiveSheet.Name = sheetName ' シートを文字列書式へ変更 Call sheetStr End If End Sub '------------------------------ ' シートを文字列書式へ変更 '------------------------------ Private Sub sheetStr() ActiveSheet.Cells.Select Selection.NumberFormatLocal = "@" End Sub '------------------------------ ' 空白NULLチェック '------------------------------ Private Function IsEmpty(str As String) As Boolean If str = "" Or str = Null Then IsEmpty = True Else IsEmpty = False End If End Function '------------------------------ ' シート名重複チェック '------------------------------ Private Function IsExistWs(newSheetName As String) As Boolean Dim ws As Worksheet IsExistWs = False For Each ws In Worksheets If ws.Name = newSheetName Then IsExistWs = True End If Next ws End Function |
実行テスト
- A2セルにシート名を入力
- ボタンをクリック
セル書式設定が文字列の新しいシートが追加されました
コメント