• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

VBA code verkleinen, waardoor het bestand sneller wordt.

Status
Niet open voor verdere reacties.

Judithdoek

Gebruiker
Lid geworden
9 mrt 2021
Berichten
70
In onderstaande code de code die ik nu gebruik. Deze werkt top, echter is mijn vraag of iemand weet of ik deze actie ook sneller kan uitvoeren met een andere code?

Code:
If Sheets("Invoerbestand test2").Range("AE22") = 1 Then
Exit Sub
End If

If Sheets("Invoerbestand test2").Range("AE22") = 2 Then
Exit Sub
End If

If Sheets("Invoerbestand test2").Range("AE22") = 3 Then
Exit Sub
End If

If Sheets("Invoerbestand test2").Range("AE22") = 7 Then
Exit Sub
End If

If Sheets("Invoerbestand test2").Range("AE22") = 8 Then
Exit Sub
End If

If Sheets("Invoerbestand test2").Range("AE22") = 9 Then
Exit Sub
End If

If Sheets("Invoerbestand test2").Range("AE26") = 1 Then
Exit Sub
End If

If Sheets("Invoerbestand test2").Range("AE26") = 2 Then
Exit Sub
End If

If Sheets("Invoerbestand test2").Range("AE26") = 3 Then
Exit Sub
End If

If Sheets("Invoerbestand test2").Range("AE26") = 7 Then
Exit Sub
End If

If Sheets("Invoerbestand test2").Range("AE26") = 8 Then
Exit Sub
End If

If Sheets("Invoerbestand test2").Range("AE26") = 9 Then
Exit Sub
End If

If Sheets("Invoerbestand test2").Range("AE30") = 1 Then
Exit Sub
End If

If Sheets("Invoerbestand test2").Range("AE30") = 2 Then
Exit Sub
End If

If Sheets("Invoerbestand test2").Range("AE30") = 3 Then
Exit Sub
End If

If Sheets("Invoerbestand test2").Range("AE30") = 7 Then
Exit Sub
End If

If Sheets("Invoerbestand test2").Range("AE30") = 8 Then
Exit Sub
End If

If Sheets("Invoerbestand test2").Range("AE30") = 9 Then
Exit Sub
End If

If Sheets("Invoerbestand test2").Range("AE34") = 1 Then
Exit Sub
End If

If Sheets("Invoerbestand test2").Range("AE34") = 2 Then
Exit Sub
End If

If Sheets("Invoerbestand test2").Range("AE34") = 3 Then
Exit Sub
End If

If Sheets("Invoerbestand test2").Range("AE34") = 7 Then
Exit Sub
End If

If Sheets("Invoerbestand test2").Range("AE34") = 8 Then
Exit Sub
End If

If Sheets("Invoerbestand test2").Range("AE34") = 9 Then
Exit Sub
End If

If Sheets("Invoerbestand test2").Range("AE38") = 1 Then
Exit Sub
End If

If Sheets("Invoerbestand test2").Range("AE38") = 2 Then
Exit Sub
End If

If Sheets("Invoerbestand test2").Range("AE38") = 3 Then
Exit Sub
End If

If Sheets("Invoerbestand test2").Range("AE38") = 7 Then
Exit Sub
End If

If Sheets("Invoerbestand test2").Range("AE38") = 8 Then
Exit Sub
End If

If Sheets("Invoerbestand test2").Range("AE38") = 9 Then
Exit Sub
End If

If Sheets("Invoerbestand test2").Range("AE42") = 1 Then
Exit Sub
End If

If Sheets("Invoerbestand test2").Range("AE42") = 2 Then
Exit Sub
End If

If Sheets("Invoerbestand test2").Range("AE42") = 3 Then
Exit Sub
End If

If Sheets("Invoerbestand test2").Range("AE42") = 7 Then
Exit Sub
End If

If Sheets("Invoerbestand test2").Range("AE42") = 8 Then
Exit Sub
End If

If Sheets("Invoerbestand test2").Range("AE42") = 9 Then
Exit Sub
End If

If Sheets("Invoerbestand test2").Range("AE46") = 1 Then
Exit Sub
End If

If Sheets("Invoerbestand test2").Range("AE46") = 2 Then
Exit Sub
End If

If Sheets("Invoerbestand test2").Range("AE46") = 3 Then
Exit Sub
End If

If Sheets("Invoerbestand test2").Range("AE46") = 7 Then
Exit Sub
End If

If Sheets("Invoerbestand test2").Range("AE46") = 8 Then
Exit Sub
End If

If Sheets("Invoerbestand test2").Range("AE46") = 9 Then
Exit Sub
End If

If Sheets("Invoerbestand test2").Range("AE50") = 1 Then
Exit Sub
End If

If Sheets("Invoerbestand test2").Range("AE50") = 2 Then
Exit Sub
End If

If Sheets("Invoerbestand test2").Range("AE50") = 3 Then
Exit Sub
End If

If Sheets("Invoerbestand test2").Range("AE50") = 7 Then
Exit Sub
End If

If Sheets("Invoerbestand test2").Range("AE50") = 8 Then
Exit Sub
End If

If Sheets("Invoerbestand test2").Range("AE50") = 9 Then
Exit Sub
End If

If Sheets("Invoerbestand test2").Range("AE54") = 1 Then
Exit Sub
End If

If Sheets("Invoerbestand test2").Range("AE54") = 2 Then
Exit Sub
End If

If Sheets("Invoerbestand test2").Range("AE54") = 3 Then
Exit Sub
End If

If Sheets("Invoerbestand test2").Range("AE54") = 7 Then
Exit Sub
End If

If Sheets("Invoerbestand test2").Range("AE54") = 8 Then
Exit Sub
End If

If Sheets("Invoerbestand test2").Range("AE54") = 9 Then
Exit Sub
End If

If Sheets("Invoerbestand test2").Range("AE58") = 1 Then
Exit Sub
End If

If Sheets("Invoerbestand test2").Range("AE58") = 2 Then
Exit Sub
End If

If Sheets("Invoerbestand test2").Range("AE58") = 3 Then
Exit Sub
End If

If Sheets("Invoerbestand test2").Range("AE58") = 7 Then
Exit Sub
End If

If Sheets("Invoerbestand test2").Range("AE58") = 8 Then
Exit Sub
End If

If Sheets("Invoerbestand test2").Range("AE58") = 9 Then
Exit Sub
End If
 
Kijk eens naar
select case
en een loopje

Korter wordt het er wel van, maar sneller....:rolleyes:
 
Zoiets:
Code:
For i = 22 To 58 Step 4
    Select Case Sheets("Invoerbestand test2").Range("AE" & i).Value
        Case 1, 2, 3, 7, 8, 9: Exit Sub
    End Select
Next i
 
Laatst bewerkt:
Meer dan 1 exit sub in een procedure is overbodig.
Formuleer het criterium wanneer code moet worden uitgevoerd in plaats van criteria wanneer de code niet moet worden uitgevoerd.
 
@SNB de code die hier aan vooraf gaat zijn meerdere soorten MsgBox-en, gekoppeld aan 1, 2, 3, 7, 8 en 9
De MsgBox moet nooit in beeld komen, tenzij 1,2,3,7,8,9 van toepassing is.

Formuleer het criterium wanneer code moet worden uitgevoerd in plaats van criteria wanneer de code niet moet worden uitgevoerd.
Als de MsgBox van toepassing is, dan moet de programmacode niet worden uitgevoerd.

Meer dan 1 exit sub in een procedure is overbodig.
Hoe kan ik het dan anders formuleren? De procedure moet namelijk wel stoppen, wanneer er ook maar één melding in beeld komt. In dit geval zijn er 60 verschillende soorten meldingen, waarvan het mogelijk is dat er maar 1 van toepassing is.
 
Laatst bewerkt:
Dat valt niet te beoordelen zonder de gehele code en de struktuur van het werkblad.
Het lijkt erop dat je een kreupele struktuur probeert op te vangen met een overdosis aan code.
 
Alweer een gemis aan basiskennis.

In een enkelvoudige vraag is ook dit voldoende (Los van de andere betere suggesties)
Code:
If Sheets("Invoerbestand test2").Range("AE22") = 1 Then Exit Sub
 
@SNB ik zal proberen een voorbeeldbestand te tonen, dit zal even duren gezien ik de codes over moet zetten, omdat het origineel vertrouwelijke gegevens bevat.
 
@VenA Je hebt gelijk, maar nogmaals kom met oplossingen en niet met verwijten, daar hebben andere lezers ook niet veel aan.
 
Mij lijkt vertrouwelijke gegevens vervangen eenvoudiger.
VenA heefr overigens een verbetering van code aangereikt waar velen van kunnen profiteren.
 
Ik denk dat het nog heel lang gaat duren voor jij net zoveel vragenstellers constructief hebt geholpen als VenA.
 
@snb, ik heb nog niet de respectabele leeftijd dat ik kennis heb mogen maken met een uroloog.
 
@snb dat is het punt ook niet @VenA heeft mij al veel geholpen, maar bepaalde opmerkingen tussendoor zijn nergens voor nodig en gaan mij niet helpen, maar anderen ook niet.

Om jullie het één en ander te besparen ga ik niet meer in op de, in mijn vorige zin vermelde soort, opmerkingen.
 
Oke. Mooi geweest met verwijten over en weer. Back to business zou ik zeggen. Allemaal even een blokje om, even een frisse neus halen en opnieuw beginnen.
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan