@mrgreen: Iedereen maakt fouten. En je probeert alleen maar te helpen, dat kan (bijna) geen kwaad...
@Kerkrade:
Ik(/wij) ga(an) niet dit hele programma voor je schrijven. Als je wilt dat er een programma voor je word geschreven dan kan je daarvoor vast wel ergens een advertentie kwijt.
Wat ik (/wij) wel wil(len) doen is je helpen bij het maken van codes/projecten.
Ik zou als ik jou was nog eens goed kijken naar wat een functie en wat een sub is. Dat lijk je nog niet helemaal goed te begrijpen. Als eerst een linkje:
http://msdn.microsoft.com/en-us/library/sect4ck6%28v=vs.80%29.aspx.
Omdat ik niet denk dat het linkje heel duidelijk is (het helpt wel), ga ik het ook nog eens zelf proberen uit te leggen:
Als je een project opent, dan krijg je een form te zien. Als je een button op die form plaatst en daarop klikt dan zie je een code:
(let op, de namen kunnen verschillen)
Code:
Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
End Sub
End Class
Daarin zie je meerdere dingen die ik stap voor stap af zal gaan:
Op de eerste lijn zie je de opening van een Class. Daar ga ik nu niet verder op in, maar al jouw code zou in theorie in die class moeten komen. Onderaan zie je dat de class weer wordt gesloten.
Op de derde lijn zie je dat er een Sub wordt geopend. Daar staan nog wat meer dingen bij, maar ook dat is nu (nog) niet relevant. In principe zou al je code in een sub moeten komen te staan. Of in een functie, wat zometeen aan bod komt. De sub wordt op de een na laatste regel gesloten.
Om er dan vervolgens nog een sub bij te maken voeg je dit toe:
Code:
Private Sub EigenSub()
End Sub
Het totaalplaatje is dan dit:
Code:
Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
End Sub
Private Sub EigenSub()
End Sub
End Class
Als we die sub vervolgens iets simpels laten doen (een messagebox laten zien) dan ziet de code er zo uit:
Code:
Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
End Sub
Private Sub EigenSub()
MsgBox("Hallo wereld!")
End Sub
End Class
Als je nu het programma runt en op de knop drukt, zal er alleen nog niks gebeuren omdat je de sub nog niet hebt aangeroepen. Dat doe je zo:
De totale code zal dan dit worden:
Code:
Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
EigenSub()
End Sub
Private Sub EigenSub()
MsgBox("Hallo wereld!")
End Sub
End Class
Als je nu het programma opstart en je drukt op de knop, dan zal de messagebox tevoorschijn komen.
Dan is er ook nog een speciaal soort sub: de functie. Het verschil tussen een functie en een sub is dat een functie een waarde retourneert. Een klein voorbeeld:
Code:
Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
EigenSub()
End Sub
Private Sub EigenSub()
MsgBox(MaakTekst())
End Sub
Private Function MaakTekst()
Dim tekst As String = "Hallo wereld!"
Return tekst
End Function
End Class
Als je dit zou runnen en je zou op de knop drukken gebeurt er precies hetzelfde. In deze situatie nutteloos, maar soms toch wel heel erg nuttig. Let erop dat een functie altijd een waarde terug moet sturen en dat een sub dat niet kan. Een sub kan wel een globale variable (een variable aangemaakt buiten alle subs, maar binnen een class) een waarde geven. Daarmee kan je een sub ongeveer hetzelfde laten doen.
Ik hoop dat je dit begrijpt en dat als je het niet begrijpt ook met gerichte vragen komt. Dus niet iets als: Ik snap het gewoon niet!
Daarbij zou ik je echt aanraden om dit programma nu even te laten voor wat het is en te beginnen met het bouwen van een simpeler programma. Op die manier kan je langzaam (of snel) je weg omhoog werken totdat je echt klaar bent voor een project als dit.
Als je toch door wilt gaan, dan blijven we natuurlijk nog wel helpen. Ook als je niet doorgaat met dit project, willen we altijd blijven helpen.
Succes! :thumb:
MartinJM
*EDIT*
Oeps, iets te lang met deze post bezig geweest....
@Joz: Heb ik nog iets gemist?