|
| Celleindhold i sidehoved??? Fra : Brassovitski | Vist : 3043 gange 100 point Dato : 21-01-11 08:39 |
|
Er det muligt i Excel 2010 at indsætte indholdet af en celle i sidehovedet?
F.eks. har jeg teksten "år 2010" i celle A1 i ark 1, jeg har navngivet cellen "År".
Er det så muligt at indsætte en kode i sidehovedet så teksten/tallet i "År" indsættes i sidehovedet og opdateres når indholdet i "År" ændres??
| |
| Kommentar Fra : Klaudi |
Dato : 21-01-11 13:27 |
| | |
|
Hej Klaudi
Tak for tipppet, men så vidt jeg kan se handler tråden på linket, om at indsætte en celle's indhold i sidehovedet, når der printes. Det jeg efterlyser, er når celleindholdet i en bestemt celle skifter/ændres, skal indholdet indsættes i pladsholderen i sidehovedet på 3 af de 4 ark der indgår i Excel projektmappen.
Noget lignende når man opretter pladsholdere/felter ved brevfletning.
Jeg har 2 celler i ark 4, henholdsvis (A1) et årstal, og (A2) periodeangivelse, som skal indsættes i sidehovedet på ark 1,2 og 3, som overskrift og undertitel.
| |
| Kommentar Fra : Klaudi |
Dato : 24-01-11 09:44 |
|
Hwa' med denne her?
This article contains a sample Microsoft Visual Basic for Applications macro that references
a cell to the header or footer of a worksheet.
http://support.microsoft.com/kb/273028
| |
| Kommentar Fra : Klaudi |
Dato : 24-01-11 10:29 |
|
Måske denne!
Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
ActiveSheet.PageSetup.LeftFooter = Range("A1").Text
End Sub
The macro is run every time Excel does its normal recalculation—meaning every time the contents of any cell changes or someone presses F9. If you want the contents to be in a different part of the footer, you can change LeftFooter to CenterFooter, or RightFooter.
http://excel.tips.net/Pages/T002522_Putting_Cell_Contents_in_Footers.html
| |
|
Hej Klaudi
Jeg kan ikk erigtig få det til at virke.
Nu har jeg prøvet at indspille en macro, men hvordan får jeg den til at køre automatisk, hver gang celleindholdet i A1 rettes/opdatere?
Citat Sub CelleA1_til_Header()
'
' CelleA1_til_Header Makro
'
'
Range("A1").Select
ActiveCell.FormulaR1C1 = "2010"
Range("A1").Select
Selection.Copy
With ActiveSheet.PageSetup
.LeftHeader = ""
.CenterHeader = "2010"
.RightHeader = ""
.LeftFooter = ""
.CenterFooter = ""
.RightFooter = ""
.LeftMargin = Application.InchesToPoints(0.7)
.RightMargin = Application.InchesToPoints(0.7)
.TopMargin = Application.InchesToPoints(0.75)
.BottomMargin = Application.InchesToPoints(0.75)
.HeaderMargin = Application.InchesToPoints(0.3)
.FooterMargin = Application.InchesToPoints(0.3)
.Zoom = 100
.PrintErrors = xlPrintErrorsDisplayed
.OddAndEvenPagesHeaderFooter = False
.DifferentFirstPageHeaderFooter = False
.ScaleWithDocHeaderFooter = True
.AlignMarginsHeaderFooter = True
.EvenPage.LeftHeader.Text = ""
.EvenPage.CenterHeader.Text = ""
.EvenPage.RightHeader.Text = ""
.EvenPage.LeftFooter.Text = ""
.EvenPage.CenterFooter.Text = ""
.EvenPage.RightFooter.Text = ""
.FirstPage.LeftHeader.Text = ""
.FirstPage.CenterHeader.Text = ""
.FirstPage.RightHeader.Text = ""
.FirstPage.LeftFooter.Text = ""
.FirstPage.CenterFooter.Text = ""
.FirstPage.RightFooter.Text = ""
End With
Range("A1").Select
Application.CutCopyMode = False
End Sub |
| |
| Kommentar Fra : Klaudi |
Dato : 24-01-11 19:12 |
|
Denne opdaterer Header når arket gemmes
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
ActiveSheet.PageSetup.CenterHeader = Range("a1").Value
End Sub
| |
|
Hej Klaudi
Citat Denne opdaterer Header når arket gemmes
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
ActiveSheet.PageSetup.CenterHeader = Range("a1").Value
End Sub |
Er det muligt du kan finde koden for udfør ved edit af celle A1 (Cellen med det indhold der skal i headeren?
Jeg er ikke lige en super haj til VBA, så hvis du kan beskrive hvordan jeg får scriptet/koden lagt ind, vil det være fint.
Jeg er klar over hvordan jeg åbner VBA'editoren. Men skal der ikke deklareres noget først?
Jeg har fire ark i projektmappen. Det er indholdet i celle A1 i ark 4, som skal indsættes i headeren på ark 1,2 og 3.
Hilsen
Brassovitski
| |
|
Er der ikke en kommando der hedder noget i retning af 'OnChange' - 'OnUpdate' eller lignende?
| |
| Kommentar Fra : Klaudi |
Dato : 28-01-11 09:24 |
|
Åbn VBA editor ALT-F11, dobbeltklik på ThisWorkbook, klik en gang i WorkBook vinduet og indsæt dette i vinduet...
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
ActiveSheet.PageSetup.CenterHeader = Range("A1").Text
End Sub
Nu skule det ligne dette http://peecee.dk/upload/view/286998
Det opdatere Header hver gang der ændres noget...
| |
| Kommentar Fra : Klaudi |
Dato : 28-01-11 11:22 |
|
Eller denne
Åbn VBA editor ALT-F11, dobbeltklik på Ark4(Ark4), klik en gang i Ark4(Code) vinduet og indsæt dette i vinduet...
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim WS As Worksheet
For Each WS In ActiveWorkbook.Sheets
WS.PageSetup.CenterHeader = Sheets(4).Range("A1").Value
Next
End Sub
Nu skule det ligne dette http://peecee.dk/upload/view/287002
Det skulle ændre Header når A1 ændres på Ark 4
| |
|
Hej klaudi
Nu har jeg prøvet at følge din vejledning, men der bliver ikke indsat noget i headeren?? Hmmmm!
http://peecee.dk/upload/view/287555
Jeg har indsat et klip af headeren i ark 4(ØUS - Øst uden stikledning).
Bemærk cellen indholdet som skal indsættes i headeren på dette ark ligger i celle A1 i ark 5 (Sammenfatning) Skal dette ikke indsættes i koden foran "a1" ...=Range(Sammenfatning!"A1").Text
| |
|
Gør det det hele lidt lettere, hvis celle A1 i arket Sammenfatning f.eks. navngives Titel01?
| |
|
Halløjsa
Nu virker det næsten:
Koden er OK, bortset fra at den opdaterer hver gang jeg hopper til enten A1 eller A2, er det ikke muligt at den kun opdaterer OnChange, altså kun når der rettes i indholdet af enten A1 eller A2?
http://peecee.dk/upload/view/287564
Så har jeg et lille ønske til formateringen.
CenterHeader vil jeg gerne have formateret til en anden skrift, skriftstørrelse, fed, og kursiv.
RightHeader vil jeg gerne have formateret til en anden skrift, skriftsørrelse, og kursiv.
Kan det lægge ind i koden? PLease
| |
|
Citat Nu virker det næsten:
Koden er OK, bortset fra at den opdaterer hver gang jeg hopper til enten A1 eller A2, er det ikke muligt at den kun opdaterer OnChange, altså kun når der rettes i indholdet af enten A1 eller A2? |
Denne klarede jeg selv ved at ændre Worksheet_SelectionChange til kun Worksheet_Change.
Kode Private Sub Worksheet_Change(ByVal Target As Range)
Dim WS As Worksheet
For Each WS In ActiveWorkbook.Sheets
WS.PageSetup.CenterHeader = Sheets(5).Range("A1").Value
WS.PageSetup.RightHeader = Sheets(5).Range("A2").Value
Next
End Sub |
| |
|
Lige en idé mere
det ville jo være smart, hvis header kun opdateres ved ændring i celle A1 henholdsvis A2. Så makroen ikke kører, hver gang der ændres andet i arket.
Kan man sætte en range på Worksheet_Change kommandoen?
| |
| Kommentar Fra : Klaudi |
Dato : 31-01-11 17:09 |
|
Jeg har nu siddet og rodet med dette, men kan ikke få det til at virke, der kommer fejl hele tiden!
Måske du kan hitte ud af det
Fonts And Font Sizes
You can insert control codes to customize the font, font attributes (bold, italics, etc), and font size. The control code used in the header string is the ampersand &. The code below will create put the follow formatted text in the header.
Some Bold Courier New Size 10 Text
Worksheets("Sheet2").PageSetup.LeftHeader = _
"Some&B&""Courier New""&10 Bold Courier New Size 10&B&""Arial"" Text"
Note that since the font name must be enclosed in quotes in the header string itself, you must use two double quotes in VBA.
See Formatting Codes For Headers And Footers in the VBA help files for a complete list of control sequences.
http://www.cpearson.com/excel/headfoot.htm
| |
|
Hej Klaudi
Nu har jeg fået det til at virke sådan at centerheader kun opdateres når celle A1 ændres, men jeg kan ikke få koden til at fange en ændring i A2. Kan du hjælpe med en rettelse til nedenfor viste?
Formateringen af tekst i header har jeg ikke fået til at virke endnu.
Kode Private Sub Worksheet_Change(ByVal Target As Range)
Dim WS As Worksheet
If Target.Address = "$A$1" Then
For Each WS In ActiveWorkbook.Sheets
WS.PageSetup.CenterHeader = Sheets(5).Range("$A$1").Value
Next
Else
If Target.Address = "$a$2" Then
For Each WS In ActiveWorkbook.Sheets
WS.PageSetup.RightHeader = Sheets(5).Range("$A$2").Value
Next
End If
End If
End Sub |
| |
| Kommentar Fra : Klaudi |
Dato : 01-02-11 16:15 |
|
Prøv dette, ændring med fed
Private Sub Worksheet_Change(ByVal Target As Range)
Dim WS As Worksheet
If Target.Address = "$A$1" Then
For Each WS In ActiveWorkbook.Sheets
WS.PageSetup.CenterHeader = Sheets(5).Range("$A$1").Value
Next
Else
If Target.Address = "$ A$2" Then
For Each WS In ActiveWorkbook.Sheets
WS.PageSetup.RightHeader = Sheets(5).Range("$A$2").Value
Next
End If
End If
End Sub
| |
|
Ja selvfølgelig skal du have response på om det virker, jeg er blot temmelig ophængt med andre presserende opgaver lige nu. Men jeg skal nok vende tilbage, når jeg har afprøvet de forskellige muligheder.
| |
|
Halløjsa
Nu virker koden, så der kun opdateres når der rettes i celle A1 eller i A2.
Citat Private Sub Worksheet_Change(ByVal Target As Range)
Dim WS As Worksheet
If Target.Address = "$A$1" Then
For Each WS In ActiveWorkbook.Sheets
WS.PageSetup.CenterHeader = Sheets(5).Range("$A$1").Value
Next
Else
If Target.Address = "$A$2" Then
For Each WS In ActiveWorkbook.Sheets
WS.PageSetup.RightHeader = Sheets(5).Range("$A$2").Value
Next
End If
End If
End Sub |
Så er der ´'kun' formateringen tilbage at lege med.
| |
|
Halløjsa
Nu er det lige før jeg har revet alle hårene af hovedet.
Citat WS.PageSetup.CenterHeader = Sheets(5).Range("$A$1").Value |
Så vidt jeg har forstået henter denne stump kode
Citat Sheets(5).Range("$A$1").Value |
indholdet af celle A1 i ark 5, og bruger det til at indsætte i headeren, så min idé var at koden for formatering skal kombineres med denne, men jeg ved ikke lige hvordan. Jeg har forsøgt utallige kombinationer, for at få formatkoder koblet sammen med koden, men uden held.
| |
| Kommentar Fra : Klaudi |
Dato : 24-02-11 14:10 |
|
Her er det sat ind i A1
Private Sub Worksheet_Change(ByVal Target As Range)
Dim WS As Worksheet
If Target.Address = "$A$1" Then
For Each WS In ActiveWorkbook.Sheets
WS.PageSetup.CenterHeader = "&I&""Verdana""&20 " & Sheets(5).Range("$A$1").Value
Next
Else
If Target.Address = "$A$2" Then
For Each WS In ActiveWorkbook.Sheets
WS.PageSetup.RightHeader = Sheets(5).Range("$A$2").Value
Next
End If
End If
End Sub
| |
| Kommentar Fra : Klaudi |
Dato : 24-02-11 15:37 |
|
og når du nu om lidt spørger om farve, så kan jeg ikke få det til at virke da jeg "kun" har 2003 udgaven, det skulle være muligt fra 2007,
f.eks. &KFF0000 er rød (FF 00 00)
sort (000000) osv
| |
|
Hej Klaudi
Jeg har ikke lige prøvet dit sidste forslag af endnu, det gør jeg nok i morgen.
Jeg var for nylig på et Excel kursus, hvor vi legede lidt med Macroer og betinget formatering. Hvis der skal gøres noget med farver kan man i de fleste tilfælde skrive farvens navn, der var blot en enkelt farve der ikke virkede, på denne måde, jeg husker ikke lige hvilken, ellers skal man kunne bruge den hexadecimale kode for farven, som du skriver. Jeg ser lige om jeg får lidt tid til at eksperimentere lidt i morgen.
| |
|
Hej
Jeg har fundet et link til Excel color index.
Citat http://www.mvps.org/dmcritchie/excel/colors.htm |
Min kode ser ud som følger nu og virker. Jeg har heller ikke fået det med farve til at virke.
Jeg er lidt i tvivl om man skal bruge hexkoder eller Excel formen (color 10)?
Citat Private Sub Worksheet_Change(ByVal Target As Range)
Dim WS As Worksheet
If Target.Address = "$A$1" Then
For Each WS In ActiveWorkbook.Sheets
WS.PageSetup.CenterHeader = "&B&I&""Calibri""&20 " & Sheets(5).Range("$A$1").Value
Next
Else
If Target.Address = "$A$2" Then
For Each WS In ActiveWorkbook.Sheets
WS.PageSetup.RightHeader = "&I&""Verdana""&9 " & Sheets(5).Range("$A$2").Value
Next
End If
End If
End Sub |
Macroen lægger indholdet i celle A1 (ark 5) i center header på alle 5 ark, formateret med fed, kursiv, fint Calibri, punkt 20.
Indholdet af celle A2 (ark 5) i right header på alle 5 ark, formateret normal, kursiv, font Verdana, punkt 9.
Så det virker fint nu.
Til Klaudi - Skal jeg holde tråden åben, indtil en af os har fået det med farve til at virke, eller skal jeg lukke den?
| |
| Kommentar Fra : Klaudi |
Dato : 25-02-11 09:29 |
|
Citat Skal jeg holde tråden åben |
Tjae så ender den vel med at blive annulleret og jeg har ikke mulighed for at teste farve, da det ikke virker i excel 2003
Color formatting code
The code to set color is:
&K[color] where [color] is a 6 digit hexadecimal color value.
http://msdn.microsoft.com/en-us/library/bb225426(v=office.12).aspx
| |
|
Nej da
Spørgsmålet skal da ikke Annulleres, der er da rigtig mange gode hints at hente her.
Jeg kigger lige lidt på det med farver i løbet af næste uge.
God weekend
| |
| Kommentar Fra : Klaudi |
Dato : 25-02-11 18:20 |
| | |
|
Halløjsa
Har desværre været ret ophængt med arbejde i den sidste tid, så jeg må indrømme, at jeg ikke har fået kigget nærmere på det. pørgsmål annulleres vel ikke automaisk?
| |
|
Det har jeg da aldrig været udsat for før. Hvor står det i brugerbetingelserne? Jeg kan da heller ikke se nogen udløbsdato på spørgsmålet?
| |
|
YES
Så lykkedes det at få teksten i header formateret til en bestemt farve.
Kode Private Sub Worksheet_Change(ByVal Target As Range)
Dim WS As Worksheet
If Target.Address = "$A$1" Then
For Each WS In ActiveWorkbook.Sheets
WS.PageSetup.CenterHeader = "&B&I&""Calibri""&20 " [I][B]& "&K993366"[/B][/I] & Sheets(5).Range("$A$1").Value
Next
Else
If Target.Address = "$A$2" Then
For Each WS In ActiveWorkbook.Sheets
WS.PageSetup.RightHeader = "&I&""Verdana""&9 " [I][B]& "&K0000ff"[/B][/I] & Sheets(5).Range("$A$2").Value
Next
End If
End If
End Sub |
Så fandt jeg ud af, hvor koden for farve skal sættes ind for at det virker! Bemærk, jeg tror kun det virker i Excel 2007 og opefter (2010).
| |
|
Øv koderne for Bold og Italic skal selvfølgelig ikke ligge i koden, det var noget jeg gjorde for at fremhæve rettelsen, men koder virker åbenbart ikke i en kodeboks her på Kandu, så her er den lige igen.
Kode Private Sub Worksheet_Change(ByVal Target As Range)
Dim WS As Worksheet
If Target.Address = "$A$1" Then
For Each WS In ActiveWorkbook.Sheets
WS.PageSetup.CenterHeader = "&B&I&""Calibri""&20 " & "&K993366" & Sheets(5).Range("$A$1").Value
Next
Else
If Target.Address = "$A$2" Then
For Each WS In ActiveWorkbook.Sheets
WS.PageSetup.RightHeader = "&I&""Verdana""&9 " & "&K0000ff" & Sheets(5).Range("$A$2").Value
Next
End If
End If
End Sub |
| |
|
Der skal ikke være linjeskift efter Range!
| |
|
Tak for svaret Klaudi.
Lukker lige spørgsmålet, da vi jo nu ved fælles hjælp har løst den stillede opgave.
Tak for hjælpen undervejs.
| |
| Kommentar Fra : Klaudi |
Dato : 04-04-11 16:07 |
| | |
| Du har følgende muligheder | |
|
Eftersom du ikke er logget ind i systemet, kan du ikke skrive et indlæg til dette spørgsmål.
Hvis du ikke allerede er registreret, kan du gratis blive medlem, ved at trykke på "Bliv medlem" ude i menuen.
| |
|
|