Poradna - Spojení několika maker v jedno
hlavní kategorie | zpět | + odpovědět na toto témaSpojení několika maker v jedno - diskuze na toto téma |
Zdravím,
mám následující problém, měl jsem v excelu tři tlačítková makra, které každé jednotlivě fungovalo, ale když jsem je spojil v jedno "supermakro", tak to najednou nedělá to co má... některé části to vypustí.
Může to být tím, že ty dílčí makra na sebe navazují moc rychle a aniž by se jedno dokončilo tak se hned spustí druhé? Totiž každé z nich trvalo několik vteřin a nevím jestli se tam musí nastavit nějaké zpoždění, a nebo zvláštní kód, aby se vždycky počkalo než se to dokončí anebo mám problém hledat někde jinde.
Děkuji. Ten excel soubor má přes 100 mega, ale makro vypadá následovně, jestli můžete mrknutím zkontrolovat:
-----------------
Sub Supermakro()
Range("U1").Select
ActiveCell.FormulaR1C1 = "1"
Range("U1").Select
Selection.Copy
Columns("N:N").Select
Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlMultiply, _
SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False
Selection.NumberFormat = "d/m/yy h:mm;@"
Range("U1").Select
Selection.ClearContents
Columns("M:M").Select
Selection.NumberFormat = "@"
Dim Radku As Long
With ThisWorkbook.ActiveSheet
Radku = .Cells(Rows.Count, 2).End(xlUp).Row - 1
If Radku > 1 Then .Cells(2, 2).Resize(Radku, 25).RemoveDuplicates Columns:=Array(1, 2, 3, 5, 6, 7, 9, 10, 11, 12, 25), Header:=xlNo
End With
End Sub
------------------
Děkuji.
Odpověď radši posílám i screen, kdyby náhodou zdejší editor nějaké části kódu vynechal:
https://ctrlv.cz/shots/2018/11/16/VH4g.png Odpověď A viete naozaj čo robíte? Násobiace číslo sa nevkladá ako FormulaR1C1 = "1", teda text, ale ako číslo 1. Prečo ho dávate do U1? Tam nieje hlavička ? Pochybujem, lebo počet riadkov zisťujete bez hlavičky (.Row - 1), teda tam je. Nepoužívajte tie Select-y - sú zbytočné. Určite násobíte celý stĺpec N (milión riadkov)? Pochybujem, načo by sa potom zisťoval počet Radku. To isté stĺpec M. Viete, že mažete duplicity až od stĺpca B? A čo stĺpec A, tam dáta zostanú - nekonzistencia. Ale hlavne povedzte, čo Vám nefunguje ? Lebo "nedělá to co má", a my si máme podľa kódu vydedukovať čo to má robiť... Každopádne, ako som napísal koment v kóde, mne na Office 2019 nefunguje vo VBA špeciálne prilepenie násobením (to čo tam potrebujete na prevod na dátum). Ak to robím ručne v liste, tak to funguje, ak nahrávam makro, tak to funguje, ale akonáhle chcem spustiť práve nahrané makro tejto činnosti, nefunguje. To bude zase problémov s tým 2019. Už to vidím. Ak to nejde ani Vám, použite Supermakro2. Odpověď Spoustě věcem o kterých píšete nerozumím, takže zkusím odpovědět na to co chápu.
///
Já jsem ta makra nevytvářel přímo kódem, protože to ještě neumím. Zkusil jsem si ho vytvořit přes klasické nahrávání toho co dělám, a pak jsem ručně promazal to co jsem pochopil, že je tam zbytečné, třeba rollování a tak. /// Násobím jedničkou, protože potřebuji převést buňky bez formátu na datum. Co je to hlavička nebo Select-Y, to nevím. Celý sloupec (milion řádků) násobit nechci, ale nevěděl jsem jak zadat kódem, aby se násobila jen ta část. Duplicity od sloupce B to vím, ve sloupci A nejsou data. Soubor omrknu a kdyžtak zase napíšu, když stále nebudu chápat. Děkuji.
Odpověď |