Stačí nahradiť kontrolnú podmienku
If Left(WS.Name, 1) = "0" Then
takouto kontrolou dvojčísla
If IsNumeric(Left(WS.Name, 2)) Then
alebo kontrolou dátumového názvu
If IsDate(Replace(WS.Name, ".", "/")) Then
A potom príslušne upraviť MsgBox, pretože hláška s 0 by nedávala zmysel.
Samozrejme, napr. v takomto prípade to vloží link na pôvodný súbor. Záleží, aké tam máte vzorce. Nejaká príloha so zachovanými vzorcami a štruktúrou by nebola?
Nejaké príklady ... link na GoogleDrive (5,5 MB ZIP)
To je prázdne. Pošlite mi to na mail môj nick gmail, alebo to hrknite niekam na uloz.to
V UDF nie je možné priamo čítať DisplayFormat, ale obabraním cez EVALUATE áno. Preto som to tak robil v tom druhom súbore s PF to tak mám
... = Bunka.DisplayFormat.Interior.Color
V obyčajnom makre to ide, ale nie v UDF.
Ak je to súbor XLSM, musí sa zaZIPovať. Veľkosť by malo zobrať asi do 300 KB.
Súbor "Okresy SK mapa.xlsm" je na tlačítko na liste Data. Akú farbu manuálne dáte v Data, takú bude mať okres. Teda to nie je automaticky počítaná farba ako v PF. Toto sa dá naviazať predsa hocikam.
Naopak súbor "Okresy SK mapa PF.xlsm" používa ofajč pomocou vlastnej funkcie COND_COL_SHAPE (v stĺpci Funkcia na liste Data), ktorá volá EVALUATE aby získala práve zobrazenú farbu danej bunky, ktorú vypočítal PF. Toto sa prefarbí pri každom prepočte listu.
Musel by som vidieť ten Váš súbor, ako vyzerá zdroj, vzorce, čo je vstupom a čo má byť presne výstupom KT. A možno prídem na to ako to prerobiť a prispôsobiť. Makro je takmer vždy vysoko špecifické. A tu napr. nie je možné pridať taký funkčný stĺpec do KT, ktorý by obsahoval vlastnú VBA funkciu s odkazom na vedľajšiu bunku.
Nie, podmienený formát pre objekty nefunguje. S tým prepočtom bude rýchlostný problém. Ak nie na tlačítko, dá sa to naviazať na udalosť Calculate, ktorá bude vyvolaná ale pri každej zmene bunky, pri každom filtri v KT. To bude pomalé.
EDIT:
Keby išlo len o pivotku tak udalosť PivotTableUpdate. To ale samozrejme nereaguje na zmenu dát v bunkách, či už manuálnu alebo vzorcom.
Mrk sem
Určite to pôjde, ale bola by lepšia nejaká príloha pre predstavu o čo presne ide. Je potrebné skutočne hľadať posledný vyplnený riadok v Tabuľke??? Tam sa nastavuje vzorec na celý stĺpec - automaticky sa dopĺňa. FormulaHidden určo nefachá - chýba tam bodka. Vy chcete dopĺňať dáta až za posledný vyplnený riadok MaxR? O veľkosti R, S? REPT je tam z dôvodu 0? Teda ťaháte dáta cez vzorec z iného zošitu? Nerobí REPT problém s nejakým formátom čísla a pod? Dá sa to aj cez podmienku IF. Dajte prílohu...
Predpokladám, že v B1 na hlavička. Stačí do L10 napísať vzorec
=SUM(B:B)
=SUMA(B:B)
Textovú hlavičku v B1 to bude ignorovať.
Dá sa aj zisťovať zaplnenosť stĺpca, na ktorom riadku je posledná hodnota, a brať do úvahy napr. aj filter, ale to je pre Vás zatiaľ zbytočné, keďže ste nedala príklad...
Tak dajte hľadať iba M28 namiesto "*"&M28&"*"
Vlastný formát
[Zelená]# ##0,00;[Červená]-# ##0,00
Sub Zmazat_listy_0()
Dim sL As String, Pocet As Integer, WS As Worksheet
With ThisWorkbook
For Each WS In .Worksheets
If Left(WS.Name, 1) = "0" Then
Pocet = Pocet + 1
sL = sL & IIf(sL = "", "", "•?") & WS.Name
End If
Next WS
If Pocet = 0 Then
MsgBox "Listy začínajúce ""0"" neexistujú.", vbInformation
Else
If Pocet = .Worksheets.Count Then
MsgBox "Nie je možné odstrániť všetky listy v zošite.", vbCritical
Else
Application.DisplayAlerts = False
.Worksheets(Split(sL, "•?")).Delete
Application.DisplayAlerts = True
End If
End If
End With
End Sub
To je jednoduché. Tu máte aj s ignorovaním prázdnej bunky, s ošetrením chyby pri rozdielnej výške Tabuliek, a aj variant s kontrolou inde ako na danom čísle riadku. Pri objekte Tabuľka sa netreba starať o rozsah a vzorce v ňom - to sa automaticky doplňuje.
Oblíbený formulář Faktura byl vylepšen a rozšířen.
Více se dočtete zde.
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.