VBA rychlost - skryti prazdnych sloupcu

Programy pro práci v kanceláři (Word, Excel, Access…=>Office)

Moderátor: Mods_senior

Odpovědět
b965029@klzlk.com
nováček
Příspěvky: 2
Registrován: 26 kvě 2011 02:42

VBA rychlost - skryti prazdnych sloupcu

Příspěvek od b965029@klzlk.com »

Ahoj Vsichni,

mohl bych poprosit o radu?
Napsal jsem si jednoduche makro, ve kterem prochazim vsechny bunky A:J, (ve kterych je znazornena stromova struktura) viz. prilozeny soubor a sloupecky ve kterych neni zadny zaznam makro skryje. Bohuzel dopredu nevim kolik bude strom obsahvat radek, proto jsem zvolil hodnotu 65000. Vyreseni ale tolika radek zabere az nekolik vterin :-( Nevite jak tohle vyresit rychleji?

Dekuji

--- Doplnění předchozího příspěvku (26 Kvě 2011 10:12) ---

Rano moudrejsi vecera.
Pokud by nekdo potreboval tak uchazejici reseni by mohlo vypadat snad takhle.

Kód: Vybrat vše

Private Const MAX_RADEK = 65000
Private Const INDEX_J_SLOUPCE = 10

Private Sub Workbook_Open()

    Dim max_index As Integer
    
    ' Projdeme vsechny listy
    For Each sht In Sheets
        max_index = 0
        ' Na kazdem listu jeho sloupce A:J
        For radek = 2 To MAX_RADEK
            ' Vsechny radky, ktere maji v oblasti A:J nejakou zkratku
            For sloupec = 1 To INDEX_J_SLOUPCE
                If sht.Cells(radek, sloupec).Value <> 0 Then ' Pokud takovou zkratku najdeme tak si uchovame index daneho sloupce
                    If sloupec > max_index Then ' Chceme vzdy ten nejvetsi index
                        max_index = sloupec
                    End If
                    Exit For
                End If
            Next sloupec
            If sloupec > INDEX_J_SLOUPCE Then ' Od ziskaneho indexu do sloupce J spracujeme vsechny sloupce
            
                sht.Cells(1, max_index).EntireColumn.AutoFit ' Na sloupci ziskaneho indexu nastavime zoztazeni bunky (podle obsahu)
                For skryty = (max_index + 1) To INDEX_J_SLOUPCE
                    sht.Cells(1, skryty).EntireColumn.Hidden = True ' Sloupec schovame
                Next skryty
                Exit For
                
            End If
        Next radek
    Next sht

End Sub
Přílohy
skryj prazdne sloupce.xlsm
Makro je poveseno na udalost List1#Worksheet_Activate
(16.11 KiB) Staženo 29 x
Naposledy upravil(a) b965029@klzlk.com dne 26 kvě 2011 16:32, celkem upraveno 1 x.
Uživatelský avatar
Poki
Level 2
Level 2
Příspěvky: 237
Registrován: 09 pro 2009 17:01

Re: VBA rychlost - skryti prazdnych sloupcu

Příspěvek od Poki »

Pokud by nekdo potreboval najit poslendi radek z oblasti, ktera je na listu vyuzita, tak tohle je velice snadne:

Kód: Vybrat vše

List1.UsedRange.SpecialCells(xlCellTypeLastCell).Row
b965029@klzlk.com
nováček
Příspěvky: 2
Registrován: 26 kvě 2011 02:42

Re: VBA rychlost - skryti prazdnych sloupcu

Příspěvek od b965029@klzlk.com »

Moc sikovna funkce. Dik!
Bozuzel jeji volani na uzamcenem listu vyhazuje run-time error 1004
kuchyn
nováček
Příspěvky: 10
Registrován: 06 bře 2007 18:57

Re: VBA rychlost - skryti prazdnych sloupcu

Příspěvek od kuchyn »

Zdravím,
asi bych použil něco podobného s využitím UsedRange:

Sub HideColumns()
Dim Oblast As Range
Dim i As Integer

Set Oblast = ActiveSheet.UsedRange
For i = 1 To Oblast.Columns.Count
If Application.WorksheetFunction.CountA(Oblast.Columns(i)) = 0 Then
Oblast.Columns(i).EntireColumn.Hidden = True
Else
Oblast.Columns(i).EntireColumn.Hidden = False
End If
Next i
End Sub

Oblast by měla jít přizpůsobit podle potřeb.
Roman
Odpovědět
  • Podobná témata
    Odpovědi
    Zobrazení
    Poslední příspěvek
  • Tisk sloupců vedle sebe na A4 - Excel
    od atari » » v Kancelářské balíky
    5 Odpovědi
    9313 Zobrazení
    Poslední příspěvek od atari
  • Leaks informací v roce 2000 a max rychlost internetu
    od walderan » » v Vše ostatní (hw)
    0 Odpovědi
    21981 Zobrazení
    Poslední příspěvek od walderan

Zpět na „Kancelářské balíky“