Příspěvky uživatele


< návrat zpět

Strana:  1 ... « předchozí  150 151 152 153 154 155 156 157 158   další » ... 286

No veru neviem. Teraz som to skúšal na 3 mašinách (W10x64 + Off2016x64, W7x64 + Off2007, W7x32 + Off2016x32) a všade OK, nikde doplnok po exnutí Excelu nemizne.. Len pre použitie tlače na Off2007 som zabudol, že treba zmeniť procedúru
Sub TiskniData(control As IRibbonControl)
Application.CommandBars.ExecuteMso ("PrintPreviewAndPrint")
End Sub

na
Sub TiskniData(control As IRibbonControl)
If Val(Application.Version) > 12 Then
Application.CommandBars.ExecuteMso ("PrintPreviewAndPrint")
Else
ActiveSheet.PrintPreview
End If
End Sub

lebo Off2007 ešte neobsahuje Mso "PrintPreviewAndPrint".

Ono by sa tam ešte šiklo pár veci, ako napr. kontrola, či vôbec nejaké dáta sú, a pod. Len som navrhol, či by sa dalo týmto smerom doplnku isť.

Urobte si doplnok. Uvádzam inšpiráciu.
Rozbalte ho sem:
c:\Users\meno užívateľa\AppData\Roaming\Microsoft\AddIns\
Zatvorte Excel, otvorte ho - Súbor - Možnosti - Doplnky - označte Spracuj_vymaz_tlac - Spustiť - zaškrtnite ho - OK
Pribudla v Exceli záložka Spracuj, kde sú 2 tlačítka, použitie je jasné.

Neviem, ako to myslíte s tou hlavičkou. Na to som ešte nepozeral, skúste to najskôr upresniť. Veď hlavičku môžete nastaviť vždy pred tlačou makrom, nemusí byť na to nejaká šablóna. Alebo tam majú byť vložené nejaké spešl objekty ?
...

Tie listy nemajú ani rovnakú štruktúru. Raz je "Picked pallets" v stĺpci AU, potom AV, potom AL, ...

Tipujem správne, ak poviem (podľa stĺpca A), že každý rok sa nejaká (neviem aká, napr. "Cumulative total") konečná hodnota vo všetkých listoch vloží do riadku hore, pred prvým riadkom, čo nieje rok, ale je to posledný mesiac a v ňom 1. deň. Vymažú sa mesiace, ostane teda len jediný riadok skončeného roku a dni 1-31 nasledujúceho mesiaca. Do týchto sa budú kopčiť hodnoty zo zošitu zo SAP. Ak bude ďalší mesiac, urobí sa to isté ako s koncom roku, len sa nezmažú mesiace. A to všetko v jednom a tom istom liste. Táto operácia sa bude robiť pre všetky listy zvlášť.

Teda inak povedané
-uzavreté roky majú jeden riadok
-uzavreté mesiace majú jeden riadok
-neuzavreté mesiace majú 31 riadkov

Odniekiaľ ešte treba získavať info o tom, koľko stĺpcov má daný list. Viď 1. veta.

Pekná pakáreň. 7

Ja som si to tu začal robiť postupne podľa popisu, čo ste dal. A teraz len tak omylom reloadnem okno, a tu je niečo iné. V zdrojových dátach máte dátum, v cieli nezačínate na predtým uvedenom riadku, nemáte tam 10 stĺpcov, pod tabuľkou sú dáta, máte tu niekoľko mesiacov v jednej tabuľke (teda vôbec nie tak ako ste vravel) ...

Tu máte zatiaľ rozrobenú verziu (podľa predchádzajúceho popisu). Mám teplotu, tak neviem, či sa mi bude chcieť piplať s tými Vašimi obrázkami, ktoré sú iné ako predošlý popis...

A kde sú nejaké dáta (alebo čo sú tie dáta) ?
DH, DI, DIALL sú kategórie, teda listy.
10, 11, 12, 13, ... sú :
a) poradové čísla (poradie dňa v mesiaci, alebo celkové poradie ???), a kde sú potom dáta ?
b) dáta. A podľa čoho určiť na aký dátum ich treba zapísať ?

EDIT: Doplňujúce :
-Kde sú súbory umiestnené? Na sieti ?
-Môže nastať situácia, že budú otvorené u iného užívateľa ?
-Z ktorého z nich sa má volať makro ?
-Teda každá kategória má každý deň 1 riadok, s rovnakým počtom stĺpcov ? Lebo Vám to na tú modrú tbl nesedí.
-Alebo kategória môže aj nemusí byť v daný deň, môže mať viac riadkov, a variabilný počet stĺpcov ?
-Ak kategória nieje, zapíšu sa 0 ?
-Ak list s kategóriou nieje, má sa vytvárať ?
-Každý deň sa teda vytvára dátum, ak to chápem.
...

Z druhej vety (ktorá je neviem prečo bez čiarok, potom ju treba čítať 5x na pochopenie) plynie, že chcete získať pozíciu aktívnej bunky, a podľa pozície prečítať z tabuľky výsledkov výsledok.
Lenže z 3. vety plynie, že chcete zadávať pozíciu aktívnej bunky, teda meniť aktívnu bunku. A to je presný opak predošlého.

Každopádne, obe tieto veci bez makra neurobíte.
Skúste priložiť prílohu s príkladom.

PS: Class - trieda - je tiež makro.

Záležať bude na tom, na čo chcete tú pozíciu aktuálnej bunky. Ak na to aby ste na základe práve aktuálne označenej bunky počítali niečo v úplne inej bunke, tak jedine makrom. Ak to chcete aby vzorec v nejakej bunke vedel o svojom riadku a stĺpci, tak vzorcom.

Dnes tu ešte pred pár hodkami bola téma na losovanie so zobrazovaním priebežných výsledkov. No a keď sa k tomu konečne dostanem a idem sem dať návrh, tak téma je fuč.

No už to mám z časti navrhnuté podľa požiadaviek, tak ak niekto chce, nech sa inšpiruje (napríklad aj pôvodný zadávateľ)

Prípadne v tom druhom vzorci môžete namiesto matice SUM/SUMA, použiť obyčajný nematicový variant vzorca. Nahradíte funkciu SUM/SUMA funkciou SUMPRODUCT/SOUČIN.SKALÁRNÍ, a posledné násobenie * nahradíte bodkočiarkou ;

Ono SUMPRODUCT/SOUČIN.SKALÁRNÍ je vlastne tiež matica, len interná, a Vy ju v tomto prípade nemusíte zadávať cez Ctrl+Shift+Enter (v niektorých prípadoch je treba aj SUMPRODUCT zadávať ako maticu, ale na tento nie).

Mohol by ste použiť namiesto toho Evaluate. Je to vlastne 1 riadok kódu. Rovnako môžete použiť cyklus.

EDIT:
Alebo takto aj s názvom listu, ak by sa jednalo o iný ako aktívny list...
Sub NasobDel(Oblast As Range, bTyp As Boolean, nHodnota#)
Dim ADR As String
Application.ScreenUpdating = False
With Oblast
ADR = "'" & .Parent.Name & "'!" & .Address
.Value2 = Evaluate("=IFERROR(SUBSTITUTE(" & ADR & ","","",""."")" & IIf(bTyp, "*", "/") & nHodnota & "," & ADR & ")")
End With
Application.ScreenUpdating = True
End Sub

OR/NEBO v maticových vzorcoch nefunguje. Musí sa použiť +.
Na to prvé ani maticu nepotrebujete, stačí SUMIFS.
Skontrolujte si to, moc som sa tomu nevenoval...

Áno, reakcia na udalosti pokračuje aj naďalej, ak bude Application.EnableEvents = True
Ak to potrebujete dať na False, tak to následne ošetrite pomocou
On Error Goto KONIEC
A potom pred End Sub
KONIEC:
Application.EnableEvents = True

Len tip z mobilu, proste skúste dať do NEPŘÍMÝ.ODKAZ aj list:
SUMIF(NEPŘÍMÝ.ODKAZ("'PRIcelý rok - 1'!L7:L"&B1);"<2000";NEPŘÍMÝ.ODKAZ("'PRIcelý rok - 1'!J7:J"&B1))

Určite ? Takýto prípad nastane iba pri kopírovaní hodnôt v 3 stĺpcoch a následnom vložení do stĺpcov G:I. A potom ešte pri nejakom hromadnom importe do celého listu/tabuľky.

Nechcete to náhodou tak, že:
Ak bola zmenená bunka v tabuľke v stĺpcoch G alebo I, skontroluje sa, či obe (G aj I) niesú prázdne, a ak niesú, tak sa vloží za ne riadok.

Potom sa dá ešte eliminovať aj to, že síce nastala zmena v G alebo I, ale zároveň je počet zmenených buniek v riadku rovnaký ako maximálny počet stĺpcov, a tak sa zistí, že išlo o pridanie/zmazanie celého riadku, vtedy nič nerobiť.

A keďže tam máte veľa Prepojení, tak ma ešte napadá, či náhodou "zmenou" nemáte na mysli to, že nejaká hodnota bola iná ako terajšia aktualizovaná (z nejakého prepojenia). A to je potom už komplikácia, lebo treba uchovávať kópie všetkých predošlých hodnôt po každej zmene čohokoľvek = pomalé.

Takže ešte upresnite.

-Takže keď nastane zmena v bunke G5 a zároveň zmena v bunke I5 tak sa medzi riadky 5 a 6 vloží nový riadok ?
-Alebo je to tak, že je jedno v ktorom nastane zmena, či v G alebo v I, vždy sa vloží za zmenu riadok ?
-Čo ak "zmena" znamená vymazanie bunky. Aj vtedy sa má vložiť riadok ?
-Ak nastane hromadná zmena, tak postupne povkladať riadky za každým riadkom zmeny? Alebo iba za skupinu zmien?
...


Strana:  1 ... « předchozí  150 151 152 153 154 155 156 157 158   další » ... 286

Uživatelské menu

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

Menu

On-line nástroje

Formulář Faktura

Formulář Faktura IV

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

Aktivní diskuse