Visual Basic error

Status
Niet open voor verdere reacties.

vd-meij.nl

Gebruiker
Lid geworden
19 jan 2004
Berichten
33
He, ik ben nog een beginneling in Visual Basic, en ik heb een probleempje. Ik wilde een programmatje maken (opdracht van een boek waarin ik nu uit leer).

maar ik krijg een error. Om een lang verhaal kort te maken is hier de file. Klik hier

Ik hoop dat jullie me kunnen helpen

grtz.
 
Uit een VB boek ben ik een bestand met de extensie .rar nog nooit eerder tegengekomen.

Graag nadere uitleg hierover. Kun je dan het VB Project(vbp bestand) en toebehoren, zoals het .frm bestand, hier niet even ter downloading aanbieden?

Dennis.
 
Dat heeft hij gedaan, maar dan ingepakt in een RAR bestand (net als een zip). Om het te openen heb je WinRAR nodig. (is een erg handig programma!):thumb:
 
Geplaatst door T._de_vries
Dat heeft hij gedaan, maar dan ingepakt in een RAR bestand (net als een zip). Om het te openen heb je WinRAR nodig. (is een erg handig programma!):thumb:
Hallo T._de_vries,

Wat heel erg goed van jou! Dat heb ik nooit geweten, zo zie je maar, je leert elke dag weer iets. Bedankt in elk geval voor je informatie. Ik zal straks even kijken waar ik het programma WinRar precies op het Web kan vinden.

Natuurlijk beschik zelf ook over een dergelijk programma(eigenlijk heet dat een utility), namelijk WinZip. Eigenlijk gebruik ik Pkunzip en arj (met een grote compressie ratio) ook nog steeds.

Bedankt nogmaals,

Dennis.
 
Geplaatst door vd-meij.nl
Hier kan je het downloaden Klikkie
Heeej, vd-meij.nl. Dat is tof van je!

Scheelt mij het zoeken, thanks. Ja, moet eerst ff wat anders gaan doen thuis, maar zal hierna zo gauw mogelijk naar je code gaan kijken hoor.

Dennis.
 
Geplaatst door vd-meij.nl
no problem, kijk maar als je tijd heb :)
Ik hoop dat je me kunt helpen:rolleyes:
Okiedo, doe mijn best.

Dennis.

P.S. Heb WinRar al gedownload.
 
Hallo vd-meij.nl,

Heb ff gauw naar je code gekeken. Een zeer vrij simpel programma, ik zal het straks nog even verder onder de loep nemen.

De eerste foutmelding die ik kreeg betreft het gebruik van een Array. Je definieert de 3 labels als een array, maar je gebruikt ze ook niet als zodanig, je geeft dit in je code weer niet aan. Het gebruik v.e. index is in dit geval niet echt nodig, er zijn er maar 3 van die labels. Heb je er bijvoorbeeld 50 of zelfs nog veel meer, dan wordt het anders.

Dennis.
 
Zou je misschien kunnen verbeteren en dan aan mij geven :). Dan kan ik vergelijken:)

btw: het komt omdat ik nog maar net ben begonnen met VB, daarom is het progje simpel ;)
 
Laatst bewerkt:
Beste vd-meij.nl,

Ben zojuist terug van iemand wegbrengen. Hier heb je de gewijzigde code. Ik heb de code natuurlijk van tevoren getest. Ik had je nog zo graag meer gedetailleerd willen uitleggen over de gewijzigde code, maar ik denk dat je hiermee wel uit de voeten kunt. Of ik wacht maar af, of je hierover nog vragen te stellen hebt.

En sorry, dat ik zei dat het om een vrij simpel programma gaat. Ik bedoel daar volstrekt niets negatiefs mee. Ik was juist eerder blij, omdat ik iemand moest wegbrengen en straks weer de deur uit moet. Zo bedoelde ik het eigenlijk.

Ik vind je programma juist heel mooi!

Je kunt onderstaande code gewoon copieren. Enfin, ik hoef je verder niet uit te leggen hoe dat moet. Dat weet je heus wel.

Code:
Private Sub cmdBereken_Click()
   If Trim(txtEind.Text) = "" Or Trim(txtBegin.Text) = "" _
       Or Trim(txtPrijs.Text) = "" Then
       MsgBox "Alle de drie velden invullen a.u.b"
       Exit Sub
       Else
       txtEind.Text = Val(Trim(txtEind.Text))
       txtBegin.Text = Val(Trim(txtBegin.Text))
       txtPrijs.Text = Val(Trim(txtPrijs.Text))
       Dim AantKm As Single
       Dim EindKm As Single
       Dim BeginKm As Single
       Dim Prijs As Single
       Dim PrijsExc As Single
       Dim PrijsInc As Single
       EindKm = txtEind.Text
       BeginKm = txtBegin.Text
       Prijs = txtPrijs.Text
       
       If EindKm <= BeginKm Then
          MsgBox "Eindstand km moet groter dan Begistand km zijn!"
          Exit Sub
       End If
       
       AantKm = txtEind.Text - txtBegin.Text 'Aantal KM berekenen
       
       PrijsExc = AantKm * txtPrijs.Text 'Bedrag exclusief berekenen
       lblBedragExcl(0) = PrijsExc
       PrijsExc = lblBedragExcl(0)
       
       lblBTW(1).Caption = "0.175" 'BTW is een Constante
       
       PrijsInc = PrijsExc + (PrijsExc * 0.175) 'Bedrag Inclusief berekenen

       lblBedragIncl(1).Caption = PrijsInc
   End If
End Sub

Private Sub cmdWissen_Click()
   txtBegin = ""
   txtEind = ""
   txtPrijs = ""
   lblBedragExcl(0) = ""
   lblBedragIncl(1) = ""
   lblBTW(1).Caption = ""
End Sub

Dennis.
 
Haastige spoed is zelden goed.

vd-meij,

Zou je deze code
Code:
AantKm = txtEind.Text - txtBegin.Text 'Aantal KM berekenen

willen vervangen met
Code:
AantKm = EindKm - BeginKm 'Aantal KM berekenen

Natuurlijk werkt de bovenste code ook, maar dan ben ik inconsequent bezig. Eerst heb ik bijvoorbeeld voor txtEind.Text de variabele EindKm gedefinieerd en het vervolgens niet meer gebruik, en dat is niet netjes.

Ja, allemaal in de haast getypt.

Dennis.
 
Laatst bewerkt:
Nog één

(het werkt natuurlijk wel, maar het gaat om de
inconsequentie van mij over het gebruik v.d.
variabelen, in de haast net als hierboven)

Vervang
Code:
PrijsExc = AantKm * txtPrijs.Text 'Bedrag exclusief berekenen
lblBedragExcl(0) = PrijsExc
PrijsExc = lblBedragExcl(0)
met
Code:
PrijsExc = AantKm * Prijs 'Bedrag exclusief berekenen
lblBedragExcl(0) = PrijsExc

Dennis.
 
O, het is een opdracht uit een boek, ben het alweer vergeten. Dan moet je de opdracht hier even laten zien, dan weet ik tenminste 100% hoe het programma precies moet worden geschreven. En hier doelde ik met name over het gebruik van arrays. Ik denk, dat daar het probleem is.

Als je bijvoorbeeld een label (allereerste label) op een Form plaatst en het vervolgens copieert, dan komt VB met de melding: "You already have a control named 'label..'. Do you want to create a control array?"

Geef je een bevestigend antwoord op deze vraag, dan krijgen deze labels een index, dus: label1(0) en label1(1). Je ziet dat beide labels dezelfde naam hebben, maar een eigen index hebben gekregen, namelijk nul(0) en 1. Zo worden deze labels dan in het vervolg met de indexen aangesproken.

Nu weet ik niet of de opdracht in het boek ook sprake was over het gebruik van arrays. Of heb je per abuis zo'n array gecreëerd.

Dennis.
 
Tnx dat je zo goed reageert, alleen ik snap een deel niet van de code (omdat me dat niet bekend voorkomt denk ik:) )

Naja hier is de opdracht. (eigenlijk zou ik het willen dat je mijn code aanpast ipv een hele nieuwe schrijft. Dat is beter voor mij. Omdat ik dan weet wat ik fout doe. Ik geloof best dat jouw manier beter is, maar ik ben nog niet zover in VB dus dan begrijp ik het niet :rolleyes: )

De beginstand van de kilometerteller staat in txtBegin.Text en de eindstand staat in txtEind.txt. Zet het aantal gereden kilometers in de variabele AantKm. Hiervoor moet u de beginstand van de eindstand aftrekken met de toekenningsopdracht

AantKm = txtEind.Text - txtBegin.Text

De prijs per kilometer staat in txtPrijs.Text . Zet het bedrag exclusief BTW in de variabele BedragExBtw, want dab kunt u het opmaken met de functie Format. Hiervoor moet u het aantal gereden kilometers vermeningvuldigen met de prijs per kilometer.

BedragExBtw = Aantkm * txtPrijs.Text

Vervolgens berekent u het te betalen BTW-Bedrag. Zet dit in de variabele Btw. Hanteer daarbij het percentage van 17,5%

Ten slotte berekent u het te betalen bedrag inculsief BTW en zet u dat in de variabele BedragInclBtw .

Na de berekeningen moet u de berkende bedragen in de labels zetten. U maakt de bedragen op met twee cijfers achter de komma en u plaatst Fl en twee spaties aan het begin va nde Format-string,

lblBedragExcl.Captio = Format(BedragExBtw, "Fl 0.00")


Dat is de opdracht :)
 
Ik zal de uitleg maar in de code zelf beschrijven.

Code:
Private Sub cmdBereken_Click()

   '=============== Dit is jouw code ===============
   'AantKm = txtEind.Text - txtBegin.Text 'Aantal KM berekenen

   'lblBedragExcl = AantKm * txtPrijs.Text 'Bedrag excl berekenen

   'lblBTW.Text = lblBedragExcl.Text * 0.175

   'lblBedragIncl.Text = lblBedragExcl.Text + lblBTW

   'lblBedragExcl.Caption = Format(BedragExBtw, "Fl 0.00")
   

   '==== Hieronder is de code volgens de opdracht ===='
   '
   'In de opdracht staat, dat je 3 variabelen moet gebruiken.'
   'We gaan nu 3 variabelen gebruiken/declareren, en wel van
   'het type Single en niet v.h. type Integer, omdat het type Integer
   'geen gebroken getallen kent, en Single wel.
   '(Maar eigenlijk, moet er nog één variabele worden gebruikt. Ik denk
   'dat je dit even vergeten bent te vermelden, de variabele heet dan:
   'AantKm. We hebben er dus 4 in totaal)
   
   '=== Declaratie variabelen ====
   Dim AantKm As Single
   Dim BedragExBtw As Single
   Dim Btw As Single
   Dim BedragIncBtw As Single
   
   
   'We gaan nu 3 berekeningen uitvoeren:
   
   AantKm = txtEind.Text - txtBegin.Text 'Aantal KM berekenen
   BedragExBtw = AantKm * txtPrijs.Text 'Bedrag exclusief BTW  berekenen
   Btw = BedragExBtw * 0.175 'BTW bedrag over de gereden kilometers berekenen
   BedragIncBtw = BedragExBtw + Btw 'Bedrag exclusief BTW  bereken
   
   'We gaan nu de uitkomsten v.d. 3 laatste bovenstaande berekeningen
   'op de daarvoor bestemde labels weergeven
   
   lblBedragExcl.Caption = Format(BedragExBtw, "FL 0.00")

   lblBTW.Caption = Format(Btw, "FL 0.00")

   lblBedragIncl.Caption = Format(BedragIncBtw, "FL 0.00")
   
   'Let nu goed op! Je ziet hierboven, dat de 3 labels geen index
   'hebben, MAAR in je eigen source code, bij de properties van deze
   '3 labels, zie ik dat ze geïndexeerd zijn.
   'Ze zien er zo uit:
   
   'lblBedragExcl (0)
   'lblBTW.Caption (1)
   'lblBedragIncl (1)
   
   'Dit is ook de voornaamste reden waarom je dit topic bij Helpmij
   'hebt geopend. Lees anders even het VB boek over het creëren van
   'control arrays.
   
   'Remedie: Verwijder deze 3 geïndexeerde labels en plaats 3 nieuwe
   'labels.(en copieer ze niet per ongeluk, want dan heb je weer met
   'die indexen te maken.
   'Deze 3 labels moeten wel weer dezelfde namem hebben, dus:
   'lblBedragExcl, lblBTW en lblBedragIncl.
   
End Sub

Als bovenstaande onduidelijk is, dan gewoon vragen hoor.
Je mag best van mij weten, dat ik ook niet alles weet hoor.

Dennis.
 
echt bedankt man, nu kan ik weer verder :) echt heel erg bedankt!!

btw, mn overige vragen stel ik ook maar in dit topic:thumb:
 
Oke, ik heb weer een probleem.

Ik probeer nu met mn kleine kennis een programmatje te maken die uit kan rekenen wel cijfer je voor je Examen moet halen. :)

Maar hij geeft deze foutmelding: " Compile Error, Invalid Qualifier"

dit is mijn code

Private Sub cmd_Click()

Dim txtSe1 As Single, txtSe2 As Single, txtSe3 As Single, txtSe4 As Single, txtSe5 As Single, lblCeCijfer As Single, AlleSe As Single, GemSe As Single, CE As Single

Se1 = txtSe1.Text
Se2 = txtSe2.Text
Se3 = txtSe3.Text
Se4 = txtSe4.Text
Se5 = txtSe5.Text

AlleSe = Se1 + Se2 + Se3 + Se4 + Se5

GemSe = AlleSe / 5

CE = 11 - GemSe

CE = lblCeCijfer

End Sub

als je de files nodig hebt, zeg het dan even
 
Code:
Private Sub Command1_Click()
    Dim Se1, Se2, Se3, Se4, Se5 As Single
    Dim AlleSe, GemSe, CE As Single
    
    Se1 = Val(Trim(txtSe1.Text))
    Se2 = Val(Trim(txtSe2.Text))
    Se3 = Val(Trim(txtSe3.Text))
    Se4 = Val(Trim(txtSe4.Text))
    Se5 = Val(Trim(txtSe5.Text))

    AlleSe = Se1 + Se2 + Se3 + Se4 + Se5

    GemSe = AlleSe / 5

    CE = 11 - GemSe

    lblCeCijfer = CE

End Sub

Je kunt met strings geen rekenkundige bewerkingen
gaan uitvoeren, de strings (de waarden uit de 5 text-
boxen, zijn string(tekst) waarden) moeten eerst naar
numerieke waarden worden omgezet middels de functie
Val, alvorens men een rekenkundige bewerking kan
uitvoeren met deze strings. En de functie Trim is er om
voor te zorgen, dat een per ongeluk geplaaste spatie(s)
vóór en/of ná de strings worden geëlimineerd, want
met spaties (en ook teksten, strings dus) kun je
eenmaal niet gaan rekenen.

Dennis.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan