Fout afvangen, hoe

Status
Niet open voor verdere reacties.

ExcelTonnie

Gebruiker
Lid geworden
5 jul 2016
Berichten
276
Ik heb een progje, als je deze in een map zet met afbeeldingen erbij en het progje start en via de ComboBox een naam kiest wordt deze afbeelding in een Frm_Picture afgebeeld.
Echter wanneer deze afbeelding niet voorkomt in deze map dan stopt het programma.
Hoe kan ik dit oplossen met een Msgbox "helaas bestaat deze afbeelding niet" en dat er een nieuwe keuze gemaakt kan worden.

Zie hieronder de code:


Afbeelding _Inlezen.PNG
 
een mogelijkheid:

Code:
Function BestaatIe(pad As String, bestand As String) As Boolean
    Dim obj As Object
    Set obj = CreateObject("Scripting.FileSystemObject")
    BestaatIe = obj.fileExists(pad & "\" & bestand)
End Function

Private Sub ComboBox1_change()
    If BestaatIe(ThisWorkbook.Path, ComboBox1.Value & ".jpg") Then
        image1.picture = loadp..............
    Else
        'file bestaat niet
    End If

End Sub
 
een mogelijkheid:

Code:
Function BestaatIe(pad As String, bestand As String) As Boolean
    Dim obj As Object
    Set obj = CreateObject("Scripting.FileSystemObject")
    BestaatIe = obj.fileExists(pad & "\" & bestand)
End Function

Private Sub ComboBox1_change()
    If BestaatIe(ThisWorkbook.Path, ComboBox1.Value & ".jpg") Then
        image1.picture = loadp..............
    Else
        'file bestaat niet
    End If

End Sub

Eric

Thx voor de hulp maar geeft een syntaxfout aan
image1.picture = loadp..............
 
En dat heb je letterlijk zo overgenomen in plaats van je eigen LoadPicture opdracht er voor te gebruiken??? :shocked:
Code:
image1.picture = loadp..............
 
Had geen zin om jouw plaatje over te tikken ;)
 
En dat heb je letterlijk zo overgenomen in plaats van je eigen LoadPicture opdracht er voor te gebruiken??? :shocked:
Code:
image1.picture = loadp..............

klopt, sorry voor mijn onwetendheid.

Nu staat er het volgende.
Als ik nu een naam kies waarvan geen afbeelding aanwezig is dan blijft die bij elke afbeelding die ik kies de laaste afbeelding zien.
Wellicht zal ik iets verkeerd doen.


Function BestaatIe(pad As String, bestand As String) As Boolean
Dim obj As Object
Set obj = CreateObject("Scripting.FileSystemObject")
BestaatIe = obj.fileExists(pad & "" & bestand)
End Function

Private Sub ComboBox1_change()
If BestaatIe(ThisWorkbook.Path, ComboBox1.Value & ".jpg") Then
Image1.Picture = LoadPicture(ThisWorkbook.Path & "" & ComboBox1.Value & ".jpg")
Else
'file bestaat niet
End If

End Sub
 
Als het bestand niet blijkt te bestaan doe je niets, dus logisch dat het actieve plaatje blijft staan.
 
Als je 'm dan weg wilt hebben:

Code:
Image1.Picture = LoadPicture("")

op de plek van 'file bestaat niet
 
Als je 'm dan weg wilt hebben:

Code:
Image1.Picture = LoadPicture("")

op de plek van 'file bestaat niet

Helaas werkt het niet
Met deze code wordt er geen enkele afbeelding getoont.

Code:
Function BestaatIe(pad As String, bestand As String) As Boolean
Dim obj As Object
Set obj = CreateObject("Scripting.FileSystemObject")
BestaatIe = obj.fileExists(pad & "\" & bestand)
End Function

Private Sub ComboBox1_change()
If BestaatIe(ThisWorkbook.Path, ComboBox1.Value & ".jpg") Then
Image1.Picture = LoadPicture(ThisWorkbook.Path & "\" & ComboBox1.Value & ".jpg")
Else

'file bestaat niet
Image1.Picture = LoadPicture("")
End If

End Sub
 
Laatst bewerkt:
Hoe kan het bestaan dat niet bestaande afbeeldingen in een lijst van een Combobox staan ?

Daar zit het probleem.

Fouten moet je voorkomen, niet afvangen.
 
Je hebt een aantal \ niet overgetypt...
Ben het volkomen eens met de laatste zin van snb (1e twee overigens ook ;) )
 
Dit kan komen doordat mensen de afbeelding hebben verwijderd of dat de naam niet exact overeenkomt met de naam in de ComboBox

En ja je hebt gelijk dat ik niet de regels ken, mijn excuses daarvoor en zal mij proberen erin te verdiepen
 
@Eric:
Waarschijnlijk zijn die \ tekens wel ingetikt maar als je geen codetags gebruikt verdwijnen ze.
Voor HTML is dat een escape character en moet je er 2 direct achter elkaar zetten om ze wel getoond te krijgen.

Fout van TS, hij gebruik geen codetags.
 
Dit kan komen doordat mensen de afbeelding hebben verwijderd of dat de naam niet exact overeenkomt met de naam in de ComboBox

De combobox moet steeds opnieuw gevuld worden. Daar moet de controle plaatsvinden of een bestand bestaat.
 
Gisteren helaas geen tijd meer gehad.
Excuses allen voor mijn onwetendheid en zal in het vervolg netjes de codes in code tags zetten.
Ook zal ik het Quoten vermijden en kiezen voor + Reageer op het bericht.
Jullie hebben volkomen gelijk hierin.

De code tot dusver werkt prima alleen krijg nu geen melding wanneer de afbeelding niet bestaat maar laat gewoon niets zien.
Ik kan wel weer verder naar een andere afbeelding kiezen.
Is het ook mogelijk nadat ik in de ComboBox een afbeelding heb gekozen om deze box automatisch weer bovenaan te laten zien.
Als ik nu bijvoorbeeld de onderste afbeelding in de box heb gekozen en wil opnieuw kiezen dan lijkt het dat er niet meer in de box zit alleen moet je dan naar boven scrollen.
Hoop dat dit een duidelijk vraag is.
Verder ben ik een ieder zeer dankbaar die hiermee een bijdrage heeft geleverd.
Onderstaand de code zoals het weer gegeven moet worden hoop ik.




Code:
Function BestaatIe(pad As String, bestand As String) As Boolean
Dim obj As Object
Set obj = CreateObject("Scripting.FileSystemObject")
BestaatIe = obj.fileExists(pad & "\" & bestand)
End Function

Private Sub ComboBox1_change()
If BestaatIe(ThisWorkbook.Path, ComboBox1.Value & ".jpg") Then
Image1.Picture = LoadPicture(ThisWorkbook.Path & "\" & ComboBox1.Value & ".jpg")
Else
Image1.Picture = LoadPicture("")
End If
'file bestaat niet
End Sub
 
inmiddels de melding kunnen realiseren wanneer er geen afbeelding bestaat of de namen niet overeenkomen.


Code:
Function BestaatIe(pad As String, bestand As String) As Boolean
Dim obj As Object
Set obj = CreateObject("Scripting.FileSystemObject")
BestaatIe = obj.fileExists(pad & "\" & bestand)
End Function

Private Sub ComboBox1_change()
If BestaatIe(ThisWorkbook.Path, ComboBox1.Value & ".jpg") Then
Image1.Picture = LoadPicture(ThisWorkbook.Path & "\" & ComboBox1.Value & ".jpg")
Else
Image1.Picture = LoadPicture("")
MsgBox "Deze afbeelding is niet aanwezig of de namen komen niet overeen"
End If
'file bestaat niet
End Sub
 
Is het ook mogelijk nadat ik in de ComboBox een afbeelding heb gekozen om deze box automatisch weer bovenaan te laten zien.

Dan trigger je weer een Change en zal jouw plaatje weer veranderen, wellicht dan beter om het Click-event te gebruiken
 
Dan trigger je weer een Change en zal jouw plaatje weer veranderen, wellicht dan beter om het Click-event te gebruiken
Zou je dit in een code kunnen omschrijven, ik begrijp wat je bedoelt maar hoe ik dit moet formuleren weet ik niet.
 
Laatst bewerkt:
vervang het woordje Change door Click
en zet net voor End sub:
ComboBox1.ListIndex = -1
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan