ExcelVBAでQA表テンプレートを自動作成
作るもの
こんな感じのQA表テンプレートを作るためのマクロを実装
マクロコード抜粋
Sub QA表作成() Dim NewSheet As Worksheet Dim ActiveSheetIndex As Long ' アクティブシートのインデックスを取得 ActiveSheetIndex = ActiveSheet.Index ' 新しいシートを作成し、アクティブシートの次に配置 Set NewSheet = Sheets.Add(After:=Sheets(ActiveSheetIndex)) ' シート名を変更 NewSheet.Name = "QA表" ' ヘッダー行を設定 Range("B2").Value = "No" Range("C2").Value = "Status" Range("D2").Value = "Q" Range("E2").Value = "Q補足" Range("F2").Value = "A" ' テーブルを作成 ActiveSheet.ListObjects.Add(xlSrcRange, Range("$B$2:$F$17"), , xlYes).Name = "テーブル1" ' テーブルの罫線を設定 With Range("B2:F17").Borders .LineStyle = xlContinuous .ColorIndex = 0 .TintAndShade = 0 .Weight = xlThin End With ' セルの上揃えと左揃えを設定 With ActiveSheet.ListObjects(1).DataBodyRange .HorizontalAlignment = xlLeft .VerticalAlignment = xlTop End With ' ヘッダー行の背景色を設定 With ActiveSheet.ListObjects(1).HeaderRowRange.Interior .Pattern = xlSolid .PatternColorIndex = xlAutomatic .ThemeColor = xlThemeColorAccent6 .TintAndShade = 0.799981688894314 End With With ActiveSheet.ListObjects(1).HeaderRowRange.Font .Color = RGB(0, 0, 0) ' 黒色に設定 End With With ActiveSheet.ListObjects(1) .TableStyle = "TableStyleLight1" ' テーブルスタイルをシンプルなものに変更 .ShowTableStyleRowStripes = False ' 行のストライプを削除 End With ' Q, Q補足, A列の幅を設定 Columns("D:F").ColumnWidth = 30.58 ' 新しいシートを作成し、アクティブシートの次に配置 Set NewSheet = Sheets.Add(After:=Sheets("QA表")) ' シート名を変更 NewSheet.Name = "_pulldown_" ' プルダウン用の値を設定 Range("A1").Value = "Open" Range("A2").Value = "Closed" ' QA表シートに戻る Sheets("QA表").Select ' Status列のデータ検証を設定 With ActiveSheet.ListObjects(1).ListColumns("Status").DataBodyRange.Validation .Delete .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:="=_pulldown_!$A$1:$A$2" .IgnoreBlank = True .InCellDropdown = True End With ' Status列の条件付き書式を設定(Open) With ActiveSheet.ListObjects(1).ListColumns("Status").DataBodyRange.FormatConditions.Add(Type:=xlCellValue, Operator:=xlEqual, Formula1:="=""Open""") .Font.Color = -16383844 .Interior.Color = 13551615 End With ' Status列の条件付き書式を設定(Closed) With ActiveSheet.ListObjects(1).ListColumns("Status").DataBodyRange.FormatConditions.Add(Type:=xlCellValue, Operator:=xlEqual, Formula1:="=""Closed""") .Interior.ThemeColor = xlThemeColorDark1 .Interior.TintAndShade = -0.249946592608417 End With Range("A1").Select End Sub
感想
マクロの自動記録 + 手直しでできた。
わからないところはChatGPT先生にきいた。
改訂履歴
- 2023/03/19: コードのリファクタリングとコメント追加
- 2023/03/20: 表のセルの上揃えと左揃えを追加