Heel trage code

Status
Niet open voor verdere reacties.

sandra1978

Gebruiker
Lid geworden
21 feb 2011
Berichten
64
Hallo,

Onderstaande code werkt enorm traag. De bedoeling is dat er binnen een bepaald bereik van kolommen, kolommen verborgen worden. Dit zijn de kolommen met lege cellen, op de rij waar van de actieve cel. Ik denk dat een voorbeeldbestand niet nodig is, gezien ik denk dat het wel voor zich spreekt.

Code:
Sub Hide_Columns_Containing_Value()
    
Dim c As Range

    For Each c In Range("CT" & ActiveCell.Row & ":ADK" & ActiveCell.Row)
        If c.Value = "" Then
            c.EntireColumn.Hidden = True 
        End If
    Next c

End Sub

Weet iemand of ik de code kan aanpassen zodat hij sneller werkt?
 
Is dit sneller?
Code:
Sub Hide_Columns_Containing_Value()
 on error resume next
  Range("CT" & ActiveCell.Row & ":ADK" & ActiveCell.Row).specialcells(4).EntireColumn.Hidden = True
End Sub
 
Hallo Harry,

Bedankt,

Deze werkt gedeeltelijk...in die zin. In de meeste van mijn cellen staan formules, maar als die geen waarde weergeven, dan moet de kolom ook verborgen worden. Met jouw code blijven deze nog zichtbaar. Enig idee hoe ik dat nog kan aanpassen?
 
Is dit sneller?

Code:
Sub Hide_Columns_Containing_No_Value()
    
Dim c As Range, rng As Range

    For Each c In Range("CT" & ActiveCell.Row & ":ADK" & ActiveCell.Row)
        If c.Value = "" Then
        If rng Is Nothing Then
            Set rng = c
            Else
            Set rng = Union(c, rng)
            End If
          End If
    Next c
rng.EntireColumn.Hidden = True
End Sub
 
Hallo Erik

Super, werkt fantastisch. Bedankt.
Kan je me kort even uitleggen wat je net gedaan hebt, dan kan ik het beter begrijpen.
Ik ben nog een beginner in VBA :)
 
Code is bijna 1 op 1, middels Set rng = Union(c, rng) combineer je eerst alle cellen welke je wilt verbergen in 1 bereik.
Vervolgens verberg je alle kolommen uit dit bereik in 1 keer : rng.EntireColumn.Hidden = True
Nu dus 1 handeling in jouw spreadsheet ipv tientallen, waarbij scherm en wellicht volatile funkties steeds moeten worden herberekend
 
Wanneer het aantal beperkt blijft tot het maximum aantal areas in een range:

PHP:
Sub M_snb()
  sn = Cells(1).CurrentRegion
  
  For jj = 1 To UBound(sn, 2)
    If sn(2, jj) = "" Then c00 = c00 & "1," & Chr(64 + jj)
  Next
  
  Range(Mid(c00, 3) & "1").Columns.Hidden = True
End Sub

NB. Deze code moet nog aangepast worden voor gebied CT:ADK
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan