Excel Forum - Porady, Pomoc,  Excel Help, Excel FAQ Strona Główna
 FAQ  RegulaminRegulamin  Szukaj   Użytkownicy   Grupy   Rejestracja   Profil   Twoje wiadomości   Zaloguj 


Poprzedni temat «» Następny temat
ID tematu: 26898 Skopiuj do schowka 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ć. :lol:
"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 Skopiuj do schowka
 
 

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 Skopiuj do schowka
 
 

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 Skopiuj do schowka
 
 
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ę :beer i życzę leszcze lepszych pomysłów w Nowym Roku.
pozdrawiam
Janusz
ID posta: 142439 Skopiuj do schowka
 
 

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 Skopiuj do schowka
 
 
Johan 
Exceloholic


Pomógł: 80 razy
Posty: 235
Wysłany: 2011-12-30, 23:11   

master_mix napisał/a:
i tutaj ;-)
http://www.excelforum.pl/...box-vt26056.htm

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 Skopiuj do schowka
 
 

EXCELFORUM.pl POLECA - Bezplatne triki prosto na skrzynke email

Wyświetl posty z ostatnich:   
Odpowiedz do tematu
Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Nie możesz załączać plików na tym forum
Możesz ściągać załączniki na tym forum
Dodaj temat do Ulubionych
Wersja do druku

Skocz do:  

Powered by phpBB modified by Przemo © 2003 phpBB Group
Theme xandgreen created by spleen& Programosy modified v0.3 by warna
Opieka techniczna www.marketingNET.pl

Archiwum