Well, I'm not sure how your names of your worksheets are setup, i.e. how they're named. You might want to take a look at the code and change them accordingly. Also it assumes the structure of your TOC sheet, with the data starting in A5 and going down, so your header can be anywhere from row 1 to 4. Anyway, I think this does what you're asking for....
<font face=Courier New><SPAN style="color:#00007F">Option</SPAN> <SPAN style="color:#00007F">Explicit</SPAN><br><br><SPAN style="color:#00007F">Sub</SPAN> PrintMySheets()<br><br><SPAN style="color:#007F00">'#######################################################################################</SPAN><br><SPAN style="color:#007F00">'Original code from J-Walk's page, found here:</SPAN><br><SPAN style="color:#007F00">'http://spreadsheetpage.com/index.php/tip/displaying_a_menu_of_worksheets_to_print/</SPAN><br><SPAN style="color:#007F00">'#######################################################################################</SPAN><br><br> <SPAN style="color:#00007F">Dim</SPAN> wb <SPAN style="color:#00007F">As</SPAN> Workbook, wsTOC <SPAN style="color:#00007F">As</SPAN> Worksheet<br> <SPAN style="color:#00007F">Dim</SPAN> wsCover <SPAN style="color:#00007F">As</SPAN> Worksheet, wsBackCover <SPAN style="color:#00007F">As</SPAN> Worksheet<br> <SPAN style="color:#00007F">Dim</SPAN> aPages() <SPAN style="color:#00007F">As</SPAN> <SPAN style="color:#00007F">Variant</SPAN>, aSheets() <SPAN style="color:#00007F">As</SPAN> <SPAN style="color:#00007F">Variant</SPAN>, iCnt <SPAN style="color:#00007F">As</SPAN> <SPAN style="color:#00007F">Long</SPAN><br> <SPAN style="color:#00007F">Dim</SPAN> iPages <SPAN style="color:#00007F">As</SPAN> <SPAN style="color:#00007F">Long</SPAN>, iTotalPages <SPAN style="color:#00007F">As</SPAN> <SPAN style="color:#00007F">Long</SPAN><br> <SPAN style="color:#00007F">Dim</SPAN> i <SPAN style="color:#00007F">As</SPAN> <SPAN style="color:#00007F">Integer</SPAN>, TopPos <SPAN style="color:#00007F">As</SPAN> <SPAN style="color:#00007F">Integer</SPAN>, SheetCount <SPAN style="color:#00007F">As</SPAN> <SPAN style="color:#00007F">Integer</SPAN><br> <SPAN style="color:#00007F">Dim</SPAN> PrintDlg <SPAN style="color:#00007F">As</SPAN> DialogSheet, CurrentSheet <SPAN style="color:#00007F">As</SPAN> Worksheet, cb <SPAN style="color:#00007F">As</SPAN> CheckBox<br><br> <SPAN style="color:#00007F">Set</SPAN> wb = ThisWorkbook<br><br> <SPAN style="color:#007F00">'Check for protected workbook</SPAN><br> <SPAN style="color:#00007F">If</SPAN> wb.ProtectStructure <SPAN style="color:#00007F">Then</SPAN><br> MsgBox "Workbook is protected.", vbCritical<br> <SPAN style="color:#00007F">Exit</SPAN> <SPAN style="color:#00007F">Sub</SPAN><br> <SPAN style="color:#00007F">End</SPAN> <SPAN style="color:#00007F">If</SPAN><br><br> <SPAN style="color:#007F00">'Turn off application-level properties/events</SPAN><br> <SPAN style="color:#00007F">Call</SPAN> TOGGLEEVENTS(False)<br><br> <SPAN style="color:#007F00">'Set worksheet variables</SPAN><br> <SPAN style="color:#007F00">'############################################</SPAN><br> <SPAN style="color:#007F00">'Adjust names as necessary here</SPAN><br> <SPAN style="color:#00007F">Set</SPAN> wsTOC = wb.Worksheets("TOC")<br> <SPAN style="color:#00007F">Set</SPAN> wsCover = wb.Worksheets("Cover")<br> <SPAN style="color:#00007F">Set</SPAN> wsBackCover = wb.Worksheets("Back Cover")<br> <SPAN style="color:#007F00">'############################################</SPAN><br><br> <SPAN style="color:#007F00">'Add a temporary dialog sheet</SPAN><br> <SPAN style="color:#00007F">Set</SPAN> CurrentSheet = ActiveSheet<br> <SPAN style="color:#00007F">Set</SPAN> PrintDlg = wb.DialogSheets.Add<br><br> SheetCount = 0<br><br> <SPAN style="color:#007F00">'Add the checkboxes</SPAN><br><br> TopPos = 40<br> <SPAN style="color:#00007F">For</SPAN> i = 1 <SPAN style="color:#00007F">To</SPAN> wb.Worksheets.Count<br> <SPAN style="color:#00007F">Set</SPAN> CurrentSheet = wb.Worksheets(i)<br> <SPAN style="color:#007F00">'Skip empty sheets and hidden sheets</SPAN><br> <SPAN style="color:#00007F">If</SPAN> Application.CountA(CurrentSheet.Cells) <> 0 And CurrentSheet.Visible <SPAN style="color:#00007F">Then</SPAN><br> <SPAN style="color:#00007F">Select</SPAN> <SPAN style="color:#00007F">Case</SPAN> CurrentSheet.Name<br> <SPAN style="color:#00007F">Case</SPAN> wsTOC.Name, wsCover.Name, wsBackCover.Name<br> <SPAN style="color:#00007F">Case</SPAN> <SPAN style="color:#00007F">Else</SPAN><br> SheetCount = SheetCount + 1<br> <br> <SPAN style="color:#007F00">'Set pages in array, with page breaks, horizontal and vertical</SPAN><br> <SPAN style="color:#00007F">ReDim</SPAN> <SPAN style="color:#00007F">Preserve</SPAN> aPages(1 <SPAN style="color:#00007F">To</SPAN> SheetCount)<br> aPages(SheetCount) = CurrentSheet.VPageBreaks.Count + 1 & "*" & CurrentSheet.HPageBreaks.Count + 1<br> <br> <SPAN style="color:#007F00">'Add checkbox to dialog frame</SPAN><br> PrintDlg.CheckBoxes.Add 78, TopPos, 150, 16.5<br> PrintDlg.CheckBoxes(SheetCount).Text = CurrentSheet.Name<br> TopPos = TopPos + 13<br> <SPAN style="color:#00007F">End</SPAN> <SPAN style="color:#00007F">Select</SPAN><br> <SPAN style="color:#00007F">End</SPAN> <SPAN style="color:#00007F">If</SPAN><br> <SPAN style="color:#00007F">Next</SPAN> i<br><br> <SPAN style="color:#007F00">'Move the OK and Cancel buttons</SPAN><br> PrintDlg.Buttons.Left = 240<br><br> <SPAN style="color:#007F00">'Set dialog height, width, and caption</SPAN><br> <SPAN style="color:#00007F">With</SPAN> PrintDlg.DialogFrame<br> .Height = Application.Max(68, PrintDlg.DialogFrame.Top + TopPos - 34)<br> .Width = 230<br> .Caption = "Select sheets to print"<br> <SPAN style="color:#00007F">End</SPAN> <SPAN style="color:#00007F">With</SPAN><br><br> <SPAN style="color:#007F00">'Change tab order of OK and Cancel buttons</SPAN><br> <SPAN style="color:#007F00">'so the 1st option button will have the focus</SPAN><br> PrintDlg.Buttons("Button 2").BringToFront<br> PrintDlg.Buttons("Button 3").BringToFront<br><br> <SPAN style="color:#007F00">'Display the dialog box</SPAN><br> CurrentSheet.Activate<br> <br> <SPAN style="color:#00007F">If</SPAN> SheetCount <> 0 <SPAN style="color:#00007F">Then</SPAN><br> <SPAN style="color:#00007F">If</SPAN> PrintDlg.Show <SPAN style="color:#00007F">Then</SPAN><br> <br> <SPAN style="color:#007F00">'Set TOC and print main sheets</SPAN><br> iCnt = 1<br> i = 1<br> iTotalPages = 3<br> wsTOC.Range("A5:A" & wsTOC.Rows.Count).ClearContents<br> <SPAN style="color:#00007F">For</SPAN> <SPAN style="color:#00007F">Each</SPAN> cb <SPAN style="color:#00007F">In</SPAN> PrintDlg.CheckBoxes<br> <SPAN style="color:#00007F">If</SPAN> cb.Value = xlOn <SPAN style="color:#00007F">Then</SPAN><br> iPages = Application.Evaluate(aPages(i))<br> iTotalPages = iTotalPages + iPages<br> wsTOC.Cells(iCnt + 4, 1).Value = cb.Caption & " ... page(s) " & iTotalPages - iPages + 1 & "-" & iTotalPages <SPAN style="color:#007F00">'Application.Evaluate(aPages(i)) & "-" & iPgCnt</SPAN><br> iCnt = iCnt + 1<br> <SPAN style="color:#00007F">End</SPAN> <SPAN style="color:#00007F">If</SPAN><br> i = i + 1<br> <SPAN style="color:#00007F">Next</SPAN> cb<br> <br> <SPAN style="color:#007F00">'Print checked sheets</SPAN><br> wsCover.PrintOut<br> <SPAN style="color:#00007F">For</SPAN> <SPAN style="color:#00007F">Each</SPAN> cb <SPAN style="color:#00007F">In</SPAN> PrintDlg.CheckBoxes<br> <SPAN style="color:#00007F">If</SPAN> cb.Value = xlOn <SPAN style="color:#00007F">Then</SPAN><br> wb.Worksheets(cb.Caption).Activate<br> ActiveSheet.PrintOut<br> <SPAN style="color:#00007F">End</SPAN> <SPAN style="color:#00007F">If</SPAN><br> <SPAN style="color:#00007F">Next</SPAN> cb<br> wsBackCover.PrintOut<br> <br> <SPAN style="color:#00007F">End</SPAN> <SPAN style="color:#00007F">If</SPAN><br> <SPAN style="color:#00007F">Else</SPAN><br> MsgBox "All worksheets are empty."<br> <SPAN style="color:#00007F">End</SPAN> <SPAN style="color:#00007F">If</SPAN><br><br> <SPAN style="color:#007F00">'Delete temporary dialog sheet</SPAN><br> PrintDlg.Delete<br><br> <SPAN style="color:#007F00">'Reactivate Table of Contents</SPAN><br> wsTOC.Activate<br><br> <SPAN style="color:#007F00">'Re-activate application-level properties/events</SPAN><br> <SPAN style="color:#00007F">Call</SPAN> TOGGLEEVENTS(True)<br><br><SPAN style="color:#00007F">End</SPAN> <SPAN style="color:#00007F">Sub</SPAN><br><br><SPAN style="color:#00007F">Public</SPAN> <SPAN style="color:#00007F">Sub</SPAN> TOGGLEEVENTS(blnState <SPAN style="color:#00007F">As</SPAN> <SPAN style="color:#00007F">Boolean</SPAN>)<br><SPAN style="color:#007F00">'Originally written by Zack Barresse</SPAN><br> <SPAN style="color:#00007F">With</SPAN> Application<br> .DisplayAlerts = blnState<br> .EnableEvents = blnState<br> .ScreenUpdating = blnState<br> <SPAN style="color:#00007F">If</SPAN> blnState <SPAN style="color:#00007F">Then</SPAN> .CutCopyMode = <SPAN style="color:#00007F">False</SPAN><br> <SPAN style="color:#00007F">If</SPAN> blnState <SPAN style="color:#00007F">Then</SPAN> .StatusBar = <SPAN style="color:#00007F">False</SPAN><br> <SPAN style="color:#00007F">End</SPAN> <SPAN style="color:#00007F">With</SPAN><br><SPAN style="color:#00007F">End</SPAN> <SPAN style="color:#00007F">Sub</SPAN><br></FONT>
Let us know how it goes. Tested ok for me.