Hur gör man för att kontrollera om det skrivs en bokstav i en txtbox med hjälp av en if sats? kolla om bokstaven F finns med: mjo, men då är det just bokstaven f den säger till om, jag vill att den ska säga till när vilken bokstav som helst skrivs. Tänkte typ if txtBox1.Text = Char osv. Nja det där ex fick jag inte riktigt att funka. testa detta då. Om jag förstått rätt så vill du ha en textbox där användaren kan skriva in ett telefonnummer, dvs enbart siffror och "-" skall vara möjliga att skriva in, sedan vill du (efteråt?) se till så att bindestrecken försvinner (för att du skall läsa av textboxen och lagra värdet i en databas?) Vill du bara kontrollera om den innehåller något? Qezlot, ja det där funkade nästan ytmärkt, det blir små negativa effekter så som att man inte kan klistra in med ctrl+v och radera med backspace Ajdå... du ville kunna radera och klistra in text också!??! :-)kontroll av txtbox?
Sv: kontroll av txtbox?
kollaF = instr(text1.text,"f")
if kollaF > 0 then
msgbox "du skrev just F"
end if
OBS: skrev i luften men det borde vara så..=)
/BJ - den bäste ;DSv: kontroll av txtbox?
Sv: kontroll av txtbox?
Hej.
Menar du såhär?
<code>
Private Sub Text1_KeyPress(KeyAscii As Integer)
If Not IsNumeric(Chr(KeyAscii)) Then
MsgBox "Bokstaven " & Chr(KeyAscii)
End If
End Sub
</code>Sv: kontroll av txtbox?
Ungefär så här ska det se ut.
Private Sub txtNKey_Change()
Dim nkey As String
nkey = txtNKey.Text
If txtNKey.Text = (bokstav) Then
MsgBox ("Inga bokstäver tillåtna")
Else
txtNKey.Text = Replace(txtNKey.Text, "-", "")
End If
End SubSv: kontroll av txtbox?
Lite omständigt men ändå...
<code>
Private Sub txtNKey_Change()
Dim nkey As String
nkey = Right(txtNKey.Text, 1)
If Not IsNumeric(nkey) Then
MsgBox ("Inga bokstäver tillåtna")
txtNKey.Text = Left(txtNKey.Text, Len(txtNKey.Text) - 1)
txtNKey.SelStart = Len(txtNKey)
End If
End Sub
</code>
Fungerar inte när man klistrar in text bl.aSv: kontroll av txtbox?
Enklast är nog att hindra "ogiltiga" tecken direkt när användaren skriver in dessa - MEN du bör nog undvika att visa en MsgBox då, detta brukar mera reta upp användarna istället, förslagsvis avger du ett pip som i mitt exempel nedan eller visar upp ett felmeddelande några sekunder i en statusbar.
Vill du efteråt ta bort alla bindestreck så bör du göra detta när användaren trycker på en eventuell "spara"-knapp eller som i exemplet nedan vid validate-eventet. Skall du bara spara värdet i databasen är det bättre om du gör det när telefonnumret avläses...
Lycka till!
mvh Ronny
<code>
Option Explicit
Private Sub txtNKey_KeyPress(KeyAscii As Integer)
Call CheckInput(KeyAscii)
End Sub
Private Sub txtNKey_Validate(Cancel As Boolean)
Call ValidateTextBox
End Sub
Private Sub ValidateTextBox()
txtNKey.Text = Replace(txtNKey.Text, "-", "")
End Sub
Private Sub CheckInput(ByRef iriKeyAscii As Integer)
If Not IsNumeric(Chr(iriKeyAscii)) _
And Not Chr(iriKeyAscii) = "-" _
Then
'Call MsgBox("Inga bokstäver tillåtna")
Call Beep
iriKeyAscii = 0
End If
End Sub
</code>Sv: kontroll av txtbox?
<code>
If Len(Text1)>0 Then
'innehåller något
Else
'Tom
End If
</code>
/JohanSv: kontroll av txtbox?
Sv: kontroll av txtbox?
Som koden är skriven nu så tillåts enbart siffror eller bindestreck. Du skulle kunna utöka villkoret i testet så det ÄVEN tillåter Ctrl+V och BackSpace... om du istället för att sätta Ascii-koden till 0 när det blir fel skriver ut den med Debug.Print så ser du att Ctrl+V har kod = 22 och BackSpace har kod = 8. Det finns konstanter om du inte tycker om att använda hårdkodade siffror i villkoret, t ex 'vbKeyBack' som står för BackSpace och är fördefinierat av VB att ha värdet 8.
Istället för att använda KeyPress-eventet kan du istället använda KeyDown eller KeyUp, då kan du känna av Shift- och Ctrl- (och flera) tangenter mer noggrant.
Lycka till!
// Qezlot