TextBox formatteren naar nummers

Status
Niet open voor verdere reacties.
Ik ben niet ontevreden over:

Code:
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    If KeyAscii < 48 Or KeyAscii > 58 Then KeyAscii = 0
End Sub
 
ik zou dan:
Code:
Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If Shift = 2 Then KeyCode = 0
End Sub

erbij zetten om het plakken van niet numerieke waarden ook te ondervangen (of eventueel alles bij elkaar onder het Keydown event zetten)
 
@E v R

Ik wachtte op HSV, die zou aantonen dat je met plakken er toch nog ongerechtigheden aan zou kunnen toevoegen.

Ik had eerder deze in gedachten:

Code:
Private Sub TextBox1_BeforeDropOrPaste(ByVal Cancel As MSForms.ReturnBoolean, ByVal Action As MSForms.fmAction, ByVal Data As MSForms.DataObject, ByVal X As Single, ByVal Y As Single, ByVal Effect As MSForms.ReturnEffect, ByVal Shift As Integer)
  If Action = 2 Then Cancel = True
End Sub
 
Met mijn voorbeeld uit #19 heb je naar Drag-Drop en/of Paste geen omkijken.
Feit is wel dat dit draadje leuke dingen oplevert :D
 
@Ed kopieer eens iets buiten Excel en plak dan in de textbox (met code uit #19) ;)

Mijn voorkeur gaat uit naar de optie van snb (plus uitbreiding) , die houdt de verkeerde invoer tegen, middels change haal je de verkeerde invoer weer weg en dat vind ik net iets minder mooi
 
Dat heb ik geprobeerd en blijft bij mij goed werken.
Maar mijn voorkeur gaat ook uit naar de oplossing van snb :)
Zoals wel vaker ;)
 
Hi Ed,
ik heb jouw alleenCijfers sub in een module geplaatst maar dan krijg ik een undefined sub melding als ik een letter in de textbox invul. Ik denk dat de me. in jouw code niet naar mijn userform1 wijst maar hoe maak je zoiets algemeen ?
 
alleencijfers ook plaatsen in het codegedeelte van het userform

@Ed dat plakken gaat nu wel/ook bij mij goed :rolleyes:
 
Als je de Sub AlleenCijfers in een module wilt plaatsen, doe dan dit.
Achter het Userform:
Code:
Private Sub TextBox1_Change()
    AlleenCijfers Me.ActiveControl
End Sub

En dit in een module:
Code:
Sub AlleenCijfers(ctrl As Control)
    With ctrl
        pos = .SelStart
        If pos > 0 Then
            If Not IsNumeric(Mid(.Text, .SelStart, 1)) Then
                .Text = Left(.Text, pos - 1) & Mid(.Text, pos + 1)
                .SelStart = pos - 1
            End If
        End If
    End With
End Sub
 
Laatst bewerkt:
Ed, perfectomenta, weer wat bijgeleerd, bedankt

Eric, ik wou die module graag benaderbaar hebben voor al mijn userforms.

Er bestaat toch ook zoiets als een module die benaderbaar is voor al je excel workbooks? Dit is wel een ideale functie om zoiets algemeen in te zetten bij textvelden met alleen cijfers of alleen alfabet.
 
Zo'n module kan je ook zelf maken. Daar zijn meerdere methoden voor. Mijn voorkeur gaat uit naar een invoegtoepassing. Je maakt je VBA project, slaat deze op als .xlam (Excel-invoegtoepassing) en voegt deze dan, na afsluiten en openen van Excel, via de Opties aan Excel toe. Alles wat je in je VBA project hebt gemaakt is nu beschikbaar in ieder bestaand en nieuw Excel document en deze hoeven niet persé als document met macro's te worden opgeslagen.

Zie ook:
http://www.jkp-ads.com/Articles/buildexceladdin06nl.asp
 
Hi Ed , hardstikke interessant artikel, daar ga ik zeker wat mee hobbien, bedankt.
 
@E v R

Ik wachtte op HSV,

Ik mag nog niet stoppen met werken van mijn vrouw (ook nog niet de gerechtigde leeftijd trouwens). :d
Kan het alleen een beetje volgen via de smartphone.

In alle versies kon je na een paar cijfers terug met de pijltjestoets en dan alleen de letters 'd' en 'e' invullen.
De eerste versie van @snb gaf direct een foutmelding.
Daar heb ik maar op voortgeborduurd met het resultaat in #17 (werkt volgens mijn bevindingen prima).
Daarna kwam @edmoor met een verbeterde versie die ook prima werkt.

Ik ben ook zeker niet ontevreden over de code uit #21 van @snb (mooi compact).

Die moet maar een plekje krijgen in het archief zodat ik het wiel niet opnieuw hoef uitvinden.
 
Laatst bewerkt:
Die moet maar een plekje krijgen in het archief zodat ik het wiel niet opnieuw hoef uitvinden.

Dat bedoelde ik met de laatste regel in #25 :)
 
Juist; Beetje meer van zulk soort vragen, blijft het forum ook interessant. :d
 
Hi Ed , hardstikke interessant artikel, daar ga ik zeker wat mee hobbien, bedankt.

Ik heb een tijdje geleden een aardig voorbeeld gemaakt voor een vraag hier. In dit voorbeeld maakt de invoegtoepassing tevens gebruik van waarden in het document. Dus bij deze de invoegtoepassing (MST.xlam) en het document:
Bekijk bijlage MST.zip

Plaats het .xlam document waar je wilt en voeg deze aan Excel toe.
Open dan het bestand MSTtest.xlsx en kijk in het menu naar de optie Marketing Selection Tool.
Je kan zelf de code van het MST project inzien, het wachtwoord is: abcMSTcba

Voor het bekijken van de HTML code in de .xlam heb je de CustomUI Editor nodig:
http://openxmldeveloper.org/blog/b/openxmldeveloper/archive/2009/08/06/7293.aspx
 
Laatst bewerkt:
Dat soort dingen komt het inderdaad op neer. In #38 staat dus een voorbeeld van een addin (invoegtoepassing).
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan