/ 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
vbYesNo giver det samme ligemeget hvad
Fra : Simon Moore Højer


Dato : 08-11-04 17:11

Hej NG

Følgende kode giver samme resulat lige meget hvad jeg trykker på...
hvorfor?

Private Sub Form_Unload(Cancel As Integer)
If lblDirty.Caption = "Dirty" Then
MsgBox "Vil du gemme filen inden du lukker programmet?",
vbYesNo, "Filen er ikke gemt"

If vbYes Then
menuSaveAs_Click
Else
End
End If

Else
End
End If
End Sub

--
Simon Moore Højer
http://www.usenet.dk/netikette/citatteknik.html
http://www.usenet.dk/netikette/signatur.html
http://www.usenet.dk/netikette/larm.html



 
 
Nyhedskigger (08-11-2004)
Kommentar
Fra : Nyhedskigger


Dato : 08-11-04 17:15

Prøv med
Dim Svar As String

Svar = MsgBox("Vil du gemme filen inden du lukker programmet?", )
If Svar = vbYes Then

Else...



"Simon Moore Højer" <simonhoejer@hotmail.com> skrev i en meddelelse
news:418f9a83$0$33740$14726298@news.sunsite.dk...
> Hej NG
>
> Følgende kode giver samme resulat lige meget hvad jeg trykker på...
> hvorfor?
>
> Private Sub Form_Unload(Cancel As Integer)
> If lblDirty.Caption = "Dirty" Then
> MsgBox "Vil du gemme filen inden du lukker programmet?", vbYesNo,
> "Filen er ikke gemt"
>
> If vbYes Then
> menuSaveAs_Click
> Else
> End
> End If
>
> Else
> End
> End If
> End Sub
>
> --
> Simon Moore Højer
> http://www.usenet.dk/netikette/citatteknik.html
> http://www.usenet.dk/netikette/signatur.html
> http://www.usenet.dk/netikette/larm.html
>



preben nielsen (09-11-2004)
Kommentar
Fra : preben nielsen


Dato : 09-11-04 19:03


"Nyhedskigger" <kks@volapyk.dk> skrev i en meddelelse
news:cmo62g$j73$1@news.net.uni-c.dk...
> Prøv med
> Dim Svar As String
>
> Svar = MsgBox("Vil du gemme filen inden du lukker
> programmet?", )
> If Svar = vbYes Then

Resultatet af MsgBox() er sgu ikke en string !


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



preben nielsen (09-11-2004)
Kommentar
Fra : preben nielsen


Dato : 09-11-04 19:05


"Simon Moore Højer" <simonhoejer@hotmail.com> skrev i en
meddelelse news:418f9a83$0$33740$14726298@news.sunsite.dk...
> Hej NG
>
> Følgende kode giver samme resulat lige meget hvad jeg trykker
> på... hvorfor?
>
> Private Sub Form_Unload(Cancel As Integer)
> If lblDirty.Caption = "Dirty" Then
> MsgBox "Vil du gemme filen inden du lukker programmet?",
> vbYesNo, "Filen er ikke gemt"
>
> If vbYes Then

Selvfølgelig går det galt, du får jo intet retur fra MsgBox()
vbYes er jo en konstant, som ikke er 0, så selvfølgelig er "If
vbYes Then" altid sand.

Gør som Nyhedskigger skriver men erklær Svar som Long og ikke som
String...

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



Simon Moore Højer (09-11-2004)
Kommentar
Fra : Simon Moore Højer


Dato : 09-11-04 19:12

> Gør som Nyhedskigger skriver men erklær Svar som Long og ikke som
> String...

Hvorfor det? Det virker jo fint med 'String'.

--
Simon Moore Højer
http://www.usenet.dk/netikette/citatteknik.html
http://www.usenet.dk/netikette/signatur.html
http://www.usenet.dk/netikette/larm.html



Tomas Christiansen (09-11-2004)
Kommentar
Fra : Tomas Christiansen


Dato : 09-11-04 22:24

Simon Moore Højer skrev:
> Hvorfor det? Det virker jo fint med 'String'.

Det er BESTEMT ikke alt der kan kompileres, som er rigtigt!

Prøv følgende kodestump, og overbevis dig selv om at det er en rigtig god
idé at bruge talvariabler til at bearbejde tal med og strengvariabler til at
bearbejde tekst med:

Dim a As Long
Dim b As String
a = 123: b = 123
MsgBox a & vbCr & b
MsgBox (a = 123) & vbCr & (b = 123)
MsgBox (a + a) & vbCr & (b + b)

-------
Tomas


Simon Moore Højer (09-11-2004)
Kommentar
Fra : Simon Moore Højer


Dato : 09-11-04 22:49

"Tomas Christiansen" <toc-01-nospam@blikroer.dk> skrev i en meddelelse
news:cmrcls$2ika$1@news.cybercity.dk...
> Simon Moore Højer skrev:
>> Hvorfor det? Det virker jo fint med 'String'.
>
> Det er BESTEMT ikke alt der kan kompileres, som er rigtigt!
>
> Prøv følgende kodestump, og overbevis dig selv om at det er en rigtig
> god
> idé at bruge talvariabler til at bearbejde tal med og strengvariabler
> til at
> bearbejde tekst med:
>
> Dim a As Long
> Dim b As String
> a = 123: b = 123
> MsgBox a & vbCr & b
> MsgBox (a = 123) & vbCr & (b = 123)
> MsgBox (a + a) & vbCr & (b + b)

hmmm.. see your point.
så vbYes, vbNo og vbCancel er altså talværdier og ikke tekst?


--
Simon Moore Højer
http://www.usenet.dk/netikette/citatteknik.html
http://www.usenet.dk/netikette/signatur.html
http://www.usenet.dk/netikette/larm.html



Tomas Christiansen (09-11-2004)
Kommentar
Fra : Tomas Christiansen


Dato : 09-11-04 23:04

Simon Moore Højer skrev:
> så vbYes, vbNo og vbCancel er altså talværdier og ikke tekst?

Netop, som fiskeren sagde.

Prøv at skrive vbYes et vilkårlig sted i din kode, og tryk Shift-F2.
Nu vil VB's Object Browser komme frem, og den skulle gerne have sat fokus på
konstanten vbYes.

Du vil nu kunne se at vbYes hører til datatypen (en Enum rent faktisk)
vbMsgBoxResult, og du kan yderligere se at den numeriske værdi er 6. Du kan
ikke direkte se at det rent faktisk er en Long, men kan man udlede af at
datatypen (vbMsgBoxResult) indholder et antal tal-konstanter (Enum's består
altid af Long's).

Hvis du klikker på vbMsgBoxResult i venstre side, kan du se at det rent
faktisk _er_ en enum, og at den er defineret i modulet VBA.

Klikker på du VBA i det nederste vindue, kan du se hele stien til den DLL,
som rent faktisk indeholder konstanten vbYes, og nu vil det lige pludselig
gå op for dig hvorfor der - når du klikker Project, References - altid er
listet nogle standard referencer fra starten, og du vil hurtigt kunne regne
ud hvad der _ikke_ vil virke, hvis disse referencer ikke er der (den
situation kan forekomme i forbindelse med visse former for fejl).

Begynder du selv at oprette f.eks. Active-X komponenter, kan du også
"browse" dem med Object Browser, og få et indblik i hvordan andre programmer
ser dit objekt.

Gør dig selv en tjeneste og brug alle de konstanter du kan finde i
standard-DLL'erne, frem for at skrive (typisk) talværdierne. Det er så
kedeligt at gå og huske på at "Me.Show 1" betyder at formen skal vises
"modalt". Det er meget lettere at se hvis man skriver "Me.Show vbModal".

-------
Tomas


Simon Moore Højer (10-11-2004)
Kommentar
Fra : Simon Moore Højer


Dato : 10-11-04 00:26

> Netop, som fiskeren sagde.
>
> Prøv at skrive vbYes et vilkårlig sted i din kode, og tryk Shift-F2.
> Nu vil VB's Object Browser komme frem, og den skulle gerne have sat
> fokus på
> konstanten vbYes.
>
> Du vil nu kunne se at vbYes hører til datatypen (en Enum rent faktisk)
> vbMsgBoxResult, og du kan yderligere se at den numeriske værdi er 6.
> Du kan

<SNIP>

Tak for et detaljeret og meget oplysende svar!


--
Simon Moore Højer
http://www.usenet.dk/netikette/citatteknik.html
http://www.usenet.dk/netikette/signatur.html
http://www.usenet.dk/netikette/larm.html



preben nielsen (10-11-2004)
Kommentar
Fra : preben nielsen


Dato : 10-11-04 17:27


"Simon Moore Højer" <simonhoejer@hotmail.com> skrev i en
meddelelse news:41910876$0$33731$14726298@news.sunsite.dk...
>> Gør som Nyhedskigger skriver men erklær Svar som Long og ikke
>> som String...
>
> Hvorfor det? Det virker jo fint med 'String'.

Fordi det ikke er en string. Hvis ikke du forstår forskellen, så
studér problematikken nøje før du skriver en eneste linie VB mere.

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



Søg
Reklame
Statistik
Spørgsmål : 177458
Tips : 31962
Nyheder : 719565
Indlæg : 6408169
Brugere : 218881

Månedens bedste
Årets bedste
Sidste års bedste