|
| Kun talværdier i tekstboks Fra : Jeppe Ladefoged |
Dato : 24-08-04 19:24 |
|
Jeg bruger en tekstbox i et lille program.
Der må kun være tal i.
Jeg har lavet en stump kode, men hvis det tal man skriver starter med "0",
bliver det slettet. Er der en smartere måde at lave det på?
Min kodestump:
-----
Private Sub tbxLøbenummer_Change()
'kun hvis feltet er tom
If Not tbxLøbenummer.Text = "" Then
'kun talværdier
tbxLøbenummer.Text = Val(tbxLøbenummer.Text)
End If
End Sub
-----
mvh
Jeppe
| |
Lars Holm Jensen (24-08-2004)
| Kommentar Fra : Lars Holm Jensen |
Dato : 24-08-04 19:33 |
|
> Jeg bruger en tekstbox i et lille program.
> Der må kun være tal i.
>
> Jeg har lavet en stump kode, men hvis det tal man skriver starter med "0",
> bliver det slettet. Er der en smartere måde at lave det på?
Jeg synes dette virker fint..
Private Sub Text1_KeyPress(KeyAscii As Integer)
If Not IsNumeric(Chr(KeyAscii)) And KeyAscii <> vbKeyBack Then KeyAscii
= 0
End Sub
/Lars
| |
Tomas Christiansen (24-08-2004)
| Kommentar Fra : Tomas Christiansen |
Dato : 24-08-04 20:18 |
|
Lars Holm Jensen skrev:
> Private Sub Text1_KeyPress(KeyAscii As Integer)
> If Not IsNumeric(Chr(KeyAscii)) And KeyAscii <> vbKeyBack Then
KeyAscii
> = 0
> End Sub
Det kommer så sandelig an på hvad man vil acceptere!!!
IsNumeric accepterer både hexadecimale tal, kommatal, tal på "videnskabelig"
form og diverse andre afarter af tal, som VB kan genkende.
-------
Tomas
| |
Lars Holm Jensen (24-08-2004)
| Kommentar Fra : Lars Holm Jensen |
Dato : 24-08-04 20:58 |
|
> Det kommer så sandelig an på hvad man vil acceptere!!!
> IsNumeric accepterer både hexadecimale tal, kommatal, tal på
> "videnskabelig"
> form og diverse andre afarter af tal, som VB kan genkende.
Ja, IsNumeric er fantastisk alsidig..
| |
Lars Holm Jensen (24-08-2004)
| Kommentar Fra : Lars Holm Jensen |
Dato : 24-08-04 21:10 |
|
Jeppe var ikke så specifik i hvad han gerne ville have og jeg ville gerne
give ham en enkel løsning.
Hvis man skal bruge en løsning til kun at tillade cifrene 0-9 så er denne
god:
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
Private Const GWL_STYLE = (-16)
Private Const ES_NUMBER = &H2000&
Private Sub Command1_Click()
SetNumber Text1, True
End Sub
Public Sub SetNumber(NumberText As TextBox, Optional Flag As Boolean = True)
Dim curstyle As Long
Dim 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
/Lars
| |
preben nielsen (24-08-2004)
| Kommentar Fra : preben nielsen |
Dato : 24-08-04 19:42 |
|
"Jeppe Ladefoged" <degofedal_spamfilter01@ÆØÅunderflow.dk> skrev i
en meddelelse news:412b87bf$0$98408$14726298@news.sunsite.dk...
> Jeg bruger en tekstbox i et lille program.
> Der må kun være tal i.
>
> Jeg har lavet en stump kode, men hvis det tal man skriver
starter med "0",
> bliver det slettet. Er der en smartere måde at lave det på?
>
> Min kodestump:
> -----
> Private Sub tbxLøbenummer_Change()
> 'kun hvis feltet er tom
> If Not tbxLøbenummer.Text = "" Then
> 'kun talværdier
> tbxLøbenummer.Text = Val(tbxLøbenummer.Text)
> End If
> End Sub
Hvorfor gør du det der ?? Hvad vil du opnå ? Og så i _Change() ??
--
/\ preben nielsen
\/\ prel@post.tele.dk
| |
Jeppe Ladefoged (24-08-2004)
| Kommentar Fra : Jeppe Ladefoged |
Dato : 24-08-04 21:38 |
|
> Jeg bruger en tekstbox i et lille program.
> Der må kun være tal i.
>
> Jeg har lavet en stump kode, men hvis det tal man skriver starter med "0",
> bliver det slettet. Er der en smartere måde at lave det på?
Nu blev jeg lige trigget med nogle kommandoer mm.
Så nu ser den sådan her ud og det virker fint (eller godt nok i hvert fald):
(Det er forresten Visual Basic for Applications, ikke at det gør den store
forskel her)
-----
Private Sub tbxLøbenummer_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
'kun talværdier
If KeyAscii < 47 Or KeyAscii > 57 Then KeyAscii = 0
End Sub
-----
mvh
Jeppe
| |
Lars Holm Jensen (24-08-2004)
| Kommentar Fra : Lars Holm Jensen |
Dato : 24-08-04 22:56 |
|
> If KeyAscii < 47 Or KeyAscii > 57 Then KeyAscii = 0
Måske backspace ville være brugervenligt..
If (KeyAscii < 47 Or KeyAscii > 57) And KeyAscii <> vbKeyBack Then KeyAscii
= 0
/Lars
| |
Harald Staff (25-08-2004)
| Kommentar Fra : Harald Staff |
Dato : 25-08-04 08:34 |
|
Hei Jeppe
Pass også på Ctrl V (paste) som du bør fange og validere i KeyDown eventet.
HTH. Beste hilsen Harald
"Jeppe Ladefoged" <degofedal_spamfilter01@ÆØÅunderflow.dk> skrev i melding
news:412ba716$0$98400$14726298@news.sunsite.dk...
> > Jeg bruger en tekstbox i et lille program.
> > Der må kun være tal i.
| |
|
|