Avatar billede johndifool Nybegynder
18. februar 2004 - 23:10 Der er 4 kommentarer

Kommandoknap for print.

Hej!

Jeg har et regneark hvor jeg har indsat sideskift således at der er 13 sider.

Fra og med side 2 skal der på hver side være 2 kommandoknapper. 1 der udskriver den side den står på og 1 der udskriver den side den står på samt alle foregående sider dog ikke side 1.

Hvorledes ser den smarteste macro for disse knapper ud?
Avatar billede johndifool Nybegynder
18. februar 2004 - 23:20 #1
Vil lige tilføje at jeg før har brugt følgende til indsættelse af 2 knapper til print af første side og knap til print af begge sider i et ark opdelt i 2 sider.:

Tryk ALT +F11

Vælg insæt modul

kopier disse 2 makroer derind

Public Sub EnSide()
    ActiveWindow.SelectedSheets.PrintOut From:=1, To:=1, Copies:=1, Collate _
        :=True
 
End Sub

Public Sub ToSider()
ActiveWindow.SelectedSheets.PrintOut From:=1, To:=2, Copies:=1, Collate _
        :=True
End Sub


Luk ved at trykke på øverste højre X

Tilbage på regnearket højreklikker du på en menulinie, vælg formular.

Træk en knap fra formularbjælken over på arket, tildel den en af makroen.

Gør det samme for den anden knap.


Jeg kan jo tilrette ovenstående så det kan bruges til et ark med mange sider...Men findes smartere/hurtigere metode?
19. februar 2004 - 09:13 #2
Hej John

Du bestemmer selv hvor mange knapper du sætter på dit ark, blot lad alle knapperne henvise til denne makro, som skulle kunne klare alle de print situationer, som du nævner.

Denne makro tager udgangspunkt i den celle som er aktiv, og regner med at det er den side du vil udskrive - evt. plus nogle flere.

Prøv det!!

Public Sub WitchPage()
    Dim objWS As Worksheet
    Dim lRow As Long
    Dim lPage As Long
    Dim sAnswer
   
    Set objWS = ActiveSheet
    lPage = 0
   
    ' Set lPage til den side, hvor den aktive celle findes
    For lRow = 1 To ActiveCell.Row
        If Not (objWS.Rows(lRow).PageBreak = xlPageBreakNone) Then
            lPage = lPage + 1
        End If
    Next lRow
   
    If lPage > 2 Then
   
        ' Udskrift af alle andre sider end side 1 og 2
        sAnswer = MsgBox("Du står på side " & lPage & "." & vbCrLf & vbCrLf & _
                "Tryk JA for at udskrive side 2 - " & lPage & vbCrLf & vbCrLf & _
                "Tryk NEJ for at udskrive side " & lPage & vbCrLf & vbCrLf & _
                "ANNULLER udskriver IKKE.", vbExclamation + vbYesNoCancel, "System Print")
           
        Select Case sAnswer
            Case vbYes
                ActiveWindow.SelectedSheets.PrintOut From:=1, To:=2, Copies:=lPage, Collate:=True
            Case vbNo
                ActiveWindow.SelectedSheets.PrintOut From:=1, To:=lPage, Copies:=lPage, Collate:=True
            Case vbCancel
        End Select
   
    Else
       
        ' Udskrift af side 1 og 2
        If MsgBox("Vil du udskrive side " & lPage & " ?", vbExclamation + vbYesNo, "System Print") = vbYes Then
            ActiveWindow.SelectedSheets.PrintOut From:=1, To:=lPage, Copies:=lPage, Collate:=True
        End If
   
    End If
   
    Set objWS = Nothing
End Sub
Avatar billede johndifool Nybegynder
19. februar 2004 - 13:40 #3
Hej..tak for dit svar..

Du skriver, at macroen tager udangspunkt i den celle som er aktiv.

Jeg har indsat en indholdsfortegnelse på side 1 hvorfra der er link til de resterende 12 sider. For at få siden til at blive vist pænt på midten af skærmen har jeg lavet link til celle som befinder sig på siden efter den side som ønskes vist.

Brugeren skal selv indtaste i tabellen. Det er derfor ikke til at vide om bruger vælger at aktivere udskrivningsknap når celle på ønsket side eller celle på siden efter ønsket side er aktiveret.

Umiddelbart kan din macro så vel ikke anvendes?
19. februar 2004 - 14:14 #4
Så kan du lave en lille sub til hver knap, som kalder den anden med et rækkenummer, som du har angivet i makro'en..... f.eks. således:

Public Sub Page1()
    WitchPage 1
End Sub

Public Sub Page2()
    WitchPage 2
End Sub

Public Sub WitchPage(ByVal lPage As Long)
    Dim sAnswer
   
    If lPage > 2 Then
   
        ' Udskrift af alle andre sider end side 1 og 2
        sAnswer = MsgBox("Du står på side " & lPage & "." & vbCrLf & vbCrLf & _
                "Tryk JA for at udskrive side 2 - " & lPage & vbCrLf & vbCrLf & _
                "Tryk NEJ for at udskrive side " & lPage & vbCrLf & vbCrLf & _
                "ANNULLER udskriver IKKE.", vbExclamation + vbYesNoCancel, "System Print")
           
        Select Case sAnswer
            Case vbYes
                ActiveWindow.SelectedSheets.PrintOut From:=1, To:=2, Copies:=lPage, Collate:=True
            Case vbNo
                ActiveWindow.SelectedSheets.PrintOut From:=1, To:=lPage, Copies:=lPage, Collate:=True
            Case vbCancel
        End Select
   
    Else
       
        ' Udskrift af side 1 og 2
        If MsgBox("Vil du udskrive side " & lPage & " ?", vbExclamation + vbYesNo, "System Print") = vbYes Then
            ActiveWindow.SelectedSheets.PrintOut From:=1, To:=lPage, Copies:=lPage, Collate:=True
        End If
   
    End If
   
End Sub
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
Vi har et stort udvalg af Excel kurser. Find lige det kursus der passer dig lige her.

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