ID tematu: 26898
 |
Ograniczenie wpisu do Text(Box) |
| Autor |
Wiadomość |
Johan
Exceloholic

Pomógł: 80 razy Posty: 235
|
Wysłany: 2011-12-29, 22:44 Ograniczenie wpisu do Text(Box)
|
|
|
Witam tęgie głowy.
Mam pewien problem, który z Waszą pomocą zapewne uda się rozwiązać.
"Wujek Google" pomógł mi znaleźć kod, który nie zezwala na wpisywanie liter do kontrolki TextBox | Kod: | Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
Select Case KeyCode
Case 48, 49, 50, 51, 52, 53, 54, 55, 56, 57
KeyCode = KeyCode
Case Else
KeyCode = 0
End Select
End Sub | Kod pięknie śmiga w Ex, ale niestety nie chce zadziałać w VB6.
W czym jest problem? |
|
 | ID posta:
142408
|
|
|
 |
|
EXCELFORUM.pl POLECA - Bezplatne triki prosto na skrzynke email
|
Albercik777
Excel Expert


Pomógł: 291 razy Posty: 616
|
Wysłany: 2011-12-29, 23:00
|
|
|
Sprawdź tutaj: MSDN - VB 6 - key down/up, VB 6 - textbox
Może pomoże - spójrz na deklaracje zdarzenia.
W kwestii skrócenia makra:
| Kod: | Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
Select Case KeyCode
Case 48 To 57
KeyCode = KeyCode
Case Else
KeyCode = 0
End Select
End Sub |
|
_________________ # Jeżeli istnieją 4 różne możliwości doprowadzenia programu do krachu i wszystkie 4 zablokujesz, wtedy użytkownik znajdzie piątą metodę. Edward Murphy
Pomóż nam sobie pomóc
Co to jest makro? Jak je uruchomić, do czego służy? |
|
 | ID posta:
142412
|
|
|
 |
|
EXCELFORUM.pl POLECA - Bezplatne triki prosto na skrzynke email
|
tkuchta1
Excel Expert


Pomógł: 1495 razy Posty: 2270
|
Wysłany: 2011-12-30, 08:19
|
|
|
działa przy KeyPress | Kod: | Private Sub Text1_KeyPress(KeyAscii As Integer)
Select Case KeyAscii
Case vbKey0 To vbKey9, vbKeyBack
Case Else: KeyAscii = 0
End Select
End Sub |
----------edit: 2011-12-30 08:37------------
Trzeba by się jeszcze zabezpieczyć przez sprytnym użyszkodniekiem przed wklejaniem do TextBoxa dowolnego tekstu:
tu: http://www.vb-helper.com/...rs_numbers.html
proponują żeby wyłączyć całe menu kontekstowe dla tego TextBoxa ale może wystarczy | Kod: | Private Sub Text1_Validate(Cancel As Boolean)
If Not IsNumeric(Me.Text1.Text) Then
MsgBox "To nie liczba!"
Me.Text1.Text = vbNullString
Cancel = True
End If
End Sub |
|
_________________
Tomek Moje Artykuły:
Algorytmy Sortujace, Wyrażenia Regularne,
Menadżer Funkcji NextNR, Unikaty
Moja Stronka
APoCoTenExcel
Ostatnia aktualizacja: 2012-03-17 |
|
 | ID posta:
142417
|
|
|
 |
Johan
Exceloholic

Pomógł: 80 razy Posty: 235
|
Wysłany: 2011-12-30, 12:04
|
|
|
Na Tęgie Głowy tego forum zawsze można liczyć. Kod Tomka zadziałał bez pudła.
Bardzo dziękuję i życzę leszcze lepszych pomysłów w Nowym Roku.
pozdrawiam
Janusz |
|
 | ID posta:
142439
|
|
|
 |
|
EXCELFORUM.pl POLECA - Bezplatne triki prosto na skrzynke email
|
master_mix
Excel Expert


Pomógł: 977 razy Posty: 1615
|
Wysłany: 2011-12-30, 14:23
|
|
|
i tutaj
http://www.excelforum.pl/...box-vt26056.htm |
_________________ ******************************************
Podejmę współpracę (pracę) w zakresie tworzenia aplikacji arkusza kalkulacyjnego z wykorzystaniem VBA.
Wrocław i okolice …lub zdalnie.
****************************************** |
|
 | ID posta:
142465
|
|
|
 |
Johan
Exceloholic

Pomógł: 80 razy Posty: 235
|
Wysłany: 2011-12-30, 23:11
|
|
|
To właśnie ten temat (no i oczywiście bieżące zadanko) skłonił mnie do stworzenia własnej maski kodu pocztowego i nr PESEL. Tyle tylko, że Twój pomysł jest dla mnie zbyt skomplikowany. Mój poziom wiedzy nie pozwala na ogarnięcie tego kodu, ale mam nadzieję, że to jest chwilowe.
A tak dla wiedzy innych forumowiczów kod wygląda następująco: | Kod: | Private Sub Text13_GotFocus()
If Text13 = "" Then Text13 = "__-___"
Text13.SelStart = 0
Text13.SelLength = 1
End Sub
Private Sub Text13_KeyPress(KeyAscii As Integer)
i = Len(Text13)
If Text13.SelStart > 5 Then
Select Case KeyAscii
Case vbKeyBack
Case Else: KeyAscii = 0
End Select
End If
Select Case KeyAscii
Case vbKey0 To vbKey9, vbKeyBack
Case Else: KeyAscii = 0
End Select
End Sub
Private Sub Text13_KeyUp(KeyCode As Integer, Shift As Integer)
j = Text13.SelStart
If j <> 0 Then
If KeyCode = vbKeyLeft Then
If j = 3 Then Text13.SelStart = j - 2
If j <> 3 Then Text13.SelStart = j - 1
Else
If KeyCode = vbKeyRight Then
'If j = 3 Then Text13.SelStart = j - 2
If j <> 3 Then Text13.SelStart = j - 1
Else
If j = 2 Then Text13.SelStart = 3
End If
End If
End If
Text13.SelLength = 1
End Sub | pomijam oczywiście deklaracje zmiennych, gdyż jest to wycinek większej całości. |
|
 | ID posta:
142535
|
|
|
 |
|
EXCELFORUM.pl POLECA - Bezplatne triki prosto na skrzynke email
|
|
|