Stránka 1 z 1

VBA - formátování buňky

Napsal: 06 čer 2012 12:37
od VALL
Ahoj, formátuji oblast buněk pomocí VBA a hledám řešení, které by bylo rychlejší než je uvedeno níže.
Dělám to tak, že nejdříve v celém skloupci vymažu veškeré formátování (trvá dlouho), poté označím oblast (sloupec v KonTab) jejíž formát zkopíruju do jiného sloupce.
celé je to strašně pomalé, potřeboval bych to celé nějak z optimalizovat.

1. Mažu formátování

Kód: Vybrat vše

Private Sub Worksheet_PivotTableUpdate(ByVal Target As PivotTable)
  Columns("F:F").Select

    Selection.Borders(xlDiagonalDown).LineStyle = xlNone
    Selection.Borders(xlDiagonalUp).LineStyle = xlNone
    Selection.Borders(xlEdgeLeft).LineStyle = xlNone
    Selection.Borders(xlEdgeTop).LineStyle = xlNone
    Selection.Borders(xlEdgeBottom).LineStyle = xlNone
    Selection.Borders(xlEdgeRight).LineStyle = xlNone
    Selection.Borders(xlInsideVertical).LineStyle = xlNone
    Selection.Borders(xlInsideHorizontal).LineStyle = xlNone
    Selection.Interior.Pattern = xlNone
    Selection.Font.ColorIndex = xlAutomatic


2.kopíruju formátování (je to ve stejné proceduře jako předešlý krok):

Kód: Vybrat vše

a = WorksheetFunction.CountA(Range("PopisRadku")) + 2

    Range("D3:D" & a).Select
    Selection.Copy
    Range("F3:F" & a).Select
    Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=False
    Application.CutCopyMode = False


Potom by mě zajímalo, zda událost "PivotTableUpdate" je vhodnou událostí pro spuštění procedury. Proceduru potřebuji spustit vždy po aktualizaci KonTab.

Re: VBA - formátování buňky

Napsal: 06 čer 2012 12:59
od Azuzula
Ahoj,
potíž asi bude v množství dat ve sloupku, čím víc dat tím víc to pak trvá. Spíš bych použila vymazání sloupku a následné vložení nového pokud jsou další data vpravo od tohoto sloupce aby se po pár spuštění makra nesmazaly taky.

Kód: Vybrat vše

Application.ScreenUpdating = False
a = WorksheetFunction.CountA(Range("F:F"))
    Range("F1:F" & a).Select
    Selection.Delete Shift:=xlToLeft
    Selection.Insert Shift:=xlToRight
Application.ScreenUpdating = True

proces pak bude rychlejší ;)

Re: VBA - formátování buňky

Napsal: 06 čer 2012 13:01
od cmuch
Zkus toto

Kód: Vybrat vše

With Columns("F:F")

    .Borders(xlDiagonalDown).LineStyle = xlNone
    .Borders(xlDiagonalUp).LineStyle = xlNone
    .Borders(xlEdgeLeft).LineStyle = xlNone
    .Borders(xlEdgeTop).LineStyle = xlNone
    .Borders(xlEdgeBottom).LineStyle = xlNone
    .Borders(xlEdgeRight).LineStyle = xlNone
    .Borders(xlInsideVertical).LineStyle = xlNone
    .Borders(xlInsideHorizontal).LineStyle = xlNone
    .Interior.Pattern = xlNone
    .Font.ColorIndex = xlAutomatic
End With


Edit//
Azuzula má taky dobrý nápad.

Re: VBA - formátování buňky

Napsal: 06 čer 2012 13:03
od VALL
Smazání sloupku bohužel nejde, protože do nich doplním data pomocí vzorce, který potom makrem rozkopíruji na celou délku KonTab.

Re: VBA - formátování buňky  Vyřešeno

Napsal: 06 čer 2012 13:07
od Azuzula
Myslím si, že mazání nebude tak velký problém, přidá se jeden řádek do makra který zapíše vzorec a ten se pak kopíruje dál. Zvažte to.

--- Doplnění předchozího příspěvku (06 Čer 2012 13:14) ---

Teď se divím, proč mě nenapadlo použít čistě jen: Range("F:F").ClearFormats na 10k řádků dat to zabere sotva vteřinu na mém 8let starém PC

Re: VBA - formátování buňky

Napsal: 06 čer 2012 14:19
od VALL
Dík, fce clearformat - skvělé, rychlé.
Pravděpodobně jsem narazil na problém, který navyšuje objem souboru. Ve výše uvedeném makru kopíruji formát z KonTab a v určitý okamžit extrémě vzroste objem dat (nechápu proč), který nelze vrátit zpět. Neznáte nějakou šikovnější metodu kopírování formátu?

Re: VBA - formátování buňky

Napsal: 06 čer 2012 15:40
od Azuzula
Na to kopírování mě nic nenapadá, ale jediná věc co dokáže neuvěřitelně zvětšit datový objem sešitu jsou buňky které byly použity třeba zapsáním textu nebo vzorce ale na pohled v nich už nic není. Zkuste odstranit všechny buňky od posledního využitého řádku. Abych zjistila proč tohle makro dělá, tak potřebuji vidět ten sešit a odkrokovat si to makro abych zjistila co dělá špatně.

Re: VBA - formátování buňky

Napsal: 07 čer 2012 11:29
od VALL
Tak jsem na to přišel. Měl jsem chybu v kódu, který v určitém okamžiku prokopíroval formátování až na konec listu a 1 mil řádků už bylo moc.
Jinak děkuji za pomoc.