Gå til innhold

Anbefalte innlegg

Visual Basic Programmering - Introduksjon

 

Du vil også finne en mer oppdatert og kurant versjon av denne teksten på Wikibooks.

 

Dette er programmeringspråket for deg med ingen erfaring fra andre dataspråk. Visual Basic er enkelt, samtidig som det har svært få begrensninger i språket. I det hele er Visual Basic (herreter referert som VB) et kraftig utviklerverktøy som man raskt kan skape komplekse programmer uten noen særlig stor kunnskap i data.

 

Jeg vil i det hele tatt anbefale alle som har begynt å snuse på muligheten om å lage sine egne programmer med å starte i denne enden, og så senere gå over til andre programmeringspråk som C++ hvis det i hele tatt skulle være nødvendig (og i de tilfellene det er det, kan man bruke begge språkene). Visual Basic var i starten ganske treigt i forhold til andre språk, men har i senere tid forbedret seg kraftig, og man kan idag faktisk lage store ressurskrevende 3D-spill direkte i VB.

 

I disse forandrende tider har det allerede kommet en ny VB versjon som ikke vil bli dekket i denne guiden. VB.NET, som den kalles, er så fundamental annerledes enn forgjengerene at mye i denne guiden ikke vil kunne fungere skikkelig. Derfor bør du helst ha VB6, eller lavere før du starter.

 

All kode i denne guiden vil være merket med en grønn farge for at du lettere skal kunne skile alt fra hverandre.

 

 

Hva du trenger

 

For å skrive VB-kode bør man ha en såkalt kompiler. Dette er et program som oversetter VB-koden til maskinkode som dataen kan bruke. Du kan kjøpe ett slikt program, eller laste ned en gratis "demo", VB CCE, her.

Du kan ikke lage EXE-filer VB CCE, men skal du bare teste ut VB er dette heller ikke nødvendig.

 

 

VB-programmet

 

Etter du har åpnet VB-kompileren spretter en dialog boks fram med spørsmål om hva du vil lage. Ikke bry deg om alt det andre, men velg "Standard EXE" og trykk på OK. Helt automatisk vil en form bli laget hvor du kan legge inn hva det skal være. Til venstre ser du en hel del knapper og bokser som indikerer forksjellige controls (ting) du kan legge inn i formen. Trykk f.eks på boksen med A, og trykk så på en vilkårlig plass i formen og dra. Du vil nå ha lagt inn en Label, ett lite vindu hvor du kan skrive inn tekst til bruken.

 

La oss nå komme igang. Legg inn en CommandButton ved å velge knappen med bildet av en liten boks og legg den inn på et tilfeldig sted i formen. Trykk på denne knappen du nettopp lagde, og du vil bli sendt inn i kode-delen av VB.

 

 

Koding med VB

 

Du vil nå kunne se denne teksten i innskrivnings vinduet:

 

Private Sub Command1_Click()

 

End Sub

 

La oss se nærmere på dette. Private Sub Command1_Click() markerer begynnelsen på hva VB skal gjøre når noen trykker på knappen. Command1 er navnet på knappen og Click er årsaken til at denne delen av koden ble kjørt. Private betyr bare at koden er lokal og kan ikke nås fra andre moduler. End Sub markerer slutten på koden.

 

Men la oss ta litt teori før vi går videre. Det vi så nå var godt kalt en prosedyre. Mesteparten av den koden du skriver vil være i prosedyrer, som egentlig bare er en måte å dele opp koden på. Det finnes forskjellig typer prosedyrer, og Sub er en type. Koden vi nettopp så, kalles også en Event fordi den startes når noe skjer. I dette tilfellet er det når en bruker trykker på en knapp. Ok. La oss skrive inn noe kode.

 

Imellom Private Sub Command1_Click() og End Sub skriver du:

MsgBox "Hallo verden!"

 

La så teste dette ved å trykke på F5, eller på play-knappen i verktøylinjen. Formen vi lagte dukker så opp, sammen med den knappen vi la inn. Trykk på knappen og en meldingsboks med teksten Hallo verden kommer opp. Stilig, ikke sant?

 

Du kan skrive inn hva det skal være istedenfor Hallo verden, men det må

være mellom de to gåseøynene for at det skal virke. Lek deg litt med forskjellige

meldinger før du går videre på neste del.

 

 

Tekstbokser

 

Gå ut av kodedelen og tilbake til formen. Dette gjør du ved å avslutte kode-vindet med X-knappen nedenfor den helt øverst til høyre. Så skal du se etter en knapp på verktøylinjen helt til venstre der du helt tydelig ser en liten boks med skriften ab| i. Trykk på den, og legg den inn slik du gjorde med Command1-knappen. Så må du endre navnet på tekstboksen. Dette gjør du ved å markere teksboksen og så lete etter en verktøyboks kalt "Properties - Text1". Finner du den ikke, må du kanskje framheve den med F4. I denne verktøyboksen skal det være to kolonner med forskjellige verdier i. Det er her alle egenskapene til et objekt befinner seg i. Se etter (Name) i den venstre kolonnen. Når du har funnet den endrer du cellen i den høyre kolonnen fra Text1 til txtTekst. Dette er for å gjøre alt mer oversiktelig og lettere å lese uten å teste koden. Vi trenger ikke skifte navnet på Command1, men for din egen del bør du navngi alt du legger inn, også formen.

 

Når den er trykt lagt inn i formen går du tilbake til Command1 koden med å trykke på knappen du allerede har i formen. Så bytter du ut MsgBox koden du la inn med dette:

 

MsgBox txtTekst.Text

 

Start koden med F5 og skriv noe inn i tekstboksen. Trykk så på knappen og völa, teksten du skrev inn vil befinne seg i meldingsboksen. Så, hva skjedde her? Jo, tekstboksen du kalte for txtTekst kan nås ved å skrive dets navn. Teksten inne i en tekstboks hentes ved å skrive .Text etter navnet. Hvis du ser nærmere på Properties vinduet vil du finne cellen merket med Text. Syntaksen er derfor:

 

[object].[property]

 

Prøv nå å legge inn denne koden istedenfor:

txtTekst.Text = "Hallo verden!"

 

Tekstboksen vil nå inneholde teksten Hallo verden etter du har trykket på knappen. Det du nå har vitnet kalles Property, eller en Egenskap til en kontroll. Dette vil du se mye av i din programmerings karriære, og er derfor lurt å lære seg.

 

 

Variabler

 

Variabler er en vital del av programmeringspråket. De lagrer forskjellig type informasjon slik du kan senere nå dem. Til forksjell fra mange andre språk trenger man ikke deklarere en variabel før man kan bruke den, men det er absolutt å anbefale. For å deklarere en variabel bruker man kommandoen Dim. Vi kan teste dette ved å legge denne koden inn hvor du tidligere har skrevet MsgBox kodene:

 

Dim Test

Test = "Hallo verden!"

MsgBox Test

 

Koden gjør ikke noe mer enn det første eksempelet, men viser hvordan man bruker variabler. Videre kan man sette en variabel lik en egenskap i en kontroll. Endre navnet på tekstboksen til txtNavn. Så legger du til en ny teksboks som du kaller txtAlder. Finn fram kodevinduet og lim dette inn istedenfor den andre koden:

 

Dim TekstUt

TekstUt = "Mitt navn er " & txtNavn.Text

TekstUt = TekstUt & ". Jeg er " & txtAlder.Text & " år gammel"

MsgBox TekstUt

 

Kjør koden og skriv navnet ditt inn i txtNavn, mens du skriver inn alderen din i txtAlder. Trykk på knappen. Nå vil en meldings boks komme opp hvor navnet og alderen din står. Som du ser gjør variabler det mye enklere å skrive kode. Du la kanskje merke til et for nå ukjent tegn i programmeringen: & .Denne brukes kanskje enkelt for å sette sammen tekst slik som vist i eksempelet.

 

Du trenger ikke bare bruke tekst i variablene dine. Tall kan også brukes, og naturligvis utregning av mattematiske formler. Se på dette eksempelet.

 

Dim Tall

Tall = 2 + 2

MsgBox Tall

 

Dette vil gi 4, noe som vi alle må være enige 2 + 2 er. Alle fire regnearter kan

brukes, og naturligvis også variabler:

 

Dim Ledd

Dim Ledd2

Dim Sum

 

Ledd = 12

Ledd2 = 8

Sum = Ledd + Ledd2

MsgBox Ledd & " + " & Ledd2 & " = " & Sum

 

Vi kan nå f.eks lage et lite regneprogram som multipliserer sammen to tall fra brukeren. Kall den ene teksboksen for txtTall, og den andre for txtTall2.

Legg dette inn i Command1 sub-en:

 

MsgBox txtTall.Text & " * " & txtTall2.Text & " = " & txtTall.Text * txtTall2.Text

 

Vær oppmerksom på at teksboksene må inneholde tall, ikke bokstaver. Følger man ikke denne regelen får man en feilmelding (Type mismatch) og programmet stanser. Kommer dette fram har man valget å debuge (debug), eller å avslutte programmet og returnere til VB (end).

 

Når vi skal deklarere flere variabler kan det av og til være nyttig å ha alt på samme linje. Dette kan vi gjøre ved å dele opp variablene med komma slik:

 

Dim Tall, Sum

Tall = 5

Sum = Tall + 5

MsgBox Sum

 

Du kan deklarere så mange variabler du vil på samme linje, men ikke overdriv. Lag en ny dim linje når det hele begynner å bli uoversiktelig. Eventuelt deklarer etter kategorier slik at du Dim'er alle tekst variablene først, og så tar tall variablene på en ny linje. Det er helt opp til deg hvordan du vil skrive koden, men det er nyttig å holde alt ryddig å pent. Det kan hindre deg fra å bruke mange timer med debugging.

 

 

Funskjoner

 

Funskjoner er prosedyrer akkuratt som sub-er, men i tillegg returnerer de en variabel. Vi kan først se på funskjonen UCase som gjør all tekst om til STORE bokstaver. Kall den ene tekstboksen for txtTekst og legg inn dette eksempelet:

 

Dim Tekst

Tekst = UCase(txtTekst.Text)

MsgBox Tekst

 

Prosedyrer kan inneholde såkalte paramentre. I dette tilfellet har UCase 1 parament. For å forklare dette kan vi se på denne koden:

 

Form1.Backcolor = RGB(255, 0, 0)

 

RGB har tre paramentre, alle skilt fra hverandre med komma. Formens bakgrunnsfarge vil i dette tilfellet bli rødt. Dette er fordi den første paramentreren viser til hvor mye rødt det skal være i fargen (i en skala fra 0 til 255). Den andre hviser til hvor mye grønt det skal være i fargen, og den siste forteller hvor mye blått fargen skal inneholde.

 

Liste over ett par funskjoner i VB:

  • Navn: - Paramentre: - Returnerer:
  • RGB - Rød, Grønn, Blå - En farge sammensatt av rød (0-255), grønn (0-255) og blå (0-255). skalaen følger ikke det virkelige liv fullstendig da rgb(0,0,0) = svart og rgb(255,255,255) = hvit.
  • UCase - Tekst - Paramenten tekst omgjort til store bokstaver.
  • LCase - Tekst - Paramenten tekst omgjort til små bokstaver.
  • QBColor - Tall - En farge fra en førdefinert liste med 16 forskjellige farger. 0 er svart, mens 15 er hvit.
  • Sin - Tall - Sinusen av tallet (i radian)
  • Cos - Tall - Cosinusen av tallet (i radian)
  • Tan - Tall - Tangens av tallet (i radian)
  • Log - Tall - Log av tallet
  • Rnd - (Tall) - Tilfeldig tall mellom 0 og 1

Disse er langt ifra de eneste i VB, men det er ikke nødvendig å liste opp alle.

Ikke alle paramentre er nødvendig, som dette eksempelet viser:

 

Dim Tall

Tall = Rnd()

MsgBox Rnd * 100

 

Når du ser etter i listen skulle Rnd ha en paramenter. Men siden denne er skrevet med ( ), er det ikke nødvendig å skrive denne. Dette kalles for en Optional paramenter.

 

Men dette i hånden kan du ekspermintere med de forksjellige funskjonene. Bruk den forrige koden og sett i gang.

 

 

IF-THEN syntaksen

 

Nå kommer vi til en viktig del av VB, nemlig betingelses-programmering. Prøv ut dette eksempelet:

 

If txtTekst.Text = "hallo" Then

MsgBox "Hallo igjen!"

End If

 

Skriv inn hallo i tekstboksen. Meldingsboksen kommer opp. Skriver du ikke hallo vil heller ikke meldingsboksen bli synlig. Vi kan oversette VB koden til norsk slik:

 

HVIS txtTekst.Text = "hallo" DA SKAL

MsgBox "Hallo igjen"

SLUTT PÅ HVIS

 

Man kan også legge til en Else del av IF syntaksen:

 

If txtTekst.Text = "hallo" Then

MsgBox "Hallo igjen!"

Else

MsgBox "Ikke det? Neivel."

End If

 

Hvis teksboksen ikke inneholder hallo vil en meldingsboks med teksten Ikke det? Neivel. komme fram. Else kan på norsk oversettes til HVIS IKKE. Hvis du vil ha flere betingelser kan du enten legge inn flere IF'er, eller bruke ELSEIF:

 

If txtTekst.Text = "hallo" Then

MsgBox "Hallo igjen!"

ElseIf txtTekst.Text = "farvel" Then

MsgBox "Farvel"

Else

MsgBox "Hva sa du?"

End If

 

Du trenger ikke bruke teksbokser, og du trenger heller ikke sjekke for tekst:

 

Dim Tall

Tall = 5

If Tall = 5 Then

MsgBox "Tall er lik 5"

Else

MsgBox "Tall er ikke lik 5"

End If

 

 

Binariske operatører

 

For å forklare hva dette er kan vi prøve å løse ett problem. Hvis du vil sjekke for flere ting på en gang med IF, slik at en meldingsboks kommer fram når du skriver inn helt bestemte verdier i teksboksene, ville du helt sikkert gjort slik:

 

If txtTekst.Text = "hallo" Then

If txtTall2.Text = "verden" Then

MsgBox "Hallo verden!"

End If

End If

 

Men du kan faktisk også gjøre slik:

 

If txtTekst.Text = "hallo" AND txtTall2.Text = "verden" Then

MsgBox "Hallo verden!"

End If

 

Jeg foretrekker den siste på grunn av dens enkelthet og størrelse. Dessuten er den lett å forstå. Men hva hvis du vil at meldingsboksen skal komme fram hvis en eller begge av tekstboksene er en viss verdi. Da kan du f.eks gjøre slik:

 

If txtTekst.Text = "hallo" OR txtTall2.Text = "verden" Then

MsgBox "Hallo verden!"

End If

 

Hva er det som foregår? Mer detaljert enn at AND og OR kalles for binariske operatører er det ikke nødvendig å gå, siden du allerede har forstått hvordan de brukes. Deres dynamikk vil jeg si er et tema for viderekomne VB-programmerere. Bare husk på at de kan kombineres og brukes uendelig mange ganger i en syntaks slik at f.eks dette er lovlig:

 

Dim Tell

Tell = 5

If txtTekst.Text = "hallo" AND txtTall2.Text = "verden" AND Tell = 5 Then

MsgBox "Hallo verden!"

End If

 

 

Kontroller

 

Til nå har vi sett på to kontroller: Teksbokser og knapper. Men fremdeles har vi mange igjen. Jeg vil nå kort prøve å gå igjennom de mest brukte.

 

Knapper

 

Fremdeles vet vi ikke hvordan vi skifter teksten på knappen. Hvem vil vel ha en knapp der det står Command1? Dette gjør vi med egenskapen Caption. Gå inn i Properties vinduet, finn egenskapen, og endre cellen ved siden av.

 

Checkboksen

 

Du legger den inn ved å markere den 4 boksen fra toppen 1 rad i verktøyboksen med de forskjellige kontrollene. Den ser ut som en teksboks med en V i. Egenskapen Caption er teksten som skal settes inn ved siden av boksen.

Den mer interessange egenskapen er Value som befinner seg nesten helt nederst i Properties vinduet. Den kan ha tre verdier:

 

0 = Unchecked

1 = Checked

2 = Grayed

 

Det betyr at når du skal teste om en checkbox er markert må du bruke noe lignende denne koden:

 

If Check1.Value = 1 Then

MsgBox "Checkboksen er markert!"

End If

 

Skal du ha betingelser for flere checkbokser bruker du binariske operatører.

 

Option

 

Denne kontrollen finner du til høyre for checkboksen i verktøyboksen. Den er i forhold til checkboksen ganske lik, men med to forskjeller:

  • Value propertien kan bare inneholde to verdier: True eller False</dd>
  • Bare en option boks kan være markert om gangen.</dd>

Så for å teste om en option boks er markert gjør du slik:

 

If Option1.Value = True Then

MsgBox "Optionboksen er markert!"

End If

 

Label

 

Er markert i verktøyboksen med en stor A. Teksten endres med Caption

egenskapen.

 

Combobox

 

Er en nyttig liten kontroll som brukes ofte i programmeringen. Du finner den rett under checkboksen. For å legge til "Items", eller tekst må du enten bruke List egenskapen eller AddItem prosedyren:

 

Combo1.List(0) = "Hallo"

Combo1.List(1) = "Hallo verden!"

Combo1.AddItem "Hallo alle sammen!"

 

Du kan ikke bruke AddItem for å legge til tekst før du har startet programmet, men du må da bruke List egenskapen. Trykk på den i

Properties vinduet og trykk på knappen som dukker opp i høyre kolonne. I teksboksen som dukker opp kan du skrive inn de forskjellige tingene brukeren kan velge mellom.

 

For å se hva som er valgt kan du bruke Text egenskapen:

 

If Combo1.Text = "Hallo" Then

MsgBox "Hallo til deg også!"

End if

 

Normalt sett kan brukeren skrive inn sin egen tekst i combo boksen, men dette er ikke alltid ønskelig. For å gjøre den til "Drop-down only" setter du egenskapen Style til 2.

 

Du har kanskje lagt merke til at når du starter programmet er combo boksene helt tomme. Brukeren må selv velge et arternativ før de har innhold, og dette kan i mange tilfeller være svært plagsomt. For å løse dette må du bli introdusert med en ny Event kalt Form_Load.

 

Denne eventen kalles når formen lastes inn. Legg følgende kode inn i formen, men du må legge den utenfor Command1_Click sub-en. Du kan ikke legge en prosedyre direkte inn i en annen prosedyre.

 

Private Sub Form_Load()

Combo1.ListIndex = 0

End Sub

 

Merk at comboboksen må inneholde noe, ellers vil programmet ditt bli avsluttet og du sendes tilbake til VB. Når combobokser er tomme har de ListIndex -1, som ikke refererer til noen tekst i Listen. Defor må du sette indeksen til 0, som er det første elementet i comboboksen.

 

Det er på dette området VB kan virke litt underlig for nybegynnere. Hvorfor begynner VB å telle på 0, når alle andre her i verden begynner på 1? Dette gjelder forsovet også mange andre programmeringspråk, som ikke gjør forvirringen bedre. Det er blant annet fordi matemattikere begynner å telle på null, og derfor er windows basert på dette. VB prøver faktisk også å rette opp på dette med at ved mange teknikker begynner tellingen på 1. Likevel gjør denne blandingen det hele bare værre. Det er grunnen ikke så viktig, så du trenger ikke bry deg om det.

 

Listboks

 

Du finner den rett ved siden av comboboksen. Den eneste forskjellen er at du må ikke trykke på noen knapp for å se alle elementene, men de er allerede synlig.

Du forstår nok hva jeg mener når du prøver den ut.

 

 

Ja, dette var de aller vanligste kontrollene. Jeg skal gå mye dypere inn i de

andre senere, men først skal vi se på noen egenskaper som du finner på nevnte

kontroller:

  • Egenskap: - Beskrivelse:
    Backcolor - Bakgrunnsfagren til kontrollen
    Forecolor - Skriftfargen til kontrollen
    Left - X-kordinatene til kontrollen
    Top - Y-kordinatene til kontrollen
    Width - Bredden i twips
    Height - Høyden i twips
    Font - Skrifttype, -størrelse og -navn.
    Tag - Variablel som kan brukes til hva som helst.

mange av disse egenskapene er selvforklarene, mens noen har sine underligheter.

Top er plasseringen på Y-aksen, men denne aksen er annerledes enn den vi lærte i mattemattikktimene. Den er snudd opp ned slik at 0 blir høyere på skjermen enn 400. Hvorfor er ikke så viktig, men du må vite dette.

 

For å endre font'en må du markere den i Properties vinduet og så trykke på knappen som dukker opp. Derretter kan du velge skrifttypen slik du f.eks gjør i Notepad.

 

Twips er målet satt til standard av VB. På min skjerm er 1 piksel lik 15 twip. Vi skal ikke gå innpå det å endre målet i VB ennå, men du kan ha dette i bakhodet.

 

Tag har ingen invirkning på kontrollen og du kan sette den til hva det skal være. Bruk den når du vil lagre ekstra informasjon.

 

Looping

 

Looping er en viktig del av all programmering og er fundamentet for å lage spill. Et greit eksempel på hvor vi må bruke looping er følgende oppgave:

 

Lag et program hvor brukeren får 10 meldinger med samme tekst.

 

Lett, tenker du kanskje, og skriver inn følgende kode:

Private Sub Form_Load()

MsgBox "hallo"

MsgBox "hallo"

MsgBox "hallo"

MsgBox "hallo"

MsgBox "hallo"

MsgBox "hallo"

MsgBox "hallo"

MsgBox "hallo"

MsgBox "hallo"

MsgBox "hallo"

End Sub

Vel, jo, oppgaven kan løses på den måten. Men det er mye bedre å bruke looping:

Private Sub Form_Load()

 

Dim i

 

For i = 1 To 10

MsgBox "hello"

Next

 

End Sub

-Men kodene gjør jo det samme, hvorfor bruke looping da?, spør du sikkert.

Jo, hva om brukeren skulle få 100 meldinger? Eller kanskje 1000? Da ser du at den beste løsningen er å bruke looping, siden du slipper å måtte bruke hele livet ditt på å skrive millioner av linje med kode, som attpåtil bruker opp enorme mengder med minne.

 

Eksempelet oversatt fra VB til norsk blir slik:

 

-Når formen laster:

 

Lag en variabel med navn "i"

 

Sett variabel "i" til 1 og gå ut av loop hvis "i" er større enn 10

Vis melding "hello"

Adder 1 med "i" og gå tilbake

 

-Slutt

Du trenger ikke bare gi den samme meldingen:

 

Private Sub Form_Load()

 

Dim i

 

For i = 1 To 10

MsgBox "Melding nummer " & i

Next

 

End Sub

Mulighetene er uendelige. Du kan f.eks også lage en loop som denne:

 

Private Sub Form_Load()

 

Dim Red, Green

 

Show

 

For Red = 0 To 255

For Green = 0 To 255

Form1.BackColor = RGB(Red, Green, 0)

DoEvents

Next

Next

 

End Sub

 

Show måtte legges til fordi formen er ikke synlig på det tidspunktet

Form_Load kalles. Men du ser jo mer hva du kan gjøre, for tenk å

måtte skrive alle fargene koden går igjenom uten looping.

 

Det finnes også andre typer looper, og en av dem heter en DO-LOOP.

Den er ganske enkel og fungerer slik:

 

Dim i, g

 

Do Until i > 255

Form1.Backcolor = RGB(i, g, 0)

DoEvents

i = i + 1

g = g + 1

Loop

 

Du trenger ikke å skrive noe etter Do, men da risikerer du å få en uendelig loop.

 

 

Mer om operatører

 

Du har allerede stiftet bekjentskap med 7 operatører: +, -, *, /, AND, OR og =. Så er det på tide å introduser 2 nye: < og >. Disse brukes for å teste om ett tall er mindre eller større enn ett annet. Du kjenner kanskje prinsippet igjen fra barneskolen. Uansett bruker du de slik:

 

Dim i

i = 50

If i < 100 Then

MsgBox "i er midre enn hundre"

ElseIf i > 100 And i < 200 Then

MsgBox "i er større enn hundre og mindre enn 200"

Else

MsgBox "i er større en 200"

End if

 

 

Select-Case

 

Select Case er en nyttig del av VB som gjør det mye enklere med betingelses programmering. La oss se på et eksempel:

 

Select Case txtTekst.Text

Case "hallo"

MsgBox "Hallo igjen!"

Case "verden"

MsgBox "Hallo verden!"

Case "farvel"

MsgBox "Farvel!"

Case Else

MsgBox "Hva skrev du?"

End Select

 

Som du ser er den lett i bruk og krever egentlig en særlig dyp forklaring. Den ligner veldig på IF-THEN syntaksen, men er mye lettere å skrive. Jeg foretrekker denne framfor IF i veldig mange tilfeller hvor jeg har mange forskjellige betingelser.

 

I de tilfellene hvor du skal ha flere betingelser i samme case bruker du komma for å skille dem fra hverandre:

 

Select Case txtTekst.Text

Case "hallo", "verden", "hallo verden"

MsgBox "Hallo verden!"

Case Else

MsgBox "Hva skrev du?"

End Select

 

Det er imidlertid et par ting å legge merke til. Skal du teste om et tall er imellom to andre må du gjøre slik:

 

Dim i

i = 36

Select Case i

Case 0 To 40

MsgBox "Tallet er mellom 0 og 40"

Case Else

MsgBox "Tallet er utenom 0 og 40"

End Select

 

Syntaksen Case Is > 10, Is < 20 er ikke oversatt til Når "i" er større 10 men mindre enn 20, men Når "i" er større enn 10 eller mindre enn 20 som naturlivis er alltid.

 

 

Mer om funksjoner

 

MsgBox

 

Du har ikke sett halvparten av hva msgbox egentlig er i stand til å gjøre. Skriv inn MsgBox "test", i kode-vinduet. Du vil nå se en liste over forskjellige konstanter. Velg vbInformation og kjør programmet. Opp kommer en meldingsboks med et ikron til venstre. Lek deg litt med de andre konstantene. Du kan bruke flere på en gang ved å addere dem sammen slik:

 

MsgBox "test", vbInformation + vbYesNo

 

Legg så til et komma og skriv inn dette: "title". Kjør programmet og meldingsboksen får Title øverst i vinduet istedenfor

Project1

 

MsgBox er i virkeligheten også en funskjon. Derfor kan du finne ut hvilken tast brukeren har trykket på. Prøv ut dette eksempelet:

 

If MsgBox("Vil du avslutte",vbQuestion + vbYesNo, "Avslutte?") = vbYes Then

End

End If

 

Som du ser avsluttes programmet når brukeren trykker på Yes. End er en kommando som avslutter programmet, og vbYes er konstanten for knappen

Yes i MsgBox'en.

 

InputBox

 

En veldig nyttig kommando som gir muligheten for brukeren å skrive inn tekst i en meldingsboks. Se på dette eksempelet:

 

Dim Out

Out = InputBox("Skriv inn noe", "Title", "Standard tekst")

MsgBox "InputBox returnerte " & Out, vbInformation, "InputBox test"

 

 

Timer

 

Denne kontrollen finner du i verktøyboksen som en klokke. Den viser ikke klokken men kan brukes istedenfor en loop. Legg inn en timer i formen og kall den for tmrKlokke. Så legger du denne koden inn:

 

Private Sub tmrKlokke_Timer()

Form1.Caption = Time

End Sub

 

Set Interval egenskapen til 10 og start programmet. Det vil nå være

en klokke i formens caption. Interessant.

 

Interval er hvor mange millisekund det tar før Timer eventen kjøres igjen. Skal du stoppe Timeren må du enten sette Interval til 0 eller Enabled til False. Begge funker.

 

Skal du f.eks få en timer til å kjøre 15 ganger kan du gjøre slik:

 

Private Sub tmrKlokke_Timer()

tmrKlokke.Tag = Val(tmrKlokke.Tag) + 1

If tmrKlokke.Tag >= 15 Then

tmrKlokke.Enabled = False

End If

Form1.Backcolor = QBColor(tmrKlokke.Tag)

End Sub

 

Sett Interval til 1000 slik at du ser hva som skjer. Val oversetter tekst om til tall. Dette er for å hindre at VB genererer en feil fordi du plusser en tom streng (tekst) med et tall. >= operatøren er ikke mer enn en kombinasjon av > og =. Den betyr ikke annet enn Større eller lik. <= betyr mindre eller lik.

 

 

Data typer

 

Til nå har vi bare brukt en data-type når vi har deklarert variabler, nemligVariant. Denne datatypen kan inneholde all data, og er satt til standard på alle variabler.

 

Når du skal definere en datatype bruker du As nøkkelordet. En typisk deklarering blir da:

 

Dim Tell As Long

 

Long er sammen med Single den vanligste datatypen

for tall. Bruk dem istedenfor Variant da de tar mye mindre plass og

er mye raskere. Se på denne tabellen:

  • Data type - Prefiks - Antall Byte - 10000 adderinger
  • Byte - - - 1 - 1,9141 ms
  • Integer - % - 2 - 1,1917 ms
  • Long - & - 4 -1,0491 ms
  • Single - ! - 4 - 1,2922 ms
  • Double - # - 8 - 1,4112 ms
  • Currency - @ - 8 - 1,4373 ms
  • Variant - - - 16 - 3,2100 ms
  • String - - - 2pr. bokstav -

Prefiks er den karakteren du kan sette etter variabelen for å definere data typen uten As. Det er bare for å være bakoverkompibelt

med eldre BASIC versjoner. mange hardcode VB programmerere kaller bruken av disse prefikser for "street basic" og fnyser av de som bruker dem. Jeg må innrømme at jeg fremdeles bruker de til tider, spesielt når jeg skal spare plass. Ikke gjør som meg, bruk heller As da det er mye lettere å få oversikten. Men jeg får ta med et eksempel:

 

Istedenfor å skrive

Dim Tell As Long

 

Så kan du skrive

Dim Tell&

 

En variant tar ALLTID minst 16 byte, uansett. Derfor kan du spare mye med å bruke den egnede datatypen, både på plass og ytelse.

 

I tabellen betyr 10000 adderinger hvor lang tid det tar å legge til tallet 1 hele 10 000 ganger. Den er der bare for å vise grunnen til at du helst ikke bør bruke variant.

 

 

Arrays

 

Arrays er veldig nyttig i mange sammenhenger. Se f.eks på denne koden:

 

Dim Tall(0 To 10), i As Long

 

For i = 0 To 10

Tall(i) = Rnd * 100

Next

 

i = Rnd * 10

 

MsgBox "Tall nummer " & i & " er lik " & Tall(i)

 

Som du ser lager du arrays med å sette paranteser etter variabelen.

Du bruker To nøkkelordet for å definere

antallet.

 

 

Kommentarer

 

 

For å skrive inn en kommentar i VB-koden setter du inn ett ' etterfulgt av hva du vil si. Det betyr at denne koden her er fullstendig lovlig:

 

MsgBox "Hallo" ' Jo, denne koden hviser en meldingsboks med teksten hallo

 

 

Åpne/lagre filer

 

Nå skulle du være klar for noe virkelig interessant. Du skal nå lære hvordan du åpner og lagrer data i filer. For å gjøre det bruker vi Open syntaksen:

 

Open "C:\testfil.txt" For Output As #1

Close #1

 

Oversatt til norsk blir det:

 

Åpne fil C:\testfil.txt og slett alt innhold. Dette er fil nummer 1

Lukk fil nummer 1

 

For å skrive til filen bruker vi Print kommandoen. Den bruker vi slik:

 

Print #1, "hallo"

 

Du må naturlivis sette kommandoen etter OPEN syntaksen men før CLOSE syntaksen.

 

For å åpne setter vi inn For Input istedenfor For Output

 

Dim Tekst As String

Open "C:\testfil.txt" For Input As #1

Line Input #1, Tekst

Close #1

MsgBox Tekst

 

Skal du hente flere linjer på en gang må du bruke en DO-LOOP

 

Dim Buff As String, Tekst As String

 

Open "C:\testfil.txt" For Input As #1

Do Until EOF(1) ' EOF er TRUE når VB har nådd enden av fila

Line Input #1, Buff

Tekst = Tekst & Buff & vbNewLine

Loop

Close #1

 

MsgBox Tekst

 

vbNewLine er det samme som å presse enter i en teksbehandler.

 

Skal du åpne en fil i samme mappe som programmet gjør du slik:

 

Dim Tekst As String

Open App.Path & "\testfil.txt" For Input As #1

Line Input #1, Tekst

Close #1

MsgBox Tekst

 

 

Åpne programmer

 

Noen ganger vil du kanskje åpne programmer fra ditt program. Det kan du gjøre med Shell kommandoen:

 

Shell "notepad.exe"

Shell "calculator.exe"

 

 

Konklusjon

 

Ja, det var det. Du har nå lært deg de mest grunnlegende teknikkene i VB.

Vil vite mer kan du gå inn på hjemmesiden min her.

Ellers kan du naturligvis også bruke google for å finne ut mer. Nesten alt du lurer på kan du få svart på med å gjøre det. Fremdeles noe du lurer på?

Post det i VB forumet på hardware.no. Du får nok raskt svar og tilbakemelding.

 

Lykke til videre med programmeringen!

 

Skrevet av Kristian.S.Stangeland © 2004

Endret av aadnk
Lenke til kommentar
Videoannonse
Annonse
  • 2 uker senere...

Takker for alle responsene. Hyggelig å høre at guiden falt i smak.

 

Når det gjelder oppfølgere er jeg egentlig ikke sikker på hva jeg skal skrive om videre. Mulig kan jeg fortsette med API-programmering, men det er vel litt for avansert i forhold til nivået guiden slutter med? Uansett, etter denne inføringen er det ikke så vanskelig å komme videre med eksempler fra internett.

 

Har erfart at å begynne programmering er vanskelig med bare google som verktøy.

Lenke til kommentar

Hei, veldig bra innføring som de skriver over.

En bra fortsettelse kunne kanskje være å skrive hvordan man faktisk lager et eget "program" av det man har laget. Tenker da på kompilering til .EXE fil osv.

Har såvidt vært innom VB før men aldri blitt noen exe-fil av det lol

 

Stå på! :thumbup:

Lenke til kommentar

Sikkert bra guide, jeg har ikke lest den.

Men var jeg deg ville jeg lagt ut en ny verson så fort som mulig

å ikke indende koden er en forferdelig uvane, og ved å lære nybegynnere

opp til å ikke gjøre det er bare feil ;) detersomåskriveenlengeratrikkelutenmellomromellernoenannenformfortegnsetting

 

Cheers!

--

Jonas

 

___

Lagt til senere

___

 

Ved nærmere undersøkelse av siden ser jeg jo at det ikke er din feil.

det er jo ikke mulig å snike inn tabs på det forumet her :p sorry =)

Endret av jonask
Lenke til kommentar

Sinnsykt bra guide. hvis du kommer med ny, så husk å ta med litt om hvordan man kan bruke en Access database (f.eks) til å hente informasjon utav :!:

 

Hadde det ikke vært for denne guiden så hadde jeg sannsynligvis ikke blitt så motivert ;)

 

VELDIG BRA !

 

Mvh. DreamCodeR

Lenke til kommentar
  • 3 uker senere...
  • 4 uker senere...
  • 3 uker senere...

Nå har jeg drevet med VB noen år, men den innføringen er kjempebra for de som nettopp har startet! Selv har jeg bare en bok om VB: Hardcore Visual Basic 5, en murstein (ja, den ER rød...). Ellers har jeg lært mye av å være på nett, spesielt disse sidene:

 

VBnet Passer nok best for de litt viderekommende.

AllApi Som navnet sier, endel om APIer, men siden blir ikke oppdatert lengre...

ActiveVBSide på tysk, for de som behersker det.

Lenke til kommentar
  • 2 måneder senere...
  • 2 måneder senere...

Fikk VB 6 i ettermiddag og har så smått begynt og pusle med det du skriver i den fine guiden..

 

Fant en feil:

MsgBox txtTall.Text & " * " & txtTall2.Text & " = " txtTall.Text * txtTall2.Text

Som skal være:

MsgBox txtTall.Text & " * " & txtTall2.Text & " = " & txtTall.Text * txtTall2.Text

 

Uansett, så har jeg begynt og lage en kalkulator med to tekstbokser.

Har da lagt til funksjonene - / * men mangler pluss...

Får ikke den til. Feks hvis jeg skriver 4 og 5 blir det 45 og ikke 9.

Noen tips til hvordan man plusser uten og skrive tallene i koden, men ta de ut fra tekstboksene?

Endret av alDoz
Lenke til kommentar
...

 

Fant en feil:

MsgBox txtTall.Text & " * " & txtTall2.Text & " = " txtTall.Text * txtTall2.Text

Som skal være:

MsgBox txtTall.Text & " * " & txtTall2.Text & " = " & txtTall.Text * txtTall2.Text

 

...

 

Noen tips til hvordan man plusser uten og skrive tallene i koden, men ta de ut fra tekstboksene?

Nei, skulle du ha sett. Det hadde sneket seg inn en skrivefeil i koden. :no:

Og jeg som utrettelig testet alle linjer for å unngå slike feilkilder. Nåvel, feilen er fikset, takket være en observant leser som alDoz. Takker!

 

Når det gjelder å summere innhold fra tekstbokser må du alltid være påpasselig å inkludere funksjonen ”Val” i uttrykket. Omtrentlig som følger:

 

MsgBox txtTall.Text & " + " & txtTall2.Text & " = " & Val(txtTall.Text) + Val(txtTall2.Text)

 

Eller man kan gjøre slik:

 

Dim dNum1 As Double, dNum2 As Double

dNum1 = txtTall.Text
dNum2 = txtTall2.Text

MsgBox dNum1 & " + " & dNum2 & " = " & dNum + dNum2

Lenke til kommentar
  • 9 måneder senere...
  • 1 år senere...

Det er en ting jeg lurer på :D

 

Jeg har prøvd mange muligheter nå men får det ikke til!

Alltså jeg vil oppne en litten ting i en ini fil!

f.eks:

Open "server", "port", SettingsIni

 

Den ini filen ser sånn ut(Den heter settings.ini) :

[server]

port=90

Der det står 90 skal vises i textboksen ikke port= sånn men bare 90 :D

 

Har set sånt på mange andre ting også begynte jeg også å trenge det ;)

(Bruker VB6)

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...