/ 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
Manglende msgbox i VB 6.0 sp3 ??
Fra : Lars


Dato : 19-05-01 21:41

Hej, jeg er ny med Visual Basic

Jeg har været igang med nogle øvelser, hvor koden er indtastet eksakt eller for den sags skyld
kopieret ind. Problemet er at i nedenstående eks. samt andre kommer der ingen msgbox, det
eneste jeg ser er et tomt "Form" window.
Hvordan skal man overhovedet kunne lære når den mest simple kode fejler??
Det skal siges at jeg har hørt (måske forkert?) at der skulle være en bug i VB 6.0 der gør at
msgbox'en skjules bag andre vinduer, men uanset hvilke jeg lukker ned finder jeg den ikke.
Er der nogen der har nogle tips? Jeg har VB 6.0 sp3

msh Lars

-snip- fra help

Public Sub ()
Dim Msg, Style, Title, Help, Ctxt, Response, MyString
Msg = "Do you want to continue ?" ' Define message.
Style = vbYesNo + vbCritical + vbDefaultButton2 ' Define buttons.
Title = "MsgBox Demonstration" ' Define title.
Help = "DEMO.HLP" ' Define Help file.
Ctxt = 1000 ' Define topic
' context.
' Display message.
Response = MsgBox(Msg, Style, Title, Help, Ctxt)
If Response = vbYes Then ' User chose Yes.
MyString = "Yes" ' Perform some action.
Else ' User chose No.
MyString = "No" ' Perform some action.
End If
End Sub

 
 
Tomas Christiansen (19-05-2001)
Kommentar
Fra : Tomas Christiansen


Dato : 19-05-01 22:58

Lars skrev:
> Hej, jeg er ny med Visual Basic

Så er dette det rigtige sted at henvende sig

> Problemet er at i nedenstående eks. samt andre kommer der ingen
> msgbox, det eneste jeg ser er et tomt "Form" window.
> Hvordan skal man overhovedet kunne lære når den mest simple kode fejler??
> Public Sub ()
....
> End Sub

Koden, som du har vist, er i og for sig helt korrekt og fejler skam slet
ikke - hvis den bliver kørt.
Problemet er nok snarere at du aldrig får kørt den!

Ser du: Det er sådan at VB er hændelsesstyret (engelsk: event), og det at
lave et program, som viser en form som eventuelt indeholder noget kode, gør
ikke automatisk at ens kode bliver afviklet.

Der skal en hændelse til!

Det kan f.eks. være et tryk på en knap (CommandButton) eller når VB
signallerer at ens form er oprettet og klar til at blive vist på skærmen.

Lad os antage at du ønsker at proceduren skal køres hver gang din form
bliver oprettet og skal til at vises på skærmen. Læg da følgende kode ind:

Private Sub Form_Load()

End Sub

Nu bliver proceduren kaldt hver gang hændelsen "form er oprettet i
arbejdslageret (loaded)" optræder. Problemet er blot at dette sker INDEN
formen rent faktisk vises på skærmen. Men det er der råd for.

Indsætter du i stedet følgende kode:

Private Sub Form_Load()
Me.Show

End Sub

Betyder det, at du sikrer dig at formen (der refereres til den aktuelle form
ved at bruge Me) vises på skærmen INDEN proceduren bliver udført.

Hvis du i stedet ønsker at skal køres hver gang du trykker på en knap,
lægger du en knap (CommandButton) på din form og indsætter følgende kode:

Private Sub Command1_Click()

End Sub

Bemærk at den FØRSTE knap, som lægges på en form får navnet Command1, den
næste får navnet Command2 osv.
Derfor virker eksemplet naturligvis (se på navnet på proceduren) kun for den
FØRSTE CommandButton, som du lægger på din form.

Du sidder måske nu og tænker: "Hvordan skal jeg dog kunne vide hvad alle
disse ting hedder?", og her kommer VB dig til hjælp!
Lige ovenover vinduet, som indeholder din kode, har du i venstre side en
liste over alle de kontroller, som er blevet lagt på den aktuelle form, og i
højre side de hændelser, som den aktuelle kontrol kan "komme ud for". Klik
på én af dem, og en tom procedure med det korrekte navn vil blive oprettet.

-------
Tomas



preben nielsen (20-05-2001)
Kommentar
Fra : preben nielsen


Dato : 20-05-01 10:06


"Lars" <l@homenet.dk> skrev i en meddelelse
news:MPG.1570f8bfa80c78889896e7@news.inet.tele.dk...
> Jeg har været igang med nogle øvelser, hvor koden er indtastet
eksakt eller for den sags skyld
> kopieret ind. Problemet er at i nedenstående eks. samt andre
kommer der ingen msgbox, det
> eneste jeg ser er et tomt "Form" window.
> Hvordan skal man overhovedet kunne lære når den mest simple
kode fejler??
> Det skal siges at jeg har hørt (måske forkert?) at der skulle
være en bug i VB 6.0 der gør at
> msgbox'en skjules bag andre vinduer, men uanset hvilke jeg
lukker ned finder jeg den ikke.
> Er der nogen der har nogle tips? Jeg har VB 6.0 sp3

Som standard er VB opstarts-object en Form, og din Form
aktiverer/kalder slet ikke proceduren "" ! Derfor sker der
intet.

Dit program behøver p.t. slet ikke en form, så jeg vil foreslå,
at du istedet beder dit program bruge proceduren Main() som
opstartsobject :

1. Du sletter din form.
2. Du tilføjer et modul
3. I modulet skriver du:
Public Sub Main()

End Sub
4. Under Project->Properties vælger du fanebladet "General" og
sætter "Startup Object" til "Sub Main"

Når dit program så startes vil det udføre proceduren Main(), som
ikke gør andet end at kalde din procedure ().


NB. At bruge Main() som opstartsobjekt er IMO langt at foretrække
i de fleste tilfælde.

--

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



Lars (21-05-2001)
Kommentar
Fra : Lars


Dato : 21-05-01 22:35

>
> Som standard er VB opstarts-object en Form, og din Form
> aktiverer/kalder slet ikke proceduren "" ! Derfor sker der
> intet.

Hej begge 2,tak for svaret, det vil jeg kigge på.

mvh Lars

Lars (24-05-2001)
Kommentar
Fra : Lars


Dato : 24-05-01 19:29

> Dit program behøver p.t. slet ikke en form, så jeg vil foreslå,
> at du istedet beder dit program bruge proceduren Main() som
> opstartsobject :
>
> 1. Du sletter din form.
> 2. Du tilføjer et modul
> 3. I modulet skriver du:
> Public Sub Main()
>
> End Sub
> 4. Under Project->Properties vælger du fanebladet "General" og
> sætter "Startup Object" til "Sub Main"
>
> Når dit program så startes vil det udføre proceduren Main(), som
> ikke gør andet end at kalde din procedure ().

Hej Preben

Jeg prøvede dit forslag men uden held.
Det besynderlige er at nedenstående kode, når den afvikles i MS Word 2000 VBA, så laver den
både input & outputbox. Men i stand-alone Visual Basic 6.0 sp3, vises blot den tomme form.
Kan du eller andre forklare dette?

mvh Lars

Option Explicit

Public Sub FirstCode()
Dim Resultat
Resultat = InputBox(prompt:="Hvad er dit navn?", Title:="VBA Kode")
MsgBox prompt:="Dit navn er: " & Resultat, Title:="VBA code"
End Sub

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

Månedens bedste
Årets bedste
Sidste års bedste