Příspěvky uživatele


< návrat zpět

Strana:  1 ... « předchozí  4 5 6 7 8 9 10 11 12   další » ... 15

Přílohu se mi nepodařilo vložit na web. Napiš PM a pošlu Ti to přímo. R.

Povídám, že je to možné udělat makrem ! Pokaždé, když si načteš data, tak stiskneš tlačítko a tabulka se smaže a sestaví nová tabulka. Tj cache bude vždy nová a vždy nové hodnoty. No a na tu novou, která neobsahuje "vadná jména" aplikuješ tisk. Ten bude v pořádku protože pivot tabulka je z nových dat :) ... co Ty na to ??? Makro je v příloze. Na List1 vyber makro ALT+F8 "RS_sestav_tabulku" a vyrobí se Ti tabulka. Makro ALT+F8 "RS_konti_tisky" Ti vytiskne jednotlivé tabulky. R.

Rozumím. Ty data se tahají s PIVOT_TABLE_CACHE. Jen nevím jak ji vyprázdnit. Řešení jsou ale minimálně dvě. Já tento problém řeším makrem, které mi vytvoří a zformátuje pivot tabulku vždy znovu. Pokud máš OFF2003 pak asi musíš sestavit tabulku znovu :( . Pokud máš OFF2007 a výš pak si klepneš na kartu DATA a najdeš POČET ZACHOVANÝCH POLOŽEK NA POLE a vybereš ŽÁDNÉ. R.

V tabulce je středisko jen KOM, takže není co řešit :) Pokud jsi data neposlal celá, a ostatní střediska Tě ryze nezajímají, pak je nejlepší, setřídit data podle střediska a ty která nepotřebuješ, vymazat. V kontitabulce pak provedeš jen aktualizaci a začeš tisknout. Pokud je situace opačnán, pak stačí­ pole střediska přesunout do tabulky a nastavit požadované středisko. Předpokládám, že by v tomto případě stačilo přetáhnout je nahoru do stránkové položky a nastavit výběr stejně jak to děláš u měsíce. Taky je to nejrychlejší :) R.

Sub konti_tisky()
Dim a As PivotItem
Dim c As New Collection
Dim cc
With ActiveSheet.PivotTables(1).PivotFields("Jméno")
For Each a In .PivotItems
c.Add (a.Name)
Next a
For Each cc In c
Range("B3").Value = cc
ActiveSheet.PrintOut
Next cc
End With
End Sub

Škoda, že jsi nenapsal, že se jedná o stránkový prvek :( R.

.PivotFields("Jméno").PivotItems(cc).Visible = b ' Tady se mě to sekne

Typnul bych jsi, že jsi všechny zaměstnance skryl a nechal jen jednoho abys to nyní mohl vyzkoušet. Pak to napoprvé skončí chybou, protože minimálně jeden musí být zobrazený. Musíš mít nejlépe všechny zaměstnance zobrazené nebo min. dva. Funguje to tak, že se načte seznam VŠECH zaměstnanců, pak se skryje KROMĚ PRVNÍHO (tady Ti to háže chybu protože je jeden a ten se nesmí skrýt) a po jednom to začne tisknout. Účel byl vytisknout stejnou konti tabulku pro jednotlivé zam. Nebo jsem to špatně pochopil ? Proto jsem neřešil tisk jednoho zam. Můžeš na zkoušku zrušit debug a zakomentovat print. V okně si pak vypiš jména. Tak jsem to ladil ... tj. bez tisku. R. PS: (Nebo to pošli na PM.)


If c.Count < 2 Tehn
MsgBox ("Tisk povolen pro min. dva kousky")
Exit Sub
End If

... přilepit za první for. R.

Nějak se mi to rozleželo v hlavě a myslím, že první verze nemusí vždy fungovat (v mém případě na kt fungovala :) ). Tato druhá by měla býti již v pořádku a funkční na jakoukoliv položku (alespoň myslím).

Sub konti_tisk()
Dim i As Long
Dim a As PivotItem
Dim c As New Collection
Dim cc
Dim b As Boolean
Dim s As String
Dim PolozkaKontiTabulky As String
' ---------------------------------------------------------
PolozkaKontiTabulky = "Exp. st" 'Uprav podle své tabulky !!!
' ---------------------------------------------------------
With ActiveSheet.PivotTables(1)
' Vybuduji buffer možných jmen
For Each a In .PivotFields(PolozkaKontiTabulky).PivotItems
c.Add (a.Name)
Next a
b = True
For Each cc In c ' Nastavím první a ostatní skryji (jinak chyba)
.PivotFields(PolozkaKontiTabulky).PivotItems(cc).Visible = b
If b Then b = False
Next cc
s = ""
For Each cc In c ' Vytisknu
.PivotFields(PolozkaKontiTabulky).PivotItems(cc).Visible = True
If s <> "" Then
.PivotFields(PolozkaKontiTabulky).PivotItems(s).Visible = False
End If
' Nìjak ji vytisknu
ActiveSheet.PrintOut
s = cc
'Debug.Print cc
Next cc
End With
Set c = Nothing
Set a = Nothing
End Sub

Myslím, že to jde třeba takto ... R. (uprav si jméno "data")
Sub konti_tisk()
Dim a As PivotItem
Dim c As New Collection
Dim cc
With ActiveSheet.PivotTables(1)
' Vybuduji buffer možných jmen
For Each a In .PivotFields("Data").PivotItems
Call c.Add(a.Name)
Next a
For Each cc In c
' Nastavím položku
.PivotFields("Data").PivotItems(cc).Visible = True
' Nìjak ji vytisknu
ActiveSheet.PrintOut
Next cc
End With
Set c = Nothing
Set a = Nothing
End Sub

Myslí­m, že to nejde ... Můžeš ale využít možnosti slučování buněk. viz příloha

Plní přesně Tvé zadání. (i když jsem spletl O4). Myslím, že je vhodné se zamyslet nad nutností vkládat do buňky vzorec =NEDEF(). R.

Myslím si, že pro uvedený případ není vhodné laborovat s výpočtovým polem. Je lepší např. v datech vložit sloupec za G a do H2 vložit =KDYŽ(G2>-30;"0-30";KDYŽ(G2>-60;"3-60";"Nad 60")). Dále vyplnit dolu a zkopírovat jako hodnoty. Podobnou funkci na více hodnot můžeš mít s celočíselným dělením tj. jako =KDYŽ(CELÁ.ČÁST(G2/-30)>0;(CELÁ.ČÁST(G2/-30))*30&" - "&(CELÁ.ČÁST(G2/-30)+1)*30;"0-"&(CELÁ.ČÁST(G2/-30)+1)*30) nebo něco podobného je možné i s makrem ale na tento jednoduchý příklad bych nedoporučoval ... samozřejmě pokud je to v rámci projektu maker apod tak ano. R.

Docela by mne zajímalo jak to dopadlo a v čem byl problém. V podstatě jsem se s tím také nikdy nesetkal a souhlasím s Pokim, že interpret VBA čeká na skončení příkazu nebo přepočítávaní. Jedinný problém může nastat, když v rámci listu jsou vlastní makro funkce ve VBA které jsou vložené v buňkách a při přepočtu se volají. Funguje to jako standardy CPU systému, programu apod. tj dojde k přerušení běhu jednoho makra a provedení obsloužení nadřazeného procesu což je v tomto případě přepočítávaní. Setkal jsem se s u začátečníku, že jsou líní deklarovat proměnné v procedůře a deklarují je všechny jako globální včetně čítačů ... to je potom ryze náhodný program. R.

Tohle ti odstraní chyby. Vlož do makra.
Range("D4:O7,D7:O7").Replace What:="#N/A", Replacement:=Empty, _
LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False
Dle potřeby to můžeš spouštět ručně nebo pověsit na událost.
R.

stivi@centrum.cz

Ahoj Petře. Můžeš mi poslat to makro na PM ? R.


Strana:  1 ... « předchozí  4 5 6 7 8 9 10 11 12   další » ... 15

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