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

problemen met opslaan gegevens na aanpassing in de code

Status
Niet open voor verdere reacties.

molfi

Gebruiker
Lid geworden
19 dec 2016
Berichten
62
hallo
Na enkele testen heb ik nu een afbeelding toegevoegd aan mijn formulier.
Ik heb dit toegevoegd aan mijn code

Code:
Private Sub Werken_Change()
[COLOR="#FF0000"]Image1.Picture = LoadPicture(ThisWorkbook.Path & "\" & Werken.Value & ".JPG")[/COLOR]
End Sub

In een apart getest bestand werkte dit. Als ik nu in het testformulier(bijgevoegd) op de knop "gegevens opslaan" klik krijg ik een foutmelding in deze regel(rode letters).
De afbeeldingen wil ik nergens opslaan, deze zijn louter ter informatie voor de gebruikers(leerlingen)

Bijgevoegd formulier geeft een foutmelding door het ontbreken van de foto's!

Alvast bedankt!
Filip

Bekijk bijlage testformulier.xlsb
 
"werken.value" zal natuurlijk niet werken, die verwijst naar "blad2!c2:c4".
 
Ik wordt een beetje flauw van het zeggen dat men een foutmelding krijgt en dan nooit de melding zelf erbij zegt :rolleyes:
Foutmeldingen zijn er niet om de gebruiker te pesten maar om aan te geven wat er mis is.
 
Laatst bewerkt:
f
Fout 53 tijdens het uitvoeren "kan het bestand niet vinden.
@HSV, als ik de foto's in dezelfde map plaats van het bexcelbestand werkt dit prima. Ik kan het alleen niet opslaan met de opdrachtknop "gegevens opslaan", dan komt bovenstaande foutmelding.
 
Je combobox heeft trouwens dezelfde naam als je gedefinieerde naam 'werken'.
Lekker verwarrend.
 
Laatst bewerkt:
In de code voor het opslaan van de gegevens doe je onder andere: werken = ""
Daardoor treedt het Change event van dat object in werking.
Daar wil je vervolgens een plaatje laden met als naam de waarde van het object werken en deze is dan leeg.
Nogal logisch dat je dan de melding krijgt dat het bestand niet werd gevonden (Fout 53)

Doe dan dit:
Code:
Private Sub Werken_Change()
    If werken.value <> "" then
        Image1.Picture = LoadPicture(ThisWorkbook.Path & "\" & Werken.Value & ".JPG")
    End If
End Sub

Of met nog een extra controle:
Code:
Private Sub Werken_Change()
    Dim Plaatje As String

    Plaatje = ThisWorkbook.Path & "\" & Werken.Value & ".JPG"
    If Werken.Value <> "" Then
        If Dir(Plaatje) <> "" Then
            Image1.Picture = LoadPicture(Plaatje)
        Else
            MsgBox "Het bestand " & Plaatje & "werd niet gevonden.", vbCritical
        End If
    End If
End Sub
 
Laatst bewerkt:
Zo is het @edmoor. ;)

Ik had mijn vorig schrijven al aangepast doordat ik twee dezelfde benamingen tegen kwam.
 
Alvast bedankt,
Ik zoek het nog verder uit aan de hand van jullie tips.
Al doende leert men en uit fouten leer je het meeste.

Bedankt!
Filip
 

Bijlagen

Oeps, bestand testformulier moest niet bijgevoegd zijn!
 
Precies. Maar denk eraan dat het Change event van een object zoals een combobox niet alleen in werking treedt wanneer je een keuze maakt in de combobox, maar ook als je de waarde van een combobox vanuit een andere routine wijzigt. Dat wist je denk ik niet en daar ging het in dit geval mis.
Inderdaad, leermomentje :)
 
Dat bestand kan je verwijderen.
 
Beste edmoor en HSV
Alweer bedankt, het is gelukt en nu kan ik verder bouwen aan het laatste stukje van mijn document.
Misschien heb ik wat te weinig kennis, alles uit filmpjes en boeken, om mijn document te optimaliseren. Ik heb er reeds 2 weken enkele uren per dag aan besteed tot wat ik nu heb.
Veel bijgeleerd en heel trots, mede dankzij jullie!

Filip
 
Als extraatje dan nog dit. Zoals HSV al opmerkte is naamgeving heel belangrijk voor de leesbaarheid in de code. Geef objecten een naam die aangeeft welk type object het is en waarvoor deze dient. De combobox werken kan je bijvoorbeeld veel beter cbxWerken noemen. Dan zie je al dat het om een combobox gaat en waar deze voor bedoeld is. Image1 voor het plaatje zou ik imgWerken noemen. Je ziet dan al dat het gaat om een Image object en dat deze bedoeld is om een plaatje van Werken te tonen. Voor een textbox gebruik je dan txt, voor een commandbutton cmd, voor een checkbox chk, enz.

Gebruik dat altijd, ook al maak je maar een klein dingetje.
Als je dat consequent doet zal je er later bij het teruglezen van code alleen maar plezier van hebben.
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan