Stránka 1 z 1

Makro - mazání v excelu  Vyřešeno

Napsal: 25 bře 2009 10:47
od Kiwi1
Zdravím.

Potřeboval bych poradit jak napsat makro. Jedná se o to, že pokuď je buňka ve sloupci F prázdná, smaže se celej řádek.

A ještě jednu věc. Jsem začátečník a potřeboval bych vědět jak postupně spustit jedno makro za druhým.

Děkuji

// Přesunuto do sekce Kancelářské balíky
//mike007

Re: Makro - mazání v excelu

Napsal: 25 bře 2009 11:02
od mike007
Vítej na Pc-help

Tvůj dotaz patří do sekce Kancelářské balíky, protože se jedná o Excel. Téma jsem tedy přesunul.

Zde máš to makro:

Sub radky()
Dim radek As Long
For radek = 1 To Range("F65536").End(xlUp).Row
If IsEmpty(Cells(radek, 6)) Then Rows(radek).Delete
Next radek
End Sub


nebo

Sub radky2()
On Error Resume Next
ActiveSheet.Columns("f").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
On Error GoTo 0
End Sub

Re: Makro - mazání v excelu

Napsal: 25 bře 2009 11:22
od X
První makro, proceduru, podprogram spustíš pomocí nějaké události (kliknutí na tlačítko, otevření listu, změna buňky, ...). Volat další proceduru můžeš takto [Call] nazev [(parametr, ...)] - (vše v hranatých závorkách není povinné, ale zase je to přehlednější kód (s Call). Neudálostní kód by měl být v modulu (moduleX) na rozdíl od událostí (ListX, ThisWorkbook = list, sešit). Například veřejnou deklaraci (Public) se sice povede v listu či sešitu napsat, ale nebude fungovat (Public = viditelné odevšad, Private = jen v modulu).

Re: Makro - mazání v excelu

Napsal: 25 bře 2009 11:51
od Kiwi1
Všem děkuji za rady... :bigups:

Re: Makro - mazání v excelu

Napsal: 25 bře 2009 11:53
od mike007

Re: Makro - mazání v excelu

Napsal: 25 bře 2009 12:02
od Kiwi1
Ještě bych potřeboval poradit jak naráz nebo postupně vymazat sloupce A,C,E,F,G,H,I,J,L,M,N,P,R,S,T,V,W,X,Z,AA.
Proč takhle blbě? Protože se mi data do excelu přenášejí z jednoho programu a jsou tam nadbytečné prázdné sloupce. A já potřebuju odstranit.

Předem děkuji za rady.

Re: Makro - mazání v excelu

Napsal: 25 bře 2009 12:11
od mike007
Takové makro si dokážeš snad udělat sám přes záznamník...

Range("A:A,C:C,E:E,F:F,G:G,H:H,I:I,J:J,L:L,M:M,N:N,P:P,R:R,S:S,T:T,V:V,W:W,X:X,Z:Z,AA:AA").Select
Selection.Delete Shift:=xlToLeft

Re: Makro - mazání v excelu

Napsal: 25 bře 2009 13:17
od Kiwi1
To jsem samozdřejmě zkoušel ale když jsem ho pak vyzkoušel tak mi smazal úplně všechno. A taky jsem zkoušel to samé co jsi mi posílal ale při spuštění mi to píše: " Run-time error '1004 Tento příkaz nelze použít u překrývajících se výběrů."

Re: Makro - mazání v excelu

Napsal: 25 bře 2009 14:26
od navstevnik
" Run-time error '1004 Tento příkaz nelze použít u překrývajících se výběrů." znamena, ze ve vyberu nesmi byt stejny sloupec, napr.: ...,S:S,T:T,T:T,V:V,...
Jinak lze makro upravit na tvar:

Kód: Vybrat vše

Option Explicit

Sub Odstran()
  Range("A:A,C:C,E:J,L:N,P:P,R:T,V:X,Z:AA").Delete Shift:=xlToLeft
End Sub

Re: Makro - mazání v excelu

Napsal: 25 bře 2009 14:39
od Kiwi1
Paráda. Už to funguje... Moc děkuju.

// Téma označeno za vyřešené. Příště to udělej sám. Díky!
// mike007