x871kx6167ss7 Skrevet 8. januar 2004 Del Skrevet 8. januar 2004 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
Jonas Skrevet 8. januar 2004 Del Skrevet 8. januar 2004 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
pabelo Skrevet 8. januar 2004 Del Skrevet 8. januar 2004 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
x871kx6167ss7 Skrevet 8. januar 2004 Forfatter Del Skrevet 8. januar 2004 Pabelo: Takk! Man skal skrive et tall i textbox og da regner den ut areal og omkrets(jeg har bare holdt på i noen få dager;-)) jonas22282460: Ehh... jeg har bare holdt på i tre dager(forst ikke bæret,GWS_style, flagg osv.), men ellers takk! Lenke til kommentar
Jonas Skrevet 8. januar 2004 Del Skrevet 8. januar 2004 Bare sleng inn koden og hvis du ser nederst står det: Private Sub Form_Load() SetNumber Text1, True End Sub Skift text1 med den txthemmelig eller hva du ha til bare tall Lenke til kommentar
Tassax Skrevet 9. januar 2004 Del Skrevet 9. januar 2004 (endret) 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 9. januar 2004 av Tassax Lenke til kommentar
Rep Skrevet 10. januar 2004 Del Skrevet 10. januar 2004 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
sim Skrevet 10. januar 2004 Del Skrevet 10. januar 2004 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
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå