< návrat zpět

MS Excel


Téma: Záhlaví-zápatí ??? rss

Zaslal/a 25.10.2010 12:14

Jde nějak vložit do záhlaví nebo zápatí obsah konkrétních buněk
a také zda jse vložit do záhlaví název listu?

Zaslat odpověď >

Strana:  1 2   další »
#002866
avatar
názov listu, cestu k súboru, dátum číslo strany a pod. priamo v nastavení strany, hlavička a päta, vlastná hlavička

obsah konkrétnej bunky pôjde iba makrom
napr. vložiť v aktívnom hárku na pravú stranu hlavičky hodnotu z bunky C16 na hárku xyz:
ActiveSheet.PageSetup.RightHeader = _
Format(Worksheets("xyz").Range("C16").Value)citovat
#002918
avatar
Tiež ako makro začiatočník predpokladám, že "_" je pokračovanie riadka vzorca. Mne sa obsah bunky raz do Záhlavia vypíše, ale pri zmene obsahu vzorovej bunky (tu C16) sa už Záhlavie neprepíše. Kde robím chybu? (Excel 2007, xlsm). Editor makra nevykazuje žiadnu chybu.citovat
#002925
avatar
"_" je pokračovanie riadka kódu
ak to nemení automaticky, tak asi preto lebo nevie, že to má robiť
Ak je potrebné, aby po každej zmene danej bunky bolo prepísané záhlavie potom napr.:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Bunka As Range
Set Bunka = Range("C16")
If Target.Address = Bunka.Address Then
ActiveSheet.PageSetup.RightHeader = _
Format(Range("C16").Value)
End If
End Subcitovat
#035814
avatar
Dobrý večer,
můžu poprosit o doplnění k tomuto tématu? Potřebuji vyřešit 2 věci.
1) Při aplikaci makra, které předložil host, se mi hodnota buňky (např. 3/16), která je vložena jako textový řetězec a měla by také tak zůstat, v záhlaví zobrazí jako datum "16.03.2017".
2) Potřebuji zkombinovat určitý text (např. "abc"), může být součástí makra, s textovou hodnotou z buňky do jednoho řetězce v záhlaví.
Děkuji předem za odezvu.citovat
#035815
elninoslov
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$C$16" Then PageSetup.RightHeader = CStr(Range("C16").Value)
End Sub


no a s ďalším textom spolu
... PageSetup.RightHeader = "abc " & CStr(Range("C16").Value)
Jáj, a zápätie/päta (zápatí) bude RightFooter namiesto RightHeader.

Vľavo je LeftHeader/LeftFooter a v strede zase CenterHeader/CenterFooter.

Ak hrozí, že bude hromadná zmena dát (kopírovanie) zároveň s bunkou C16, treba ošetriť nasledovne:
If Not Intersect(Target, Range("C16")) Is Nothing Then ...

Ak má byť kontrola na základe hodnoty menenej vzorcom, tak Worksheet_Change nepomôže, a to bude problém, pretože v Calculate metóde nieje možné nastavovať hlavičku/pätu.citovat
#035817
avatar
Super, díky :-)citovat
#035821
elninoslov
Ešte by sa to dalo riešiť pred tlačou, alebo pred uložením
Private Sub Workbook_BeforePrint(Cancel As Boolean)
Call UpravitHlavicku("Hárok1", "C16")
End Sub

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Call UpravitHlavicku("Hárok1", "C16")
End Sub

Sub UpravitHlavicku(List As String, Bunka As String)
With Worksheets(List)
.PageSetup.LeftHeader = CStr(.Range(Bunka))
End With
End Sub

prípadne pri Workbook_Open() alebo Worksheet_Activate().citovat
#035839
avatar
Pokud jde o VBA, jsem stále analfabet. Tedy popořádku.
1) Spojil jsem 3 řetězce takto
If Target.Address = "$E$1" Then PageSetup.RightHeader = _
"Příloha č. 3 ke Kolovadlu č. " & CStr(Range("E1").Value) & " IPP"
2) Jedná se o levé záhlaví a má být složeno ze 2 řádků textu, z toho u prvního řádku jde o kombinaci viz bod 1) a druhý řádek má být tučně tento text:
"Přehled vydaných částek Sbírky zákonů s obsahem za dané období". Jak to udělat?
3) Jak jsem pochopil, pokud by hodnotu v buňce "E1", na kterou se odkazuje kód makra, byla výsledkem vzorce, tak to nebude fungovat?
4) Myslím, že aktualizace záhlaví před tiskem nebo při uložení není potřeba řešit, když se aktualizuje hned při změně hodnoty v buňce. Ale uložím si - určitě se to bude hodit při nějaké jiné příležitosti.
Děkuji.citovat
#035844
elninoslov
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$E$1" Then PageSetup.LeftHeader = _
"Příloha č. 3 ke Kolovadlu č. " & CStr(Range("E1").Value) & " IPP" & _
Chr(10) & "&""-,Bold""Přehled vydaných částek Sbírky zákonů s obsahem za dané období"
End Sub


Vravíte ľavý, píšete pravý (RightHeader).

Ak bude hodnota v E1 počítaná vzorcom, tak to fungovať nebude, lebo vzorcom vypočítaná hodnota nevyvolá procedúru Worksheet_Change.
Preto som vravel, že by sa aktualizácia hlavičky mala urobiť pri inej príležitosti. Na čo je hlavička aby bola hlavne pri tlači na stránkach. Tak preto som navrhol, aby sa pred tlačou aktualizovala (Workbook_BeforePrint). Prípadne, ak nie, navrhol som, aby sa aktivovala zmena hlavičky pri prepnutí medzi listami na daný list. Alebo proste pri inej príležitosti. Alebo si urobte tlačítko.

Vzorec totiž vyvolá procedúru Worksheet_Calculate, ktorá je Vám na nič, lebo v nej nieje možné meniť hlavičku.citovat
#035849
avatar
Ano, měl jsem v kódu chybně místo levé, tak pravé záhlaví. Rozumím teď taky tomu jak je to s tou aktualizací.
Když jsem vložil kód makra, jak jste ho v poslední varintě napsal, hlásí mi to Compile error.citovat

Strana:  1 2   další »

Uživatelské menu

Nejste přihlášen(a)
avatar\n

Menu

Formulář Faktura

Formulář Faktura IV

Oblíbený formulář Faktura byl vylepšen a rozšířen.
Více se dočtete zde.

Helios iNuvio

Používáte podnikový systém Helios iNuvio? Potřebujete pomoci se správou nebo vyvinout SQL proceduru? Více informací naleznete na stránce Helios iNuvio.

On-line nástroje