• 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.

Foutmeldingen verbergen VBA

Status
Niet open voor verdere reacties.

koenkidv

Gebruiker
Lid geworden
12 apr 2012
Berichten
12
Beste Excellers,

Ik heb een calculatiesheet gemaakt in excel met behulp van macro's.
Dit wordt gebruikt door meerdere mensen maar soms komt er een foutmelding.
kan ik deze ook uitzetten ? Application.DisplayAlerts = False werkt niet. ik krijg nog steeds foutmeldingen.
op internet staat ook on error resume next. maar zou ik dit dan honderd keer moeten invoeren of kan dit ook 1 keer ? aan het begin of iets dergelijks?
ik hoor graag van jullie
bedankt alvast!
 
Betere oplossing

Uitzoeken wat de fout veroorzaakt en daar je macro op aanpassen zodat dit niet meer kan gebeuren.

Niels
 
Dat is idd ook een mogelijkheid maar soms is dat niet te doen. dus ik vroeg me af of hij toch kan draaien ondanks een error. dus bijvoorbeeld een lijn overslaat of iets.
 
Heb je één macro of zijn dat er honderd?
Post eens een voorbeeld van je code.
 
On error resume next slaat alle rijen over die een fout geven maar dat is slecht programmeren
omdat je dat zelf niet onder controle hebt.

Voorkomen is beter dan genezen.

Niels
 
Het is één macro die bestaat uit meerdere If functies, Loop functies, dat soort basic vba codes.

Een klein stukje voorbeeld van me code is.

Code:
If Z = 14 Then
    For i = 2 To (lastrange + 1)
        If IsEmpty(sourceSheet.Range(a & i).Value) = False Then
            sourceSheet.Range(a & i).Copy Destination:=targetSheet.Range("A" & i + 19)
        Else
            If IsEmpty(b) = False Then
            sourceSheet.Range(b & i).Copy Destination:=targetSheet.Range("A" & i + 19)
            Else
            End If
        End If
    Next i
Else
End If

If Z = 25 Then
    For i = 2 To (lastrange + 1)
        If (sourceSheet.Range(x & i).Value) >= 100 Then                                                                         
            sourceSheet.Range(a & i).Copy Destination:=targetSheet.Range("B" & i + 19)                                     
            sourceSheet.Range(b & i).Copy Destination:=targetSheet.Range("C" & i + 19)                                        
            
            If sourceSheet.Range(x & i).Value = 101 Then targetSheet.Range("D" & i + 19).Interior.ColorIndex = 6              
            If targetSheet.Range("C" & i + 19).Value = "0,01" Then targetSheet.Range("E" & i + 19).Interior.ColorIndex = 6         
        Else
        End If
    Next i
End If

Maar dit soort loopjes en index dingen zitten erin.
Ik vroeg me af of er een mogelijkheid is om niet over on error resume next neer te zetten
maar ik error kan opvangen doormiddel van een regel verder beginnen. of 10 regels verder. Als hij maar de macro afmaakt.
En het liefst een melding geeft dat er een error heeft plaatsgevonden.
Ik zoek namelijk naar bepaalde woorden, teksten, getallen. als ik overal een on error moet toevoegen is dat veel werk.
Bedankt voor alle moeite
Ik hoop dat het duidelijk is
 
Kan je achterhalen wat de fout veroorzaakt?
Als hij vastloopt kleurt de geldende regel geel, welke is dat.
Je kan een algemene foutcontrole inbouwen, bovenin je macrocode via
On Error goto oeps
En voor de End Sub zet je
Oeps:
MsgBox " Er is iets fout gelopen wijzige de invoer."
 
Als je daar dan dit van maakt:
MsgBox "Fout: " & Err.number & " - " & Err.Description

Weet je ook de foutcode en de bijbehorende omschrijving.
 
Er valt nog heel veel te verbeteren aan 'je' code.

Code:
Sub tst()
  y = 12                                    '  lastrange
  c00 = "data"                            '    sourcesheet
  c01 = c00 & "!a2:a" & 2 + y
  c02 = c00 & "!b2:b" & 2 + y
  If Z = 14 Then targetSheet.Cells(1, 21).Resize(y) = Evaluate("if(" & c01 & "=""""," & c02 & "," & c01 & ")")
End Sub
 
Laatst bewerkt:
Bedankt allen voor de moeite.
Ik krijg nog steeds de foutmelding. ik krijg zelfs een foutmelding extra :) blijkbaar zat er iets meer niet goed als dat ik dacht.
Nog steeds vraag ik me af of ik hard naar een volgende regel kan gaan in de code wanneer hij niet meer doorkan
 
Bedankt snb. Goed gevonden. Jullie zaten toch ook allemaal bij Worksheet.nl?
Of jullie deden dit op twee forums/fora?
of zelfs meerdere?
 
Nog steeds vraag ik me af of ik hard naar een volgende regel kan gaan in de code wanneer hij niet meer doorkan


Zie dit voorbeeld:
Code:
Sub tst()
    On Error GoTo Fout
    'Dit gaat fout als het blad niet bestaat
    Sheets("sss").Name = "sss1"
    MsgBox "maar we gaan hier door"
    
    Exit Sub

Fout:
    Select Case Err.Number
        Case 9
            MsgBox "Het hernoemen ging fout"
    End Select
    Resume Next
End Sub
 
Laatst bewerkt:
Oke hier kan ik wel wat mee!
Bedankt allen, door snb's code ging hij al wat beter,
Nu heb ik door edmoor's code ook een veiligheids functie kunnen inbouwen.
Bedankt !
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan