Case met visible function

Status
Niet open voor verdere reacties.

bertje123

Gebruiker
Lid geworden
13 nov 2007
Berichten
57
Hallo,

Is het mogelijk om volgende if statement in een select case te stoppen, kwestie van ietsje betere performantie

Code:
If Me.Arrow1.Visible = True Then
Me.Arrow1.Visible = False
End If
If Me.Arrow2.Visible = True Then
Me.Arrow2.Visible = False
End If
If Me.Arrow3.Visible = True Then
Me.Arrow3.Visible = False
End If
If Me.Arrow4.Visible = True Then
Me.Arrow4.Visible = False
End If
If Me.Arrow5.Visible = True Then
Me.Arrow5.Visible = False
End If
If Me.Arrow6.Visible = True Then
Me.Arrow6.Visible = False
End If
If Me.Arrow7.Visible = True Then
Me.Arrow7.Visible = False
End If
If Me.Arrow8.Visible = True Then
Me.Arrow8.Visible = False
End If
If Me.ImageExcell.Visible = True Then
Me.ImageExcell.Visible = False
End If
If Me.Arrow9.Visible = True Then
Me.Arrow9.Visible = False
End If
If Me.arrow10.Visible = True Then
Me.arrow10.Visible = False
End If
If Me.Arrow11.Visible = True Then
Me.Arrow11.Visible = False
End If


Ty ^^
 
Je gebruikt deze routine als een toggle functie. Je wil als een control visible is deze invisible maken?

Code:
with me
   .Arrow1.Visible = not .Arrow1.Visible
   .Arrow2.Visible = not .Arrow2.Visible
   .Arrow3.Visible = not .Arrow3.Visible
   .Arrow4.Visible = not .Arrow4.Visible
   .Arrow5.Visible = not .Arrow5.Visible
   .Arrow6.Visible = not .Arrow6.Visible
   .Arrow7.Visible = not .Arrow7.Visible
   .Arrow8.Visible = not .Arrow8.Visible
end with
zonder case, zonder if

of iets korter zonder case met 1 if
Code:
dim ctl as control

for each ctl in me.controls
   if left$(ctl.name,5) = "Arrow" then ctl.visible = not ctl.visible
next ctl

Enjoy!
 
Nice!

Man Guus,

Enorm bedankt, je bespaart me enorm veel code en mijn performantie gaat zo omhoog.
Heb wel nog 1 lijntje toegevoegd, omdat deze anders constant alles visible plaatste.

Code:
Dim ctl As Control

For Each ctl In Me.Controls
    If Left(ctl.Name, 5) = "Arrow" Then
        If ctl.Visible = True Then
            ctl.Visible = Not ctl.Visible
        End If
    End If
Next ctl
 
Testen of een waarde true is kan zonder dat dat expliciet doet dus:

Code:
Dim ctl As Control

For Each ctl In Me.Controls
    If [COLOR="Red"]Left$[/COLOR](ctl.Name, 5) = "Arrow" Then
        If [COLOR="SandyBrown"]ctl.Visible[/COLOR] Then
            ctl.Visible = [COLOR="Red"]False[/COLOR]
        End If
    End If
Next ctl
Let op dat als je Left$() gebruikt dat dat weer sneller is dan Left(). De ene geeft een string terug en de laatste een variant. Een variant kost je meestal performance en Not True is False. Is ook weer sneller.

Enjoy!
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan