Hallo allemaal,
Voor school moet ik een schuifspelletje maken in VBA in Word.
Ik heb de code gemaakt en deze klopt naar mijn idee, maar als ik de Userform wil uitvoeren krijg ik foutmelding 53 'Kan het bestand niet vinden'.
Met foutopsporing kom ik dan in de code ThisDocument (onder Microsoft Word - objecten in het venster linksboven in VBA).
Het enige wat hier staat is:
De commandbutton waar je in het document op klikt heet dan Schuifspel en het userform heet gewoon Userform1.Code:Private Sub Schuifspel_Click() UserForm1.Show End Sub
Ik snap niet wat het probleem is, maar de computer doet net of Userform1 niet bestaat.
Bovendien zou hij toch helemaal niet naar dat stukje code moeten kijken als ik de userform uit wil voeren?
Ik hoop dat iemand van jullie mij hiermee kan helpen!
Wat hier misgaat is dat er een bestand niet kan worden gevonden dat geopend wordt in de procedure Initialize van UserForm1.
de code daar is:
Private Sub userform_initialize()
leeg = 0
plaats = "C:\Users\Mirjam\Documents\School\2e Fase\Informatica\Plaatjes"
rij = Array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24)
gewonnen = False
vullen
End Sub
De fout zit dus niet in de Inititialize maar wel ergens in de code binnen UserForm1.
vullen is een subroutine?
Wat gebeurd daar?
Wordt daar iets met de variabele plaats gedaan?
Laatst aangepast door edmoor : 29 juni 2012 om 20:23
de code van vullen:
dit is geschreven door mijn docent dus ik neem aan dat het klopt....Code:Private Sub vullen() nummer = rij(0) naam = "Penguins" + nummer + ".jpg" Image2.Picture = LoadPicture(plaats + naam) nummer = rij(1) naam = "Penguins" + nummer + ".jpg" Image3.Picture = LoadPicture(plaats + naam) nummer = rij(2) naam = "Penguins" + nummer + ".jpg" Image4.Picture = LoadPicture(plaats + naam) nummer = rij(3) naam = "Penguins" + nummer + ".jpg" Image5.Picture = LoadPicture(plaats + naam) nummer = rij(4) naam = "Penguins" + nummer + ".jpg" Image6.Picture = LoadPicture(plaats + naam) nummer = rij(5) naam = "Penguins" + nummer + ".jpg" Image7.Picture = LoadPicture(plaats + naam) nummer = rij(6) naam = "Penguins" + nummer + ".jpg" Image8.Picture = LoadPicture(plaats + naam) nummer = rij(7) naam = "Penguins" + nummer + ".jpg" Image9.Picture = LoadPicture(plaats + naam) nummer = rij(8) naam = "Penguins" + nummer + ".jpg" Image10.Picture = LoadPicture(plaats + naam) nummer = rij(9) naam = "Penguins" + nummer + ".jpg" Image11.Picture = LoadPicture(plaats + naam) nummer = rij(10) naam = "Penguins" + nummer + ".jpg" Image12.Picture = LoadPicture(plaats + naam) nummer = rij(11) naam = "Penguins" + nummer + ".jpg" Image13.Picture = LoadPicture(plaats + naam) nummer = rij(12) naam = "Penguins" + nummer + ".jpg" Image14.Picture = LoadPicture(plaats + naam) nummer = rij(13) naam = "Penguins" + nummer + ".jpg" Image15.Picture = LoadPicture(plaats + naam) nummer = rij(14) naam = "Penguins" + nummer + ".jpg" Image16.Picture = LoadPicture(plaats + naam) nummer = rij(15) naam = "Penguins" + nummer + ".jpg" Image17.Picture = LoadPicture(plaats + naam) nummer = rij(16) naam = "Penguins" + nummer + ".jpg" Image18.Picture = LoadPicture(plaats + naam) nummer = rij(17) naam = "Penguins" + nummer + ".jpg" Image19.Picture = LoadPicture(plaats + naam) nummer = rij(18) naam = "Penguins" + nummer + ".jpg" Image20.Picture = LoadPicture(plaats + naam) nummer = rij(19) naam = "Penguins" + nummer + ".jpg" Image21.Picture = LoadPicture(plaats + naam) nummer = rij(20) naam = "Penguins" + nummer + ".jpg" Image22.Picture = LoadPicture(plaats + naam) nummer = rij(21) naam = "Penguins" + nummer + ".jpg" Image23.Picture = LoadPicture(plaats + naam) nummer = rij(22) naam = "Penguins" + nummer + ".jpg" Image24.Picture = LoadPicture(plaats + naam) nummer = rij(23) naam = "Penguins" + nummer + ".jpg" Image25.Picture = LoadPicture(plaats + naam) nummer = rij(24) naam = "Penguins" + nummer + ".jpg" Image26.Picture = LoadPicture(plaats + naam) End Sub
De plaatjes die de computer laadt hebben de aangegeven naam (bv. Penguins0.jpg)
Ok, de fout zit dus inderdaad in de variabele plaats.
Maak van:
plaats = "C:\Users\Mirjam\Documents\School\2e Fase\Informatica\Plaatjes"
eens:
plaats = "C:\Users\Mirjam\Documents\School\2e Fase\Informatica\Plaatjes\"
Dus toch in de Initialize ;-)
Laatst aangepast door edmoor : 30 juni 2012 om 14:32
Graag gedaan
Maar zie je nu ook waarom dat mis ging?
Dat is wel belangrijk als het voor school is.
Laatst aangepast door edmoor : 30 juni 2012 om 14:35
Kun je de docent ook meteen vertellen dat dat veel eenvoudiger kan met :
Code:Private Sub userform_initialize() for j=0 to 24 Me("Image" & j+2).loadpicture=("C:\Users\Mirjam\Documents\School\2e Fase\Informatica\Plaatjes\Penguins" & j & ".jpg") next end sub
Laatst aangepast door snb : 30 juni 2012 om 18:17
VBA voor smarties
Application.SheetsInNewWorkbook = 1
Vermijd Select en Activate in VBA-code
Gebruik in VBA-code With ... End With in plaats van objectvariabelen
Als er dit staat:
plaats = "C:\Users\Mirjam\Documents\School\2e Fase\Informatica\Plaatjes"
en je plakt er vervolgens de naam van het plaatje aan vast wordt het dit:
plaats = "C:\Users\Mirjam\Documents\School\2e Fase\Informatica\PlaatjesPenguins1.jpg"
Hij probeert dan dus een plaatje met de naam PlaatjesPenguins1.jpg te vinden in de map
C:\Users\Mirjam\Documents\School\2e Fase\Informatica
Dat is wat er mis ging.
Laatst aangepast door edmoor : 30 juni 2012 om 19:44
Ik denk het wel. Zonder variabelen is de code simpeler en het uitleggen van een lusis ook geen hogere wiskunde.En ik denk niet dat mijn klas je code zal snappen
Mij lijkt de door jou geplaatste code veel lastiger uit te leggen.
VBA voor smarties
Application.SheetsInNewWorkbook = 1
Vermijd Select en Activate in VBA-code
Gebruik in VBA-code With ... End With in plaats van objectvariabelen