22. marts 2009 - 21:27Der er
4 kommentarer og 1 løsning
Valg af ark til print
Hej
Jeg har et regneark med en del ark. Jeg mangler en funktion hvor man ved tryk på knap får mulighed for at vælge hvilke(t) ark der skal printes ud. Det er kun nogle udvalgte ark der skal med på liste og altså ikke alle ark i regnearket.
Jeg har denne kode som starter en liste hvor du kan vælge hvilket ark du vil printe ud, men den vælger alle ark (ikke de skjulte) så en løsning kunne selvfølgelig være at skjule de øvrige ark. Men det kunne jo være der fandtes en anden løsning - jeg gir det lige en chance.
Her er kode som viser alle ark:
Option Explicit
Sub Printtotal() Dim i As Integer Dim TopPos As Integer Dim SheetCount As Integer Dim PrintDlg As DialogSheet Dim CurrentSheet As Worksheet Dim OriginalSheet As Worksheet Dim cb As CheckBox Application.ScreenUpdating = False
' Check for protected workbook If ActiveWorkbook.ProtectStructure Then MsgBox "Projektmappen er beskyttet!", vbCritical Exit Sub End If
' Add a temporary dialog sheet Set OriginalSheet = ActiveSheet Set PrintDlg = ActiveWorkbook.DialogSheets.Add
SheetCount = 0
' Add the checkboxes TopPos = 40 For i = 1 To ActiveWorkbook.Worksheets.Count Set CurrentSheet = ActiveWorkbook.Worksheets(i) ' Skip empty sheets and hidden sheets If Application.CountA(CurrentSheet.Cells) <> 0 And _ CurrentSheet.Visible Then SheetCount = SheetCount + 1 PrintDlg.CheckBoxes.Add 78, TopPos, 150, 16.5 PrintDlg.CheckBoxes(SheetCount).Text = _ CurrentSheet.Name TopPos = TopPos + 13 End If Next i
' Move the OK and Cancel buttons PrintDlg.Buttons.Left = 240
' Set dialog height, width, and caption With PrintDlg.DialogFrame .Height = Application.Max _ (68, PrintDlg.DialogFrame.Top + TopPos - 34) .Width = 230 .Caption = "Vælg hvilke ark der skal udskrives" End With
' Change tab order of OK and Cancel buttons ' so the 1st option button will have the focus PrintDlg.Buttons("Button 2").BringToFront PrintDlg.Buttons("Button 3").BringToFront
' Display the dialog box OriginalSheet.Activate Application.ScreenUpdating = True If SheetCount <> 0 Then If PrintDlg.Show Then For Each cb In PrintDlg.CheckBoxes If cb.Value = xlOn Then Worksheets(cb.Caption).Select Replace:=False End If Next cb ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True ' ActiveSheet.Select End If
kvisten63! det var ellers chuckieth9 der kom med den løsning, så det var faktisk ham som skulle have de udlovede point.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.