Gå til innhold

Anbefalte innlegg

Jeg er ikke god i VB!

 

Kan noen en lettere måte og skrive dette?:

 

 

If txtradius = "a" Then

svar = MsgBox("Du må skrive et tall!")

txtradius.Text = ""

 

 

ElseIf txtradius = "b" Then

svar = MsgBox("Du må skrive et tall!")

txtradius.Text = ""

 

 

ElseIf txtradius = "c" Then

svar = MsgBox("Du må skrive et tall!")

txtradius.Text = ""

 

 

ElseIf txtradius = "d" Then

svar = MsgBox("Du må skrive et tall!")

txtradius.Text = ""

 

 

ElseIf txtradius = "e" Then

svar = MsgBox("Du må skrive et tall!")

txtradius.Text = ""

 

 

ElseIf txtradius = "f" Then

svar = MsgBox("Du må skrive et tall!")

txtradius.Text = ""

 

 

ElseIf txtradius = "g" Then

svar = MsgBox("Du må skrive et tall!")

txtradius.Text = ""

 

 

ElseIf txtradius = "h" Then

svar = MsgBox("Du må skrive et tall!")

txtradius.Text = ""

 

 

ElseIf txtradius = "i" Then

svar = MsgBox("Du må skrive et tall!")

txtradius.Text = ""

 

 

ElseIf txtradius = "j" Then

svar = MsgBox("Du må skrive et tall!")

txtradius.Text = ""

 

 

ElseIf txtradius = "k" Then

svar = MsgBox("Du må skrive et tall!")

txtradius.Text = ""

 

 

ElseIf txtradius = "l" Then

svar = MsgBox("Du må skrive et tall!")

txtradius.Text = ""

 

 

ElseIf txtradius = "m" Then

svar = MsgBox("Du må skrive et tall!")

txtradius.Text = ""

 

 

ElseIf txtradius = "n" Then

svar = MsgBox("Du må skrive et tall!")

txtradius.Text = ""

 

 

ElseIf txtradius = "o" Then

svar = MsgBox("Du må skrive et tall!")

txtradius.Text = ""

 

 

ElseIf txtradius = "p" Then

svar = MsgBox("Du må skrive et tall!")

txtradius.Text = ""

 

 

ElseIf txtradius = "q" Then

svar = MsgBox("Du må skrive et tall!")

txtradius.Text = ""

 

 

ElseIf txtradius = "r" Then

svar = MsgBox("Du må skrive et tall!")

txtradius.Text = ""

 

 

ElseIf txtradius = "s" Then

svar = MsgBox("Du må skrive et tall!")

txtradius.Text = ""

 

 

ElseIf txtradius = "t" Then

svar = MsgBox("Du må skrive et tall!")

txtradius.Text = ""

 

 

ElseIf txtradius = "u" Then

svar = MsgBox("Du må skrive et tall!")

txtradius.Text = ""

 

 

ElseIf txtradius = "w" Then

svar = MsgBox("Du må skrive et tall!")

txtradius.Text = ""

 

 

ElseIf txtradius = "y" Then

svar = MsgBox("Du må skrive et tall!")

txtradius.Text = ""

 

 

ElseIf txtradius = "å" Then

svar = MsgBox("Du må skrive et tall!")

txtradius.Text = ""

 

 

ElseIf txtradius = "s" Then

svar = MsgBox("Du må skrive et tall!")

txtradius.Text = ""

 

 

ElseIf txtradius = "ø" Then

svar = MsgBox("Du må skrive et tall!")

txtradius.Text = ""

 

 

ElseIf txtradius = "æ" Then

svar = MsgBox("Du må skrive et tall!")

txtradius.Text = ""

 

 

ElseIf txtradius = "z" Then

svar = MsgBox("Du må skrive et tall!")

txtradius.Text = ""

 

 

ElseIf txtradius = "x" Then

svar = MsgBox("Du må skrive et tall!")

txtradius.Text = ""

 

 

ElseIf txtradius = "v" Then

svar = MsgBox("Du må skrive et tall!")

txtradius.Text = ""

 

 

ElseIf txtradius = "" Then

svar = MsgBox("Du må skrive et tall!")

txtradius.Text = ""

 

Den virker, det er bare det at det tar ett århundre å lage!

Den skal gi en melding som sier at man må skrive et tall, den skal komme dersom man skriver noe annet en et tall!

Lenke til kommentar
Videoannonse
Annonse

JA!!

Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long

Const GWL_STYLE = (-16)
Const ES_NUMBER = &H2000&

Public Sub SetNumber(NumberText As TextBox, Flag As Boolean)

Dim curstyle As Long, newstyle As Long

curstyle = GetWindowLong(NumberText.hwnd, GWL_STYLE)

If Flag Then
curstyle = curstyle Or ES_NUMBER
Else
curstyle = curstyle And (Not ES_NUMBER)
End If

newstyle = SetWindowLong(NumberText.hwnd, GWL_STYLE, curstyle)
NumberText.Refresh

End Sub

Private Sub Form_Load()

SetNumber Text1, True

End Sub

Lenke til kommentar

jeg veit det er en letter måte ... men dette går også :

 

ElseIf txtradius = "a" Or "b" Or "c" Then

feil

end if

 

 

Private Sub feil()

svar = MsgBox("Du må skrive et tall!")

txtradius.Text = ""

End Sub

 

 

 

 

skjønner ikke helt hva du skal med en text boks med 1 tall da ... men men ...

 

 

 

Også trenger du vel å skrive txtradius.text ?

 

 

 

 

 

 

PabelO

Lenke til kommentar

Jeg ville nok også brukt Jonas løsning med bruk av WinAPI, men første er horrible (to say the least):Hva om jeg skriver feks: tilde el. circumflex i tekstboksten din.

 

En annen ikke fullt så lekker løsning, men som

Du kan også lage en funksjon som sjekker om det er et tall ved å bruke ascii.

 

 

Public Function IsDigit(st As String) As Boolean    
   If Asc(st) < 48 Or Asc(st) > 57 Then
       IsDigit = False
   Else
       IsDigit = True
   End If
   
End Function

 

Denne funksjonene returnerer True om første karakteren i strengen er et

tall, false dersom den ikke er det. (Den sjekker ikke resten av strengen).

 

Ex:

IsDigit("1test") -> returnerer True

IsDigit("test1") -> returnerer False

 

:)

 

(EDIT: skribleleif)

Endret av Tassax
Lenke til kommentar

Flere løsninger og forslag her, men jeg synes det er enklest å gjøre det på denne måten:

 

Private Sub Text1_KeyPress(KeyAscii As Integer)
   If Not IsNumeric(Chr$(KeyAscii)) And Not KeyAscii = vbKeyBack Then 
   	KeyAscii = 0
   End If
End Sub

Lenke til kommentar

Finnes det ikke en egen funksjon IsNum eller noe, synes å huske det. Har desverre ikke mulighet for å teste nå.

 

Ellers har du jo Val(variabel) som gjør variabelen om til tall.

Merk: Stringen 46sdf4453 blir gjort om til 46. Altså, den fjerner første bokstaven og det som kommer etter.

 

'Skrive om en string til tall vel å fjerne alt som ikke er tall
'resten av tallene beholdes
Dim i as integer
Dim inndata as string
Dim utdata as string

inndata = "4v433mnkn43"
For i = 0 to Len(inndata) Step 1
 If Asc(Mid(inndata, i, 1)) >= 48 And Asc(Mid(inndata, i, 1)) <= 57 Then
   utdata = utdata & Mid(inndata, i, 1)
 End if
Next
Msgbox utdata 'skal i dette tilfellet gi 443343

 

Tror det blir slik, vanskelig å skrive kode uten å teste den underveis eller etterpå, vet aldri om den virker da ;).

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...