Slimmere code VBA excel

Status
Niet open voor verdere reacties.

Kaalbartje

Gebruiker
Lid geworden
3 jan 2020
Berichten
91
Hoi.

Ik heb onderstaande code geschreven. Deze werkt goed, met dank voor de code van het onderste deel van de code vanuit dit forum :)
Ik ben benieuwd of het handiger, sneller of anders kan.

Code:
Sub Verbergen() '  verbergen
Rows("22:24").EntireRow.Hidden = True
Rows("27:29").EntireRow.Hidden = True
Rows("32:34").EntireRow.Hidden = True
Rows("37:39").EntireRow.Hidden = True
Rows("42:44").EntireRow.Hidden = True
Rows("47:49").EntireRow.Hidden = True
Rows("52:54").EntireRow.Hidden = True
Rows("57:59").EntireRow.Hidden = True
Rows("62:64").EntireRow.Hidden = True
Rows("67:69").EntireRow.Hidden = True
Rows("72:74").EntireRow.Hidden = True
Rows("77:79").EntireRow.Hidden = True
Rows("82:84").EntireRow.Hidden = True
Rows("87:89").EntireRow.Hidden = True
Rows("92:94").EntireRow.Hidden = True
End Sub

Sub Zichtbaarmaken() '  zichtbaar
Rows("22:24").EntireRow.Hidden = False
Rows("27:29").EntireRow.Hidden = False
Rows("32:34").EntireRow.Hidden = False
Rows("37:39").EntireRow.Hidden = False
Rows("42:44").EntireRow.Hidden = False
Rows("47:49").EntireRow.Hidden = False
Rows("52:54").EntireRow.Hidden = False
Rows("57:59").EntireRow.Hidden = False
Rows("62:64").EntireRow.Hidden = False
Rows("67:69").EntireRow.Hidden = False
Rows("72:74").EntireRow.Hidden = False
Rows("77:79").EntireRow.Hidden = False
Rows("82:84").EntireRow.Hidden = False
Rows("87:89").EntireRow.Hidden = False
Rows("92:94").EntireRow.Hidden = False

End Sub
Sub AanUit_Rijen()
    With ActiveSheet.Shapes("Rijen").TextFrame.Characters
        If .Text = "Rijen verbergen" Then
            .Text = "Rijen verborgen"
            .Font.ColorIndex = 44
            .Font.Bold = True
      Call Verbergen
                
        Else
            .Text = "Rijen verbergen"
            .Font.ColorIndex = 2
            .Font.Bold = False
     Call Zichtbaarmaken
     End If
    End With
End Sub
 
zoiets om te verbergen?

Code:
For i = 22 To 92 Step 5
     Rows(i).Resize(3).EntireRow.Hidden = True
Next
 
zeker korten. Tnx.
Zichtbaar maken heb ik overigens nog ingekort met de volledige range. Net zo makkelijk.
Nog enig idee waarom rijen verbergen langer duurt dan kolommen verbergen?
 
Wat staat er dan in die rijen die verborgen of zichtbaar gemaakt moeten worden? En wat staat er in de rijen die altijd zichtbaar moet blijven?

Code:
Sub VenA()
Dim r As Range
  For j = 22 To 94 Step 5
    If r Is Nothing Then Set r = Cells(j, 1).Resize(3) Else Set r = Union(r, Cells(j, 1).Resize(3))
  Next j
  r.EntireRow.Hidden = True
End Sub
 
Er staan formules in.
Een simpele als, een index en een somformule.

VenA jouw code is inderdaad al veel sneller. Fijn.
 
Laatst bewerkt:
En die geven vast een resultaat waarop je kan filteren?
 
Er is een lege rij waar nog wat ingevuld kan worden en een waar je het resultaat ziet inderdaad.
 
Laatst bewerkt:
Zo gaat het optisch iets sneller. (veel maakt het niet uit)

Code:
Sub AanUit_Rijen()
  With Application
    y = .Calculation
    .Calculation = xlCalculationManual
    .ScreenUpdating = False
    With ActiveSheet.Shapes("Rijen").TextFrame.Characters
      .Text = IIf(.Text = "Rijen verbergen", "Rijen verborgen", "Rijen verbergen")
      .Font.ColorIndex = IIf(.Text = "Rijen verbergen", 44, 2)
      .Font.Bold = IIf(.Text = "Rijen verbergen", True, False)
      If .Text = "Rijen verbergen" Then Zichtbaarmaken Else Verbergen
     End With
    .Calculation = y
  End With
End Sub
 
Code:
Sub AanUit_Rijen()
  With Application
    .Calculation = -4135
    .ScreenUpdating = False
    With ActiveSheet.Shapes("Rijen").TextFrame.Characters
      .Font.Bold = not .font.bold
      .Font.ColorIndex =  2 - 42 *.font.bold
      .Text = "Rijen verb" & chr(101-10*.font.bold) & "rgen"
      If .font.bold Then Zichtbaarmaken Else Verbergen
     End With
    .Calculation = -4105
  End With
End Sub
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan