Avatar billede vjorgensen Nybegynder
11. december 2000 - 12:49 Der er 4 kommentarer og
1 løsning

sidenummer ved udskrift

Jeg har en større tabel med alarmer, der kan sorteres efter forskellige kriterier. Hver alarm har endvidere et løbenummer. Jeg gerne vil knytte en indholdsfortegnelse til alarmerne, så man kan se, at alarm 1 udskrives (findes på) side 4, nr. 2 på side 11 o.s.v. Er der nogen, der kender et trick, f.eks noget makro, så man kan få adgang til sidenummeret i \"footeren\" og skrive det i en celle i alarmens række? D.v.s. at hver alarmrække har et sted, hvor sidenummeret, den udskrives på, står (alarmteksterne varierer i længde og er ombrudt, så man kan næppe regne sig til et sidenummer).
Avatar billede nerøs Nybegynder
12. december 2000 - 00:36 #1
FØLGENDE BURDE virke:

Function side(R As Range)
    Dim r2 As Range, r3 As Range
    Dim nr As Variant
    Set r3 = Range(\"a1\", Cells(R.Row, 1))
    MsgBox r3.Address
    nr = 1
    For Each r2 In r3
    If r2.EntireRow.PageBreak <> xlPageBreakNone Then nr = nr + 1
    Next r2
    side = nr
End Function

Funktionen tæller pagebreaks fra A1 til den pågældende række.

Men det kører vildt langsomt. Det hænger vist nok sammen med at excel bruger printerdriveren til at bestemme pagebreaks med.

Følgende funktion er mindre fleksibel men kører lidt hurtigere idet den kun ser på om der er pagebreak i den pågældende række. Ellers er siden den samme som det nummer der stå i cellen oven over. \"On Error resume next\" er til ære for række 1. Det kræves altså at funktionen bruges i alle rækker i tabellen:

Function side(r As Range)
On Error Resume Next
side = 1
If r.EntireRow.PageBreak <> xlPageBreakNone Then
        side = r.Offset(-1) + 1
Else
    side = r.Offset(-1)
End If
End Function

Avatar billede vjorgensen Nybegynder
12. december 2000 - 09:24 #2
Det ser godt ud, men hvordan bruger jeg den nederste model? Jeg har skrevet koden ind i Visual Basic, men hvordan kan jeg få den ændret til en brugerdefineret funktion, så jeg kan bruge den? Eller skal jeg bruge den på en helt anden måde (jeg har kun erfaring med makroer optaget med makroafspilleren og efterfølgende eventuelt redigeret)

Venligst vjorgensen
Avatar billede vjorgensen Nybegynder
12. december 2000 - 12:08 #3
Nu har jeg fået det til at virke formelt ved at oprette et module, men det første kodeforslag er, som du også skrev, ekstremt langsomt. Det nederste kodeforslag duer ikke - uanset hvilket argument, jeg stopper i det kommer der noget underligt ud - hvilket argument er der forudset? Den øverste kode virker med f.eks. en cellebetegnelse fra 1. søjle.

Venligst vjorgensen
Avatar billede nerøs Nybegynder
12. december 2000 - 16:36 #4
Som argument kan cellen hvor formlen er i bruges, eller blot en celle i samme række.
Du får måske en fejl fordi du i VBA under tools/options/general har valgt \"Break on all errors\" Vælg \"break on unhandled errors\"
Ellers burde det virke hvis du starter fra oven af i dit udskriftområde.
Men i øvrigt hvis dine rækker er lige høje i tabelområdet, hvad så med at lade være med at sortre kolonnen med sidenumre?

VH Nerøs

Avatar billede vjorgensen Nybegynder
14. december 2000 - 09:39 #5
Ja, nu virker det fint, jeg havde kvajet mig og skrevet \"paeg\" i stedet for \"page\" - det gjorde en mindre forskel!

Tak for hjælpen

Hilsen vjorgensen
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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