< návrat zpět
MS Excel
Téma: Chyba při výběru v zaznamenaném makru
Zaslal/a PavelJanec 8.11.2023 12:53
Zdravím, neporadíte mi někdo prosím, proč mi makro hází chybu? Při zaznamenávání makra vyberu několik sloupců, jejichž obsah chci vymazat, ale chci zachovat první řádek. Označím tedy všechny potřebné sloupce, poté shift+odznačím první řádek, který potřebuju zachovat a zmáčknu delete. Vše se odstraní a ukončím záznam makra. Při spuštění mi ale vyhodí chybu na řádku viz:
Range( _
"B2:B1048576,D2:F1048576,J2:J1048576,N2:Q1048576,DK2:DK1048576,DM2:DM1048576,DQ2:DU1048576,DV2:EB1048576,FK2:FN1048576,FP2:FP1048576,FS2:FS1048576,FU2:FY1048576,QM2:QP1048576,QQ2:QU1048576,QV2:RF1048576,RG2:RP1048576,RQ2:SG1048576,SH2:SM1048576,SR2:SS1048576" _
).Select
Děkuji za tipy
Jiří497(8.11.2023 13:49)#055634 Jakou chybu to vyhodí?
Jak pokračuje ten vzorec za DV - to tu není vidět.
Když vložíte soubor s makrem, líp se bude hledat chyba.
citovat
PavelJanec(8.11.2023 13:56)#055635 Píše to Run-time error ´1004´
Method ´Range´of object´_Global´failed.
Příloha: 55635_1.png (76kB, staženo 6x)
citovat
elninoslov(8.11.2023 14:32)#055636 Dĺžka adresy môže byť maximálne veľkosť datového typu Byte, teda 0..255. Vaša adresa má 257 znakov.
Dajte si to na menšie kúsky a do Union
Union(Range("B2:B1048576,D2:F1048576,J2:J1048576,N2:Q1048576,DK2:DK1048576,DM2:DM1048576,DQ2:DU1048576,DV2:EB1048576,FK2:FN1048576,FP2:FP1048576"), _
Range("FS2:FS1048576,FU2:FY1048576,QM2:QP1048576,QQ2:QU1048576,QV2:RF1048576,RG2:RP1048576,RQ2:SG1048576,SH2:SM1048576,SR2:SS1048576")).Selectcitovat
PavelJanec(8.11.2023 14:45)#055637 Aha, takže by to mělo jít na 2x. Moc díky Elnino. Mě bylo divný, že při méně sloupcích to funguje.
citovat
elninoslov(8.11.2023 14:52)#055639 Operáciu mazania vykonáte naraz, len tú adresu oblasti rozdelíte na 2 reťazce, teda 2 Range, no naspäť spojené v Union, tak ako som ukázal.
A neviem, čo bude všetko to makro ešte robiť, ale Select nemusíte použiť vôbec, ani tie Scroll. Ideálne by bolo aj označenie listu, aby nedošlo k spusteniu makra na inom liste. Stačí teda iba:
With Worksheets("nazov listu")
Union(.Range("prvá polka textu adresy"), .Range("druhá polka textu adresy")).ClearContents
End Withcitovat
PavelJanec(8.11.2023 14:53)#055640 Děkuji, určitě vyzkouším.
citovat
elninoslov(8.11.2023 16:05)#055641 Ešte ma napadlo jedno riešenie
With Worksheets("Hárok1")
Intersect(.Range("B:B,D:F,J:J,N:Q,DK:DK,DM:DM,DQ:DU,DV:EB,FK:FN,FP:FP,FS:FS,FU:FY,QM:QP,QQ:QU,QV:RF,RG:RP,RQ:SG,SH:SM,SR:SS"), .Cells.Resize(Rows.Count - 1).Offset(1, 0)).ClearContents
End Withcitovat
PavelJanec(8.11.2023 17:11)#055642 Elnino, vy jste prostě borec
citovat