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