Format textbox

  • Onderwerp starter Onderwerp starter gst
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

gst

Gebruiker
Lid geworden
5 jan 2010
Berichten
125
Besturingssysteem
64-bits besturingssysteem, x64-processor
Office versie
Microsoft Office LTSC Professional Plus 2021
Geacht forum,

In een vba fomulier staan een aantal textboxen die gevuld zijn met getallen die staan voor een bepaalt bedrag.

Op de volgende geprogrammeerde wijze gaat het goed op mijn pc

Me("txtPrijsPerEenheid_" & i).Value = Format(Me("txtPrijsPerEenheid_" & i), "#.00")
Me("txtGeschatBedrag_" & i).Value = Format(Me("txtGeschatBedrag_" & i), "#.00")
Me("txtDefinitiefSubTotaalBedrag_" & i).Value = Format(Me("txtDefinitiefSubTotaalBedrag_" & i), "#.00")

Wanneer het programma gestart wordt op een andere pc, gaat het niet goed.
De ene pc geeft een komma i.p.v. van een punt, op een nog anderen pc schuift de komma twee posities naar rechts.
Voorbeeld => de correcte waarde op mijn pc 1126.30 wordt bij de ene pc 1126,00 en bij een andere pc 112630,00

Ik heb al van alles geprobeerd maar ik kom er niet uit.
Ligt het aan een bepaalde instelling van Exel bij ieder persoonlijk?
Het is niet de bedoeling dat de instelling bij een andere pc (gebruiker) gaat wijzigen.

Weet iemand een oplossing?
 
Laatst bewerkt:
Misschien dat het niet aan de macro ligt maar aan excel?

Kijk en vergelijk eens de celeigenschappen. Verander het van standaard naar tekst, misschien dat dat je probleem verhelpt.
 
Dat zal liggen aan de instellingen in Windows waar het formaat van getallen wordt bepaald. Configuratiescherm dan Land /regio en daarna de knop Meer instellingen: (Windows 8)
LandRegio.jpg

DIe zullen verschillen tussen beide PC's. Kijk daarvoor naar de instelling van Decimaalteken en Cijfergroeperingssymbool.
 
Laatst bewerkt:
Beide suggesties getest. Helaas geen resultaat.
De Land/regio instelling is bij mijn collega exact gelijk aan die van mijn pc.

Extra info
Om te voorkomen dat ingestelde opties bij een andere gebruiker wijzigen door gebruik van mijn programma, vraag ik van te voren af hoe de instelling van opies in excel is ingesteld. zie voorbeeld hieronder. In workbook open stel ik van te voren een aantal dingen in. Hiermee zou toch bij een ieder die dit programma gebruikt, dezelfde instelling en uitlezing gelijk moeten worden?
Alle gebruikers gebruiken Windows 7 Proffesional Service Pack1 64 bit - Office 2013


If Application.UseSystemSeparators = True Then
blnApplicationUseSystemSeparators = True
Application.UseSystemSeparators = False
End If

With Application
.DecimalSeparator = "."
.ThousandsSeparator = "."
.UseSystemSeparators = False
End With

ActiveWorkbook.Date1904 = True

frmStartmenu.Show
Application.ScreenUpdating = False
Application.DisplayAlerts = False

End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)

If blnApplicationUseSystemSeparators = True Then
Application.UseSystemSeparators = True
End If

If myFlg = True Then Exit Sub
Application.DisplayAlerts = False
Cancel = True

End Sub
 
Plaats de hele Sub, zo is er niet voldoende aan te zien. Plaats het tevens in code tags.
Is er een reden om de 1904 datums te gebruiken?
Om welke reden manipuleer je zelf de decimal point en thousand separator?
 
Ik weet niet zeker meer of de optie 1904 datums wel of niet in deze toepassing noodzakelijk was (het is al een tijdje geleden dat ik met dit programma begonnen ben). In andere toepassingen was deze optie wel noodzakelijk en vaak pas ik het standaard toe.

Ik pas de decimal point en thousand separator toe, om altijd dezelfde uitlezing te krijgen welke niet afhankelijk is van de instelling van opties van excel.

Code:
Option Explicit

Private Sub Workbook_Open()
 
 SheetsAanzetten
 
 S2.Activate
 S2.Unprotect
 S2.Range("S2_rij_Blanco").Select
    Selection.RowHeight = 10
    ActiveWindow.FreezePanes = True
 S2.[A1].Select
 S2.Protect

 S1.Activate
 S1.[A1].Select
 S1.[L15].Select
 S1.ScrollArea = "L15"
 S1.Protect
 SheetsUitzetten

'-------------------------------------------------------------------------

If Application.UseSystemSeparators = True Then
   blnApplicationUseSystemSeparators = True
   Application.UseSystemSeparators = False
End If

   With Application
     .DecimalSeparator = "."
     .ThousandsSeparator = "."
     .UseSystemSeparators = False
   End With

 ActiveWorkbook.Date1904 = True

 frmStartmenu.Show
 Application.ScreenUpdating = False
 Application.DisplayAlerts = False
 
End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)
 
If blnApplicationUseSystemSeparators = True Then
   Application.UseSystemSeparators = True
End If
 
 If myFlg = True Then Exit Sub
 Application.DisplayAlerts = False
 Cancel = True

End Sub

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
 If Not OutPut = vbYes Then
   MsgBox "Opslaan alleen mogelijk met knop.", vbCritical, "Gebruik knop"
 End If
 Cancel = True
End Sub
 
In dit geval gaat het om VBA en die maakt altijd gebruik van de Windows instelling wanneer het gaat om het vullen van VBA objecten. Lat het dus een achterwege en kijk dan of het op beide system gelijk is. Dat zou moeten als de Windows instelling ervoor op beide PC's gelijk is.
 
Het volgende uitgeschakeld echter geen resultaat.

Code:
' With Application
'    .DecimalSeparator = "."
'    .ThousandsSeparator = "."
'    .UseSystemSeparators = False
' End With
'
' ActiveWorkbook.Date1904 = True


Het valt mij op dat wanneer ik in een textbox waarden in tik op de pc bij mijn collega, dat er voor 12.25 => 1225,00 komt te staan.
Tik ik in: 12,25 dan gaat het goed.
Wanneer ik bij mij 12,25 in tik, dan krijg ik de melding dat er alleen cijfers ingevuld mogen worden.
Het heeft dus volgens mij te maken met een instelling punt of komma voor decimaalwaarden.
Maar waar stel ik in dat er alleen maar punt of alleen maar een komma gebruikt mag worden.
Daarbij dat iemands pc voor zijn/haar eigen gebruik daarna niet verstoord is geraakt.
 
Je kan beter even je document plaatsen zodat we naar de code kunnen kijken.
 
Dit zou ik wel willen doen maar het document is vrij groot en bevat veel wachtwoorden en bedrijfsinformatie.
 
Waarom gebruik je voor decimaal en duizendtal hetzelfde teken? Lijkt mij erg lastig worden als je getallen wilt checken. Want dan heb je er geen komma's, maar alleen punten in staan.
 
Ik doe nog een poging...

Het ligt inderdaad aan landinstelling en decimal symbol van de pc.
Bestaat er een mogelijkheid om met VBA landinstelling en decimal symbol te controleren en deze te wijzigen?
Hiermee zou mijn toepassing op meerdere pc's met diverse landinstellingen kunnen werken zonder dat iemand dit eerst zelf moet aanpassen.
Ik heb veel gezocht maar tot nu toe niet echt iets kunnen vinden.
Ik zou het graag toe willen voegen bij ThisWorkbook zodat eerst gecontroleerd wordt wat de instelling is, en het daarna kan wijzigen indien nodig.
 
Je kan hier mee spelen:
Code:
Application.DecimalSeparator = "," 
Application.ThousandsSeparator = "." 
Application.UseSystemSeparators = False
 
En dat is de code die TS al in bericht #8 zelf had geprobeerd :).
 
Ok dan. Ik had inderdaad niet alles doorgelezen ;)
 
Dit heb ik al toegepast.
Pc landinstelling heeft daarna toch nog invloed op het resultaat!
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan