verplichte ingave teksbox

Status
Niet open voor verdere reacties.
Is deze niet van jouw hand @edmoor? die ik toentertijd iets heb ingekort?
Nu een aanpassing er op.
Code:
Private Sub TextBox1_Change()
UserForm1.Label1.Visible = True
T = "[0-9][(,)][0-9][0-9]"
    With TextBox1
     .Text = Replace(.Text, ".", ",")
      L = Len(.Text)
        If L > 0 And Not .Text Like Left(T, L * 5) Then .Text = Left(.Text, L - 1)
    End With
End Sub
 
Ik kan me niet herinneren dat die van mij zou komen.
 
Dan laat ik het maar bij een poging.
Dit is toch niet vanwege de werking? :D
 
Hahaha! Nee hoor. Het ziet er op zich goed uit en ik zie wel wat hij doet. Maar een echte maskering is het niet in de zin van #.##
 
Het lijkt erop dat jullie de Ts dat hebben aangeraden, maar ik kan dat niet opmaken uit de OP.
Lees het nog maar eens ipv dat ik het citeer.
 
Ik heb hem niet getest en kan het best mis hebben natuurlijk.
 
Ik bedoel de openingspost Ed (lees die nog eens).
Maar ik kan het ook mis hebben natuurlijk.
 
... maar helaas krijg ik een foutmelding.
En ik weet niet waar ik de oplossing zoeken moet
Als je de code letterlijk had overgenomen, dan had je gezien dat hij wel degelijk werkt. Maar jij hebt de declaratie van de variabelen binnen de functie gezet en niet erboven. De variabelen moeten dus algemeen worden gedeclareerd.
 
Ik bedoel de openingspost Ed (lees die nog eens).
Maar ik kan het ook mis hebben natuurlijk.
Hij doet het dus wel. En nu begint me weer iets te dagen. Die zou in de basis best van mij kunnen komen, maar zoals je hem hebt geplaatst is 'ie van jou en doet precies wat TS vroeg, maar dan ook uitsluitend #,##
Werkt wel prima :D
 
Als je de code letterlijk had overgenomen, dan had je gezien dat hij wel degelijk werkt.

Ik vind 'm er mooi uit zien en ga die binnenkort ook eens testen :)
 
De code van HSV stopt bij één teken, en dat is toch echt niet wat TS volgens mij bedoelt...

Ik heb de mijne nog aangepast zodat hij alleen cijfers accepteert. Altijd goed om een alternatief achter de hand te hebben :) En ik heb een masker :D

Code:
Private Sub TextBox1_Change()

    If IsNumeric(Right(TextBox1.Text, 2)) And Len(TextBox1.Text) > 4 Then
        TextBox1.Text = Left(TextBox1.Text, 4)
    ElseIf Not IsNumeric(Replace(Replace(TextBox1.Text, "#", ""), ".", "")) Then
        TextBox1.Text = ""
        Exit Sub
    Else
        mQ = TextBox1.SelStart
        MyString = TextBox1.Text
        pos = InStr(1, MyString, "#")
        If pos > 0 Then
            NewString = Left(MyString, pos - 1)
        Else
            NewString = MyString
         End If
        If Len(NewString) < 5 Then
            TextBox1.Text = NewString & Right(Mask, Len(Mask) - Len(NewString))
            TextBox1.SelStart = Len(NewString)
        End If
    End If
    If Len(TextBox1.Text) > 4 Then
        TextBox1.Text = Left(TextBox1.Text, 4)
    End If
End Sub
 
Bij die van HSV moet je inderdaad zelf even een . of een , intikken. Er verschijnt dan een , en kan je nog twee cijfers intikken. Maar ik ben erg benieuwd naar de werking van jouw oplossing dus ga ik zeker naar kijken :)
 
@Octafish,

Ik ben uitgegaan van het numerieke gedeelte van je toetsenbord.
Dat is een punt in de textbox, die ik in de code vervang door een komma.
Lijkt me handiger dan een komma te typen.
 
Dat kan ook, ik heb het niet getest; zal een kleine aanpassing zijn in mijn code.
 
Hoi.

Mooi forum waar sommige elkaar gaan "uitdagen" om tot een betere oplossing te komen :)
Ik heb met veel respect de berichten gelezen, maar ik snap er de ballen van.....

Ik weet wel dat ik met de laatste code van "OctaFish" een foutmelding krijg.
De eerste (die uit 4 stukken bestaat) werkt wel.
Nogmaals: Ik heb groot respect voor de antwoorden die hier gegeven zijn op mijn vraag :thumb:

Jos
 
Kijk eens of deze het wel doet. In beginsel dezelfde code overigens, maar wie weet.
 

Bijlagen

  • Invoermasker Tekstvak.xlsm
    23,4 KB · Weergaven: 22
OctaFish

De bron zal anders zijn, maar de werking lijkt hetzelfde als de eerste.
Nou eens gaan bekijken of ik dit in mijn "project" kan zetten.
 
Hierbij mag jezelf weten of je de komma typt.
Code:
Private Sub TextBox1_Change()
UserForm1.Label1.Visible = True
T = "[0-9][(,)][0-9][0-9]" '
    With TextBox1
     L = Len(.Text)
        If L > 1 And Not .Text Like Left(T, L * 5) Then .Text = Left(.Text, L - 1)
        If L = 2 And Not Right(.Text, 1) = "," Then .Text = .Text & ","
        
    End With
End Sub
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan