/ Forside / Teknologi / Udvikling / VB/Basic / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
VB/Basic
#NavnPoint
berpox 2425
pete 1435
CADmageren 1251
gibson 1230
Phylock 887
gandalf 836
AntonV 790
strarup 750
Benjamin... 700
10  tom.kise 610
Endnu et spørgsmål fra en begynder.
Fra : Dennis Olesen


Dato : 03-12-03 16:17

Jeg har skrevet følgende kode.

Option Explicit
Dim antaltast

Private Sub Command1_Click()
antaltast = antaltast + 1
antaltast = MsgBox("trykket på knappen for " & antaltast)

End Sub

Opgave går ud på at man skal trykke på en knap og så vises en msgbox der
fortæller hvor mange gange knappen har været trykket på. Koden virker
næsten. Problemmet er når man skal trykker på knappen for 3. gang vises der
stadigvæk 2 i msgboxen. Hvad gør jeg forkert ?

MVH
Dennis



 
 
Jens Vestergaard (03-12-2003)
Kommentar
Fra : Jens Vestergaard


Dato : 03-12-03 16:30

"Dennis Olesen" <olesen@c.dk> skrev i en meddelelse
news:3fcdfe4f$0$95034$edfadb0f@dread11.news.tele.dk...
> Jeg har skrevet følgende kode.
>
> Option Explicit
> Dim antaltast
>
> Private Sub Command1_Click()
> antaltast = antaltast + 1
> antaltast = MsgBox("trykket på knappen for " & antaltast)
>
> End Sub
> Hvad gør jeg forkert ?

Du sætter jo antaltast = resultatet af funktionen Msgbox... det vil du nu
nok ikke.

Linien burde være noget i retning af:
MsgBox "Du har trykket på knappen " & antaltast & " gange", vbInformation

--
mvh
Jens Vestergaard (mailadr i dette indlæg er ikke gyldig!)
www.railsoft.dk
Døgnets jernbanenyheder: www.railsoft.dk/medier.asp




Kasper (03-12-2003)
Kommentar
Fra : Kasper


Dato : 03-12-03 16:40


> Linien burde være noget i retning af:
> MsgBox "Du har trykket på knappen " & antaltast & " gange", vbInformation

jeg mener at hvis du har den VBinformation med skal du sætte den lig med en
variabel.. dog ikke den brugte :

Fake = MsgBox ("Du har trykket på knappen " & antaltast & " gange",
vbInformation)

Kasper



preben nielsen (03-12-2003)
Kommentar
Fra : preben nielsen


Dato : 03-12-03 17:18


"Kasper" <RepzakRemoveme@hotmail.com> skrev i en meddelelse
news:3fce0344$0$155$edfadb0f@dread11.news.tele.dk...
>
> > Linien burde være noget i retning af:
> > MsgBox "Du har trykket på knappen " & antaltast & " gange",
vbInformation
>
> jeg mener at hvis du har den VBinformation med skal du sætte den
lig med en
> variabel..

Det har du _ikke_ ret i...


--
/\ preben nielsen
\/\ prel@post.tele.dk



Kasper (03-12-2003)
Kommentar
Fra : Kasper


Dato : 03-12-03 21:45


"preben nielsen" <prel@post.tele.dk> wrote in message
news:3fce0cbd$0$9780$edfadb0f@dread14.news.tele.dk...
>
> "Kasper" <RepzakRemoveme@hotmail.com> skrev i en meddelelse
> news:3fce0344$0$155$edfadb0f@dread11.news.tele.dk...
> >
> > > Linien burde være noget i retning af:
> > > MsgBox "Du har trykket på knappen " & antaltast & " gange",
> vbInformation
> >
> > jeg mener at hvis du har den VBinformation med skal du sætte den
> lig med en
> > variabel..
>
> Det har du _ikke_ ret i...

hmm nok hvis man bruger VB6.0.. så kommer den ud og siger = is expected !!
og laver kommandoen rød... har lige testet efter med selv samme kommando som
her !

Kasper



Jens Vestergaard (03-12-2003)
Kommentar
Fra : Jens Vestergaard


Dato : 03-12-03 22:01

> > > jeg mener at hvis du har den VBinformation med skal du sætte den
> > lig med en
> > > variabel..
> >
> > Det har du _ikke_ ret i...
>
> hmm nok hvis man bruger VB6.0.. så kommer den ud og siger = is expected !!
> og laver kommandoen rød... har lige testet efter med selv samme kommando
som
> her !

Husk at droppe (). Det er væsentligt at skelne mellem *Funktionen* MsgBox og
kommendoen MsgBox:

MsgBox "Dette er en MessageBox", vbIndormation, App.Title
- en en kommando - UDEN () og viser blot messageboxen

Ret = MsgBox("Dette er en box, som returnerer en værdi",
vbInformation+vbYesNo, App.Title)
- er funktionen, som lægger 'svaret' i variablen Ret

F.eks.:
If MsgBox("Er du sikker?", vbQuestion+vbYesNoCancel,App.Title) = vbYes Then
'udfør det brugeren er sikker på!
MsgBox "Nu er det gjort!", vbExclamation, App.Title
End If


--
mvh
Jens Vestergaard (mailadr i dette indlæg er ikke gyldig!)
www.railsoft.dk
Døgnets jernbanenyheder: www.railsoft.dk/medier.asp






Kasper (04-12-2003)
Kommentar
Fra : Kasper


Dato : 04-12-03 22:08


>
> Husk at droppe (). Det er væsentligt at skelne mellem *Funktionen* MsgBox
og
> kommendoen MsgBox:
>
> MsgBox "Dette er en MessageBox", vbIndormation, App.Title
> - en en kommando - UDEN () og viser blot messageboxen


hmm ok.. man lærer vel.. men

Msgbox("dette er en msgbox") er jo også ok...

Kasper



Tomas Christiansen (04-12-2003)
Kommentar
Fra : Tomas Christiansen


Dato : 04-12-03 23:09

Kasper skrev:
> Msgbox("dette er en msgbox") er jo også ok...

Rent principielt nej, hvorimod x=Msgbox("dette er en msgbox") rent
principielt er helt OK.

Nu er VB dog så venlig, at den rent faktisk tillader at du kalder nogle af
de indbyggede funktioner som MsgBox, uden at angive et sted hvor den skal
gøre af resultatet, men rent principielt er det noget rod, og er kun med til
at forvirre begreberne.

For at pinde det helt ud. Hvis man har en procedure X og en funktion Y:

Sub X(ByVal a As Long, ByVal b As Long)
Dim z As Long
z = a + b
End Sub

Function Y(ByVal a As Long, ByVal b As Long) As Long
Y = a + b
End Function

Så kan man kalde X på følgende måde:

X 1, 2

Men man har to muligheder med Y:

w = Y(1, 2)
Y 1, 2

Den første mulighed er et almindeligt funktionskald, hvor resultatet af Y
lagres i w. Man har så også muligheden for at kalde Y som om den var en
procedure, hvor man ganske enkelt ignorerer resultatet af funktionen.

-------
Tomas


Harald Staff (05-12-2003)
Kommentar
Fra : Harald Staff


Dato : 05-12-03 03:40

"Tomas Christiansen" <toc-01-nospam@blikroer.dk> wrote in message
news:bqob6r$1o1k$1@news.cybercity.dk...
> Så kan man kalde X på følgende måde:
> X 1, 2

Eller
Call X(1, 2)
så har man to muligheder...

> Men man har to muligheder med Y:
> w = Y(1, 2)
> Y 1, 2
Eller
Call Y(1, 2)
så har man plutselig TRE muligheder. ...For at pinde det helt ud
Som bringer oss til den opprinnelige forviring:

MsgBox "Precision, man"
Call MsgBox("Precision, man")
Z = MsgBox("Precision, man")
Call MsgBox("HTH. Best wishes Harald")



Tomas Christiansen (02-01-2004)
Kommentar
Fra : Tomas Christiansen


Dato : 02-01-04 23:06

Tomas Christiansen skrev:
> Kasper skrev:
> > Msgbox("dette er en msgbox") er jo også ok...
>
> Rent principielt nej, hvorimod x=Msgbox("dette er en msgbox") rent
> principielt er helt OK.
>
> Nu er VB dog så venlig, at den rent faktisk tillader at du kalder nogle af
> de indbyggede funktioner som MsgBox, uden at angive et sted hvor den skal
> gøre af resultatet, men rent principielt er det noget rod, og er kun med
til
> at forvirre begreberne.

Rayman/Kenneth har netop gjort mig opmærksom på at VB overhovedet ikke er
venlig, men at jeg helt har misforstået hvordan VB tolker denne linie:

Msgbox("dette er en msgbox")

Jeg opfattede det som at VB tillod parenteserne, men alligevel foretog et
procedure-kald (selvom parenteserne indikerer et funktions-kald).

!!!DET ER FORKERT!!!

I stedet opfatter VB ovenstående linie som et procedurekald, hvor der er sat
parentes om den _første_ parameter alene - og altså ikke om _alle_
parametrene. At det forholder sig sådan, kan man let overbevise sig selv om,
ved at prøve at indtaste følgende to linier:

MsgBox("A",vbOKOnly)
MsgBox ("A"), vbOKOnly

Den første linie vil VB slet ikke kunne kompilere, hvorimod den anden linie
er helt OK.

Tak for dit klarsyn, Kenneth.

-------
Tomas


Søren (03-12-2003)
Kommentar
Fra : Søren


Dato : 03-12-03 17:59

Dennis Olesen" <olesen@c.dk> skrev i en meddelelse
news:3fcdfe4f$0$95034$edfadb0f@dread11.news.tele.dk...
> Jeg har skrevet følgende kode.
>
> Option Explicit
> Dim antaltast
>
> Private Sub Command1_Click()
> antaltast = antaltast + 1
> antaltast = MsgBox("trykket på knappen for " & antaltast)
>
> End Sub
>
> Opgave går ud på at man skal trykke på en knap og så vises en msgbox der
> fortæller hvor mange gange knappen har været trykket på. Koden virker
> næsten. Problemmet er når man skal trykker på knappen for 3. gang vises
der
> stadigvæk 2 i msgboxen. Hvad gør jeg forkert ?
>
> MVH
> Dennis
>

Option Explicit
Dim antaltast As Integer

Private Sub Command1_Click()
antaltast = antaltast + 1
MsgBox "trykket " & antaltast & " gange"
End Sub


eller


Private Sub Command1_Click()
Static antaltast As Integer
antaltast = antaltast + 1
MsgBox "trykket " & antaltast & " gange"
End Sub

Hvis du sætter en variabel og et lighedstegn foran MsgBox, kan du opfange
den knap, brugeren har trykket på i MsgBox. Det er selvfølgelig kun
interessant, hvis der er flere knapper

Private Sub Command1_Click()
Static antaltast As Integer
Dim Svar as Variant
antaltast = antaltast + 1
Svar = MsgBox("trykket " & antaltast & " gange. Fortsæt?", vbYesNo)
if Svar = vbNo Then
Command1.Visible = False
end if
End Sub




Lasse Eskildsen (03-12-2003)
Kommentar
Fra : Lasse Eskildsen


Dato : 03-12-03 19:04


"Dennis Olesen" <olesen@c.dk> skrev i en meddelelse
news:3fcdfe4f$0$95034$edfadb0f@dread11.news.tele.dk...
> Jeg har skrevet følgende kode.

[....]

> Problemmet er når man skal trykker på knappen for 3. gang vises der
> stadigvæk 2 i msgboxen. Hvad gør jeg forkert ?
>

Hej Dennis,

I denne linie

antaltast = MsgBox("trykket på knappen for " & antaltast)

....sætter du antaltast = resultatet af hvilken knap der bliver trykket i
msgboxen (Ok som er den eneste knap returnere 2).
Hvis du ændrer linien til: MsgBox "trykket på knappen for " & antaltast,
vbYesNo løser det problemet.

Læs evt. mere om msgbox() her:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vbenlr98/html/vafctMsgBox.asp

Med venlig hilsen

--
Lasse




Dennis Olesen (04-12-2003)
Kommentar
Fra : Dennis Olesen


Dato : 04-12-03 06:56

Jeg takker for alle svarene

MVH
Dennis
"Lasse Eskildsen" <leskil@SLETwebspeed.dk> skrev i en meddelelse
news:3fce25a7$0$70013$edfadb0f@dread12.news.tele.dk...
>
> "Dennis Olesen" <olesen@c.dk> skrev i en meddelelse
> news:3fcdfe4f$0$95034$edfadb0f@dread11.news.tele.dk...
> > Jeg har skrevet følgende kode.
>
> [....]
>
> > Problemmet er når man skal trykker på knappen for 3. gang vises der
> > stadigvæk 2 i msgboxen. Hvad gør jeg forkert ?
> >
>
> Hej Dennis,
>
> I denne linie
>
> antaltast = MsgBox("trykket på knappen for " & antaltast)
>
> ...sætter du antaltast = resultatet af hvilken knap der bliver trykket i
> msgboxen (Ok som er den eneste knap returnere 2).
> Hvis du ændrer linien til: MsgBox "trykket på knappen for " & antaltast,
> vbYesNo løser det problemet.
>
> Læs evt. mere om msgbox() her:
>
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vbenlr98/html/vafctMsgBox.asp
>
> Med venlig hilsen
>
> --
> Lasse
>
>
>



Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408924
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste