• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

probleem met userform

Status
Niet open voor verdere reacties.

Peenvogel

Gebruiker
Lid geworden
5 mei 2015
Berichten
129
goedemorgen.
Ik heb een userform gemaakt waarin ik onder andere een factuurbedrag uiteindelijk overbreng naar het excelblad.
Bij mij gaat het goed, excel 2010.
Iemand anders die het excelspreadsheet gebruikt, excel 2016 met azerty klavier instelling (meest gebruikt in België en Frankrijk,
krijgt op de plaats waar bij mij een punt wordt getoond, een spatie in het getal te zien.
In de userform heb ik aan de textbox ook al het format aangegeven, de cel waar hij terechtkomt ook met dat format opgemaakt.
Bijvoorbeeld: Als ik userform invul en transfereer naar excel:
komt er € 10.000,00 in de cel te staan.
De andere gebruiker doet hetzelfde en krijgt 10 000 te zien.
Door die spatie herkennen de andere formules op het werkblad dat bedrag niet meer en komt er overal #Waarde te staan.
Herkent iemand dit probleem en weet men wat er aan te doen?
Ik kan het zelf niet reproduceren, omdat het bij mij goed werkt.
 
Het in de userform ingegeven getal moet je zonder opmaak in een cel zetten en de opmaak ervan in de eigenschappen van de cel instellen.
Dat is het enige dat ik er zonder voorbeeld document van kan zeggen.
 
Hoi Peenvogel,
Ga eens naar instellingen -> Land & Regio -> Meer instellingen.
Vergelijk daar het decimaalteken en het cijfergroeperingssymbool tussen uw pc,laptop en de pc, laptop waar het fout gaat.
Ik ben vrij zeker dat het cijfergroeperingssymbool bij jou een punt is en bij de andere een spatie. (de spatie is normaal gezien voor de Waalse azerty versie, de Vlaamse versie werkt ook met een punt)
 
Hoi peenvogel,
Je hebt de vraag op opgelost gezet.
Om in de spirit van het forum te blijven mogen we ook de oplossing weten zodoende dat andere forumleden met een gelijkende vraag misschien verder kunnen met uw oplossing.
 
Hoi gast0660.
Ik heb in de userform
Code:
Application.UseSystemSeparators
toegevoegd.
Zelfs dat mocht niet baten, ik heb het eerlijk gezegd opgegeven. Ik zou niet meer weten wat ik verder
nog kan doen om die spatie weg te halen, als er een waarde wordt ingevuld in de userform.
De cel waar die waarde naar toe getransfereerd wordt blijft bij de andere gebruiker een spatie in het getal weergeven op de plaats
van het duizendtal waar bij mij gewoon een punt staat.
 
Probeer het zo eens.

Code:
[a1] = format(textbox1,"currency")
 
Goedemorgen Jan Karel.
Het artikel op die website is inderdaad zeer leerzaam.
Ik moet dus de usesystemseparators juist uitzetten en de locale settings omzeilen via de beschreven functie.
Ik zal deze functie hier onder in code neerzetten voor eventuele andere geïnteresseerden.

Code:
Function WRSToOverride(ByVal sNumber As String) As String

' *****************************************************

' *

' * Function Name:   WRSToOverride

' *

' * Input:           sNumber - a string containing a WRS-formatted number

' *

' * Output:          Returns the string using Excel's override formatting

' *

' * Purpose:         Convert between WRS and Excel's number formats

' *

' *****************************************************

 

  

    Dim sWRS As String, sWRSThousand As String, sWRSDecimal As String

    Dim sXLThousand As String, sXLDecimal As String

    

    'Only do for Excel 2002 and greater

    If Val(Application.Version) >= 10 Then

    

        'Only do if the user is not using System Separators

        If Not Application.UseSystemSeparators Then

        

            'Get the separators used by the Windows Regional Settings

            sWRS = Format(1000, "#,##0.00")

            sWRSThousand = Mid(sWRS, 2, 1)

            sWRSDecimal = Mid(sWRS, 6, 1)

            

            'Get the override separators used by Excel

            sXLThousand = Application.ThousandsSeparator

            sXLDecimal = Application.DecimalSeparator

            

            'Swap from WRS' to Excel's separators

            sNumber = Replace(sNumber, sWRSThousand, vbTab)

            sNumber = Replace(sNumber, sWRSDecimal, sXLDecimal)

            sNumber = Replace(sNumber, vbTab, sXLThousand)

        End If

    End If

    

    'Return the comverted string

    WRSToOverride = sNumber

    

End Function
 
Laatst bewerkt:
Dan lijkt me de toevoeging van 1 regel code, voordat je gegevens naar het werkblad schrijft voldoende:

Code:
   Application.ThousandsSeparator = "."
 
Goedemorgen.
Ik heb vorige week het probleem aangekaart van de weergave een spatie als duizendtal separator,
waarin een aantal suggesties werd gedaan om een oplossing te krijgen.
Ik heb op aanraden van Jan Karel Pieterse het artikel gelezen, dat zeer waarschijnlijk de oplossing vormt.
Mijn kennis schiet echter tekort om dit te programmeren. Het artikel staat in de link,hierboven in de reactie van Jan Karel.
Ik heb een formulier gemaakt waarmee je een bedrag vanuit het formulier naar het Excel werkblad overbrengt.
Het probleem is dus dat bij een gebruiker vanwege waarschijnlijk zijn toetsenbordinstelling in het bedrag een spatie komt.
Bv 7000 wordt in het formulier ingevuld en hij krijgt 7 000 te zien in het Excel werkblad
na overbrenging van het getal vanuit het formulier naar het werkblad.
In het artikel wordt ingegaan hoe bepaalde instellingen van een gebruiker dit probleem kan veroorzaken.
Mijn vraag is: kan iemand mij in het bijgevoegde excelwerkblad de code leveren die die instelling van een gebruiker omzeilt
en Excel de bij ons gebruikelijke weergave van een punt voor de duizendtallen en een komma voor de decimalen levert.
Excel kan met deze separators wel verder rekenen, maar niet met een spatie in de waarde.
 

Bijlagen

  • test.xlsm
    21,8 KB · Weergaven: 48
Laatst bewerkt:
#7 ook getest?
 
Goedemiddag Harry.
Ja, ik heb de suggesties allemaal uitgetest. Allen zonder resultaat.
Ik heb nu alles onopgemaakt gelaten in het voorbeeldbestand.
Als de benodigde code inderdaad de toetsenbordinstelling omzeilt, komt het daarna goed met de celeigenschap (denk ik, hoop ik?)
 
Zolang er in het invoervak een geldig getal is ingevoerd kan je als volgt dat getal in de cel krijgen:

Code:
Private Sub CmdButton_Transferbedrag_Click()
    Dim ws As Worksheet
    Set ws = Worksheets("Blad1")
    If Trim(Me.TextBox_bedrag.Value) = "" Then
        Me.TextBox_bedrag.SetFocus
        MsgBox "Vul het formulier helemaal in"
        Exit Sub
    ElseIf Not IsNumeric(TextBox_bedrag.Value) Then
        MsgBox "Geen geldig bedrag ingevoerd"
        Exit Sub
    End If

    Set myRange = Range("A2")
    myRange.Value = CDbl(Me.TextBox_bedrag.Value)
    Me.TextBox_bedrag.Value = ""
End Sub
 
Goedemorgen.
Bedankt, Jan Karel. Ook dat ga ik weer proberen.
Ik ben geveld door de griep, dus daarom mijn verlate reactie.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan