Šmarjá
To máte tisíce riadkov kódu, ktorý je neskutočne pomalý, zbytočne sa dookola opakujúci, neflexibilný (nieje možné zmeniť názvy listov len tak jednoducho), a strašne neprehľadný.
To treba zjednodušiť.
Napr 2 bloky "' ODKOVENÍ PŘÍČEK" a "' VLOŽ SLOUPCE SE STŘEDISKEM"
sa dajú zjednodušiť napr. na :
Dim SH As Worksheet
For Each SH In Worksheets
Application.Goto SH.Cells(2, 1)
ActiveWindow.FreezePanes = False
Cells.FormatConditions.Delete
Columns("D:D").Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
Cells(1, 4) = "STŘ"
Next SH
Blok "' USPOŘÁDÁNÍ SLOUPCŮ" by stačil pravdepodobne napr takto nejako:
Columns("J:J").Delete Shift:=xlToLeft
Columns("T:T").Cut
Columns("A:A").Insert Shift:=xlToRight
Columns("B:B").Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
Range("B1") = "Poznámky"
Columns("B:B").EntireColumn.AutoFit
Columns("C:C").Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
Range("C1") = "Stroj"
Columns("E:E").Cut
Columns("H:H").Insert Shift:=xlToRight
Range(Range("A1"), Range("A1").End(xlToRight)).AutoFilter
Union(Columns("K:K"), Columns("M:P"), Columns("R:R")).Replace What:=".", Replacement:="", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
With AutoFilter.Sort
.SortFields.Clear
.SortFields.Add Key:=Range("D1"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
To dávam vlastne zbrucha, otestujte, a skúste sa pohrať z povynechávaním neustálych zbytočných Select-ov, a hlavne neopakovaním rovnakého kódu pre všetky listy. Napr. použitím cyklu, alebo poľa a procedúr s parametrom, ...
Nemám na to čas, ale aj keby som mal, tak by som musel mať echt náladu rozobrať funkčnosť 2500 riadkov, tipnúť si účel, spôsob, prekopať, zjednodušiť, vyskúšať...
Ja Vám rozumiem, že ste makro nahral, a funguje, ale musí byť veľmi pomalé. Nedávno tu bol postnutý ešte väčší kód cca 4500 riadkov. Takže rekordérom nieste
Skúste niečo s tým urobiť, možno keď bude niekto vidieť Vašu urputnú snahu, tak sa Vám na to dá.
Inak ak chcete vynechať nejakú časť kódu v takom stave v akom to máte, tak pred inkriminovanou časťou urobte potrebnú kontrolu a za inkriminovanú časť vložte skok. Teda príklad:
If Range("A3")="" Then GoTo POKRACUJ1 'Skok na miesto s názvom POKRACUJ1
...
inkriminovaný kód
...
POKRACUJ1:
Bude pokračovať ďalej...citovat