Avatar billede Newbee1 Novice
19. juli 2009 - 00:21 Der er 1 kommentar og
1 løsning

Makro printe antal sider

Hej

Jeg skal bruge en makro der kan udprinte et variabelt antal sider ?

Variablen vil være en tæller, der tæller aktive antal sider. Aktive sider angives evt. ved en 0 værdi.

Tælleren vil side i et ark mens udprintet vil være fra et andet ark.

Kan i hjælpe mig ?


MVH

Tony
Avatar billede knc Nybegynder
20. august 2009 - 10:12 #1
Hvad med denne makro:

Option Explicit

Sub UdskrivArk()
  Dim i As Integer
  Dim TopPos As Integer
  Dim SheetCount As Integer
  Dim PrintDlg As DialogSheet
  Dim CurrentSheet As Worksheet
  Dim cb As CheckBox
  Application.ScreenUpdating = False

'  Check for protected workbook
  If ActiveWorkbook.ProtectStructure Then
      MsgBox "Arket er beskyttet.", vbCritical
      Exit Sub
  End If

'  Add a temporary dialog sheet
  Set CurrentSheet = 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 ark som 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
  CurrentSheet.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
      ActiveSheet.Select
  End If
 
  Else
      MsgBox "Alle ark er tomme."
  End If
 

'  Delete temporary dialog sheet (without a warning)
  Application.DisplayAlerts = False
  PrintDlg.Delete

'  Reactivate original sheet
  CurrentSheet.Activate
End Sub
Avatar billede Newbee1 Novice
18. august 2010 - 19:05 #2
Dim fraSide, tilSide
    fraSide = ActiveSheet.Range("U22")
    tilSide = ActiveSheet.Range("U23")
   
    Sheets("BSP").Select
   
    ActiveWindow.SelectedSheets.PrintOut From:=fraSide, To:=tilSide, Copies:=1

    Sheets("Indtast").Select
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Excel kurser for alle niveauer og behov – find det kursus, der passer til dig

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester