[Makro] Zmazanie prazdnych stlpcov, riadkov v danom rozsahu

Programy pro práci s textem, tabulkami, prezentacemi

Moderátor: Moderátoři Živě.cz

Odeslat příspěvekod P - E - T - E - R 23. 7. 2007 13:38

Zdravim

potrebejem vymsliet makro na zmazanie vsetkych prazdnych riadkov a stlpcov v danom rozsahu buniek

doteraz som pouzival toto:
Kód: Vybrat vše
Sub DeleteEmptyRows(DeleteRange As Range)
' Deletes all empty rows in DeleteRange
' Example: DeleteEmptyRows Selection
' Example: DeleteEmptyRows Range("A1:D100")
Dim rCount As Long, r As Long
    If DeleteRange Is Nothing Then Exit Sub
    If DeleteRange.Areas.Count > 1 Then Exit Sub
    With DeleteRange
        rCount = .Rows.Count
        For r = rCount To 1 Step -1
            If Application.CountA(.Rows(r)) = 0 Then
                .Rows(r).EntireRow.Delete
            End If
        Next r
    End With
End Sub

Sub DeleteEmptyColumns(DeleteRange As Range)
' Deletes all empty columns in DeleteRange
' Example: DeleteEmptyColumns Selection
' Example: DeleteEmptyColumns Range("A1:Z1")
Dim cCount As Integer, c As Integer
    If DeleteRange Is Nothing Then Exit Sub
    If DeleteRange.Areas.Count > 1 Then Exit Sub
    With DeleteRange
        cCount = .Columns.Count
        For c = cCount To 1 Step -1
            If Application.CountA(.Columns(c)) = 0 Then
                .Columns(c).EntireColumn.Delete
            End If
        Next c
    End With
End Sub
Sub delete_rows_columns()

    DeleteEmptyRows Range("A1:L200")
    DeleteEmptyColumns Range("A1:L200")
    Columns("B:B").ColumnWidth = 19.71
    Range("A1").Select
   
End Sub


problem je ze to nieje spolahlive a vacsinou zabudne nejake prazdne riadky aj ked nemaju ziaden obsah. Nerozumiem preco.

Mozu vadit tomuto makro obrazky ktore sa nachadzaju v tabulke?
Poznate nejako makro na zmazanie vsetkych obrazkov v tabulke?

Dakujem
P - E - T - E - R
Junior

Odeslat příspěvekod obcasny_navstevnik 23. 7. 2007 15:30

ke smazani vlozenych obrazku, tvaru,... na aktivnim listu lze pouzit neco takoveho:

Sub SmazObrazkyTvary()
Dim MyShape As Shape
For Each MyShape In ActiveSheet.Shapes
MyShape.Delete
Next MyShape
End Sub
obcasny_navstevnik
Junior

Odeslat příspěvekod xlnc 23. 7. 2007 19:46

No já v tom na první pohled nevidím nějaké závažnější pochybení, takže jen takhle:

For R = PosledniRadek To PrvniRadek Step -1
If Application.WorksheetFunction.CountA(Rows(R)) = 0 Then Rows(R).Delete
Next R

Trochu nadbytečné mi tam naopak připadá EntireRow. Pokud chcete, pošlete mi daný sešit.
Petr Pecháček
xlnc
Junior
Uživatelský avatar


Kdo je online

Uživatelé procházející toto fórum: Žádní registrovaní uživatelé a 0 návštevníků