|
| vbYesNo giver det samme ligemeget hvad Fra : Simon Moore Højer |
Dato : 08-11-04 17:11 |
| | |
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 |
| | |
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 |
| | |
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
| |
|
|