Avatar billede dragox05 Nybegynder
09. august 2005 - 11:18 Der er 23 kommentarer og
1 løsning

min første gang. Skrivning af kun tal?

Hvis jeg nu f.eks. skal lave en lommeregner, så er det meningen man kun skal kunne indtaste tal.

Hvad er koden til at jeg låser "tal" only på i det lille program jeg er ved at lave?

jeg skal kun bruge tal:
0 1 2 3 4 5 6 7 8 9 , . -
Avatar billede joern Nybegynder
09. august 2005 - 11:31 #1
Hej.

Du kan tilføje mask-control til dit projekt.  Søg i hjælpen på 'mask property'

Eller du kan teste for ascii-værdien af input i en tekst-boks.  Indsæt under text1_change():


if keyascii(text1.text) > 57 then
  msgbox("Du må kun indtaste cifre")
  exit sub
end if

M.v.h. Jørn
Avatar billede dragox05 Nybegynder
09. august 2005 - 11:39 #2
tak for det, jeg prøver rode lidt med det.
Avatar billede dragox05 Nybegynder
09. august 2005 - 11:42 #3
der opstod en fejl:
sub- eller funktion-procedure er ikke definderet
Avatar billede dragox05 Nybegynder
09. august 2005 - 11:48 #4
Jeg har prøvet at smide
Dim keyascii

ind, men der kom bare en anden fejl
Avatar billede joern Nybegynder
09. august 2005 - 11:53 #5
Hej.

Skrev efter hukommelsen.  laver lille test-projekt.  Koden skal i hvert fald ikke stå under chance, men under keypress - sorry.

M.v.h.  Jørn
Avatar billede dragox05 Nybegynder
09. august 2005 - 11:54 #6
rgr det prøver jeg lige
Avatar billede joern Nybegynder
09. august 2005 - 11:57 #7
Hej.

Så skulle den være der:

Private Sub Text1_KeyPress(KeyAscii As Integer)
  If KeyAscii > 57 Then
      MsgBox ("Du må kun indtaste cifre")
      Exit Sub
  End If
End Sub

Der er også ascii-værdier under 48, der ikke er tal.  Strengt taget skulle der jo også testes for dem.

msgbox kan selvfølgelig udelades, så sker der bare ingenting, når der tastes noget, der ikke er cifre.  minus (bindestreg) har ascii(45).  Den skulle være tilladt, ikke?

M.v.h. Jørn
Avatar billede dragox05 Nybegynder
09. august 2005 - 11:57 #8
jeg har stadig lidt prob.

erklæringnen til hændelsproceduren passer ikke til beskrivelsen af den hændelse, der har samme navn
Avatar billede dragox05 Nybegynder
09. august 2005 - 11:57 #9
okay, jeg kan se jeg lige skal ændre lidt kode, hvis det skal stå sådan ;)
Avatar billede joern Nybegynder
09. august 2005 - 11:58 #10
Opsamling.

komma er ascii(44) og punktum har (46).

/jørn
Avatar billede joern Nybegynder
09. august 2005 - 11:59 #11
Det går kvikt her.

hvilken VB-version bruger du, det er måske VBA?

/jørn
Avatar billede dragox05 Nybegynder
09. august 2005 - 12:00 #12
nej, har stadig en fejl.

Men jeg sidder heller ikk generalt i VB.
jeg sidder under Word VB programmering.
Den kan man kalde frem via ALT+F11
Avatar billede joern Nybegynder
09. august 2005 - 12:03 #13
Hej.

ja, så er det VBA.  Det bruger jeg ikke, det er en stærkt amputeret udgave af Visual Basic, der er et selvstændigt udviklingssprog.  Du må kigge i hjælpen til VBA, hvad der tillades af syntaks.  Ellers stil spørgsmålet i kategorien Word eller Excel.

M.v.h. Jørn
Avatar billede dragox05 Nybegynder
09. august 2005 - 12:03 #14
Private Sub TextU_KeyPress(KeyAscii As Integer)
If (KeyAscii < 48) Or (KeyAscii > 57) Then
  If Not (KeyAscii = 8) Then
    KeyAscii = 0
    Beep 'For computeren til at sige biib
  End If
End If
End Sub


den har jeg også kigget på, men samme fejl
Avatar billede dragox05 Nybegynder
09. august 2005 - 12:03 #15
ok
Avatar billede joern Nybegynder
09. august 2005 - 12:09 #16
Hej.

jeg har en word2000.  Den VBA der medfølger dér kender ikke keyascii, men keystroke.  Syntaksen ser dog fuldstændig anderledes ud end det jeg kender til.

VBA er jo tænkt til at udvikle macro'er med.  Du kan ikke lave en lommeregner som et selvstændigt program (en exe-fil) med VBA.  Har du brug for en lommeregner mens du skriver i Word, er det dog nemmere at bruge Windows' egen.

Eller er det bare en øvelse?

M.v.h. Jørn
Avatar billede dragox05 Nybegynder
09. august 2005 - 12:13 #17
nej det var bare et forslag.

Min opgave lyder på at jeg skal skrive ohms lov ind i word.
rimlig steneren.
jeg tænkte bare på om det kunne lade sig gøre at kun bruge tal, men det kan det åbenbaret ikke.
Den kan faktisk ikk ret meget ;)
Avatar billede joern Nybegynder
09. august 2005 - 12:25 #18
Hej.

Du kan nok med VBA lave det således, at tal indsættes med museklik på nogle knapper, ligesom med en lommeregner.  Men det klares nok ikke på 5 min.

M.v.h. Jørn
Avatar billede dragox05 Nybegynder
09. august 2005 - 12:55 #19
jeg har fundet frem til det...

Private Sub TextI_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    Select Case KeyAscii
        Case Asc("0") To Asc("9")
        Case Asc("-")
        Case Asc(".")
        Case Asc(",")
       
        Case Else
            KeyAscii = 0
            MsgBox "Du må kun indtaste TAL!", 16, "Fejl"
    End Select
End Sub
Avatar billede dragox05 Nybegynder
09. august 2005 - 12:58 #20
NU mangler jeg bare at lave udregningen knappen, det klart større problem ;)

Jeg har 3 tal.
Ohm lov består af U, I og R. P/Watt kommer ved siden af.

Anyways.
Hvis jeg nu fx. tager I*R hvorledes gøres dette så?

mit uddrav:
Resultat = textI * textU
Fasit skal så blive lagt ned i en anden boxs som hedder Fasit. skal jeg bruge "VAL" til dette punkt?
Avatar billede joern Nybegynder
09. august 2005 - 14:24 #21
Hej.

Du er sandelig vedholdende.  Select case er en udmærket løsning, når If ikke rækker.

Selve VB er ofte tolerant m.h.t. at udføre beregninger på strenge, når disse kun indeholder tal.  Men det korrekt - og sikre - er at tage værdien med 'Val'.
Du har nok også bemærket at man kan udelade .text for en tekst-kontrol.

Resultat = Val(textI.text) * Val(textU.text)

textI har mange properties: Baggrundsfarve, tabulator-indeks, position o.s.v, men når man intet skriver formoder VB at der menes text.

Watt er jo nemmest at regne ud, men bruger man ikke joule i vore dage?

M.v.h. Jørn
Avatar billede dragox05 Nybegynder
10. august 2005 - 08:48 #22
det ved jeg ikke :?)

anyways. jeg bøvler lidt med regneknappen.
Hvis man skal regne lidt i ohms lov, ser den sådan ud.
http://www.glemsom.dk/talmaal/ohms_lov.htm
og kort udgave:
http://www.praestkjaer.dk/dk/emner/elektricitet/el-ohm.htm

I selve mit regne stykke, har jeg fået den til at udregne nogle bestemte faktnummere, men har stadig små fejl, som jeg lige skal ligge hoved lidt i blød til :)
Jeg ser gerne at man kan gå ind og "læse" om der står noget i et felt.
Hvis der ikke står noget i nogen af dem sku den sige, msgbox fejl fx.
hvis der kun står noget i 1 box, sku den sige, msgbox fejl fx.
Jeg har lavet dette:
Avatar billede dragox05 Nybegynder
10. august 2005 - 08:49 #23
Private Sub Beregn_Click()
'
'Hvad nu, hvis man ikke skriver noget?
'Så popper den jo op med fejl!
'
Dim resultat
If TextU = "" Then GoTo 1
If TextI = "" Then GoTo 2
If TextR = "" Then GoTo 3
'If TextP = "" Then GoTo 4
MsgBox "Du skal skrive noget i 2 af felterne", 64, "Mangler tal"
GoTo 5

1
resultat = TextI * TextR
Fasit = "U= " + CStr(resultat)
GoTo 5
2
resultat = TextU / TextR
Fasit = "I= " + CStr(resultat)
GoTo 5
3
resultat = TextU / TextI
Fasit = "R= " + CStr(resultat)
GoTo 5
'4
'resultat = TextU * TextI
'Fasit = "P= " + CStr(resultat)
GoTo 5
5
End Sub
Avatar billede dragox05 Nybegynder
10. august 2005 - 08:51 #24
grunden til at TextP er taget fra med ' er jo mit problem
hvis du kigger på de links før, så kan du se at et eller andet tidspunkt går den jo i kluder i udregningen.

Hvis jeg nu har P og U værdigen, så skal den I = P / U
problemet er så at jeg har U værdigen, så derfor går den til punkt 2. U / R.
Der vil opstå fejl
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester