Avatar billede martin_schou Nybegynder
21. november 2001 - 11:23 Der er 36 kommentarer og
2 løsninger

sidehovede og sidefod i Excel

Kan det lade sig gøre at lave dynamiske sidehoveder og -fødder, som kan hente tekst ind fra arkene, lidt som man kan på tværs af interne ark (=Ark1!$B4)?

Avatar billede Slettet bruger
21. november 2001 - 11:27 #1
Der er en del muligheder. Hvilken version af Excel bruger du.
Avatar billede martin_schou Nybegynder
21. november 2001 - 11:30 #2
Excel 2000
21. november 2001 - 11:32 #3
Ja, hvis du bruger en makro hertil ellers ikke.
Avatar billede martin_schou Nybegynder
21. november 2001 - 11:34 #4
Makro er fint. Kan du stykke en sammen til mig?
Avatar billede janvogt Praktikant
21. november 2001 - 11:34 #5
Jeg har en makro liggende til formålet.
Interesseret så opgiv mailadresse eller send en mail til jan_vogt_hansen@hotmail.com
21. november 2001 - 11:38 #6
Den kunne se således ud:

Sub HeaderFooter()
    With Worksheets(\"Ark1\").PageSetup
        .LeftHeader = \"\"
        .CenterHeader = \"\"
        .RightHeader = \"\"
        .LeftFooter = \"\"
        .CenterFooter = \"\"
        .RightFooter = \"\"
    End With
End Sub
Avatar billede martin_schou Nybegynder
21. november 2001 - 11:38 #7
Ikke fordi, jeg ikke er interesseret Jan, men Ekspertens regler siger, at løsninger skal være tilgængelige for alle Ekspertens brugere, så hvis du vil have points, så læg makroen her :-)
21. november 2001 - 11:39 #8
Eller således:

Sub HeaderFooter()
    With Worksheets(\"Ark1\").PageSetup
        .LeftHeader = \"\"
        .CenterHeader = Worksheets(\"Ark1\").Range(\"A1\")
        .RightHeader = \"\"
        .LeftFooter = \"\"
        .CenterFooter = \"Peter og hans høns\"
        .RightFooter = \"\"
    End With
End Sub
21. november 2001 - 11:40 #9
martin_schou>> hvor er jeg dog enig - alt skal vises her.
Avatar billede janvogt Praktikant
21. november 2001 - 11:42 #10
Ok, så kommer den her:

Sub HovedSidefod()
\'
\' Indsætter dynamisk hoved og sidefod på alle ark.
\'
Dim ws As Worksheet
    Application.ScreenUpdating = False
    For Each ws In ActiveWorkbook.Worksheets
        Application.StatusBar = \"Ændrer sidehoved og -fod i \" & ws.Name
        LH = [d13].Value
        CH = [d14].Value
        RH = [d15].Value
        LF = [d16].Value
        CF = [d17].Value
        RF = [d18].Value
       
       
        With ws.PageSetup
            .LeftHeader = LH
            .CenterHeader = CH
            .RightHeader = RH
            .LeftFooter = LF
            .CenterFooter = CF
            .RightFooter = RF
        End With
    Next ws
    Set ws = Nothing
    Application.StatusBar = False
End Sub
Avatar billede janvogt Praktikant
21. november 2001 - 11:43 #11
Jeg viser gerne alt det, som nu kan lade sig gøre på Eksperten.
Ekspertens layout/brugerflade er bare ikke velegnet til alt.
Avatar billede martin_schou Nybegynder
21. november 2001 - 11:44 #12
Flemming:
hvis jeg smider den ind i programkoden til det pågældende ark, får jeg følgende fejl:
Compile error:
Expected: end of statement

for hver linje med footer/header.
Hvad gør jeg forkert? Jeg er ikke bekendt med makroer ... ret meget.

Skal makroen placeres i programkoden for arket eller workbook?
Avatar billede janvogt Praktikant
21. november 2001 - 11:46 #13
Min kode indsætter værdierne fra D13 til D18 i alle ark.
21. november 2001 - 11:46 #14
Fjern Worksheets(\"Ark1\"), så du kun har Range
Avatar billede martin_schou Nybegynder
21. november 2001 - 11:46 #15
Fandt fejlen. Det er noget andet end mellemrum, der bliver kopieret her fra siden.

Jeg prøver lige din store makro, inden du får nogle points :-)

Btw - hvordan får jeg den til at gøre det automatisk, f.eks. ved start af arket?
Avatar billede janvogt Praktikant
21. november 2001 - 11:53 #16
Du ligger koden under ThisWorkbook hændelsen:
Private Sub Workbook_Open()
Avatar billede martin_schou Nybegynder
21. november 2001 - 12:02 #17
I får begge points ... det er vel det mest fair. I kan få ½ point til deling ... eller sådan noget ;-)
21. november 2001 - 12:04 #18
:-)
Avatar billede janvogt Praktikant
21. november 2001 - 12:17 #19
:-)
Avatar billede martin_schou Nybegynder
21. november 2001 - 12:17 #20
Hmm ... hvis jeg henter input fra en dato i formatet \"01-01-2001\", kan det så formateres til et andet datoformat som f.eks. \"Mandag den 1. Januar 2001\"?
Avatar billede janvogt Praktikant
21. november 2001 - 12:21 #21
Det er vist en helt andet problem ...
Ja, med en lang formel kan det godt lade sig gøre.
21. november 2001 - 12:25 #22
Det kunne f.eks. gribes an således:

Dim sDato As String
    sDato = Format(Range(\"A1\"), \"dddd \"\"den \"\" d.  mmmm yyyy\")
    sDato = UCase(Left(sDato, 1)) & Mid(sDato, 2, sDato - 1)
21. november 2001 - 12:26 #23
sæt den aktuelle Heater eller Footer = sDato
Avatar billede martin_schou Nybegynder
21. november 2001 - 12:37 #24
Takker ... nu jeg alligevel nasser, hvordan sætter jeg et linjeskift ind i teksten?
21. november 2001 - 12:40 #25
\"din tekst\" & Chr(10) & \"din næste tekst\"
Avatar billede martin_schou Nybegynder
21. november 2001 - 12:41 #26
Fino :-)
Avatar billede martin_schou Nybegynder
21. november 2001 - 12:51 #27
Har lige et problem.

De data, jeg skal bruge til at lave sidehoved og -fod med, bliver først hentet ind i arket EFTER makroen til at lave sidehoved og -fod er kørt.

Hvordan løser jeg det problem, så makroen køres EFTER data er hentet ind i arket?

Sub AfterOpen ?
Avatar billede janvogt Praktikant
21. november 2001 - 12:52 #28
>>>flemming
Der er en fejl i din dato-formateringskode i den sidste linie.

Jeg tror den korrekte kode skal være noget i retning af:
Dim sDato As String
  sDato = Format(Range(\"A1\"), \"dddd \"\"den \"\" d.  mmmm yyyy\")
  sDato = UCase(Left(sDato, 1)) & Mid(sDato, 2, Len(sDato) - 1)


Avatar billede janvogt Praktikant
21. november 2001 - 12:53 #29
Hvordan hentes data ind?
21. november 2001 - 12:54 #30
>>>jan
du har ret, jeg har kun tænkt mig til LEN :-) en forglemmelse ved skrivningen
21. november 2001 - 12:55 #31
Mener du hvordan får jeg fat i Range(\"A1\") - under format linien - prøv engang - det virker.
Avatar billede janvogt Praktikant
21. november 2001 - 12:56 #32
Sidehoved og sidefod bruges normalt kun i forbindelse med udskrift.

Derfor vil du med fordel kunne anvende hændelsen:
Private Sub Workbook_BeforePrint(Cancel As Boolean)
Avatar billede janvogt Praktikant
21. november 2001 - 12:58 #33
.... altså lige før du udskriver.
Avatar billede martin_schou Nybegynder
21. november 2001 - 12:59 #34
Data hentes ind via en MASSE databaseforespørgsler ... 8 styk for at være præcis.

Private Sub Workbook_BeforePrint(Cancel As Boolean)

virker vel også ved print preview?
Avatar billede janvogt Praktikant
21. november 2001 - 13:00 #35
.... og placere koden til sidehoved og sidefod der.
21. november 2001 - 13:04 #36
BeforePrint har ikke noget med Print preview at gøre, såvidt jeg husker.

Jeg takker af nu.
Avatar billede janvogt Praktikant
21. november 2001 - 13:12 #37
BeforePrint virker fint ved Print Preview.
Avatar billede kindk Nybegynder
21. marts 2003 - 11:40 #38
Heeey! Det var en rigtig god funktion du havde der janvogt.
Kan den udvides til at tage værdien fra et ark og poste i headeren på en anden fil?

F.eks.
FIL1.XLS  d13  bliver indsat i FIL2.XLS header?
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