Avatar billede rigpig Nybegynder
26. september 2007 - 10:08 Der er 9 kommentarer og
1 løsning

VBA_Ved forkert seperator

Har lavet et program i VBA, som bliver brugt af Engelske og Skadinaviske brugere, problemet med at nogle bruger punktum som seperator, andre punktum, havde løst ved at programmet selv ændrede dette, nu efter en sikkerhedsopdatering af systemet, er dette ikke muligt, så nu leder jeg efter noget andet.
Problem: Hvis brugeren skriver f.eks 14.5 i en dialog box, så er resultatet der bruges i de videre beregninger f.eks -547878
Hvis brugeren skriver: 14,5 så er resutatet f.eks 0,7156 (som er det korrekte)
Det næst bedste jeg kan komme på, er at ved negativt resultat, kommer programmet op med en msg box som beder brugeren om at ændre seperator, nogle forslag til hvordan dette kan gøres ??
Det er lidt af en lappe løsning, men problemet er, at der er forskellige tastatur layout (region settings) på nogle af computerne på stedet.
Er der nogle der kan komme op med noget smart, vil jeg være meget taknemmelig.
På forhånd tak.
Peter
Avatar billede word-hajen Nybegynder
26. september 2007 - 17:18 #1
Er det kun ved indtastninger i en dialogboks, at problemet opstår? For så kunne du lave en replace på det indtastede, hvor du skifter . ud med , - kunne f.eks. være når brugeren forlader den tekstboks, der tastes i.

Textbox1 = Replace(Textbox1, ".", ",")
Avatar billede rigpig Nybegynder
26. september 2007 - 17:48 #2
Jeg gjorde det ved at en MsgBox gjorde opmærksom på at der skulle bruge komma seperator, samt selv ændrede punktum til komma, men efter en opgradering af et sikkerheds system, går den ikke længere, problemet er at der er forskellige computere på stedet med Skandinavisk og Engels opsætning, så problemet virker begge veje, det er noget rod.(Englænder ved Skandinavisk tastatur / Skandinav ved engelsk tastatur)
Indtastningen bruges til udregning af bouyacy af metal i vædske, denne udregning bruges så til videre udregninger i programmet, det er kritisk at udregningen passer.
Ved ar fremprovokere fejlen, kan jeg kun sige, at ved fejl seperator er tallet altid negativt.
Tak for dit indlæg.
Mvh
Peter
Avatar billede excelent Ekspert
26. september 2007 - 17:58 #3
Forekommer der tal med tusind sepperator, eller er alle tal <1000?
Avatar billede excelent Ekspert
26. september 2007 - 19:42 #4
Prøv denne testkode på maskiner med forskellige opsætning
min teori er at Application.DecimalSeparator konverterer
talseperator til lokale forhold.


Sub Seperator()

x = InputBox("Indtast tal ")

If InStr(1, x, ",") > 0 Then
x = CDec(Replace(x, ",", Application.DecimalSeparator))

Else

If InStr(1, x, ".") > 0 Then
x = CDec(Replace(x, ".", Application.DecimalSeparator))

End If
End If

[A1] = x

MsgBox x

End Sub
Avatar billede word-hajen Nybegynder
26. september 2007 - 22:36 #5
#rigpig -> Der er vel ikke noget til hinder for at skifte et punktum ud med et komma i en tekstboks? Det er jo ikke noget, man behøver at bede brugeren om, såfremt de altså kun taster decimalseparatoren og ikke tusindtalsseparatorer.
Avatar billede rigpig Nybegynder
26. september 2007 - 22:56 #6
Excelent
Til dit spørgsmål, tallet kan være fra 8,0 til 21,0 med en decimal.
Er blevet kaldt på arbejde, kan først teste dit forslag om ca. en uge, men ved at læse din kode, ser det lovende ud.
Jeg har en textbox hvor man skriver vædskevægten, derefter trykke på en knap, og bouyancy udregnes og vises i en anden textbox
Men det ser interessant ud, tester når det er muligt, tak.
Peter
Avatar billede rigpig Nybegynder
26. september 2007 - 23:11 #7
Word-hajen
Korrekt, det var også det jeg gjorde, men gjorde bare brugeren opmærksom på at det blev gjort, men efter 2 år, fik jeg pludselig en masse mails om, at programmet ikke længere virkede, på min PC var der ingen problemer, men på arbejds stederne, var det ikke længere muligt at taste decimal tal ind, fjernede jeg koden der automatisk satte korrekt seperator, virkede programmet igen, men så var risikoen, for fejl beregnnger jo til stede igen, ser ud til at sikkerheds niveauet ikke tillader at der pilles ved opsætningen.
Jeg skylder lige at sige, at programmet er et hobby project, ikke kommercielt, men bliver brugt af folkene på bore rigge til beregning af slitage på wire.
I må meget gerne fortsat komme med forslag, hvis i har tid og lyst.
Tak for hjælpen
Peter
Avatar billede excelent Ekspert
30. december 2007 - 14:27 #8
hvordan går det
Avatar billede rigpig Nybegynder
30. december 2007 - 16:56 #9
Hej excelent
Det endte med at jeg slettede alt i programmet med automatisk indsætning af komma seperator, så virked programmet igen, men brugeren må selv se at resultatet er korrekt, ikke optimalt.
Er i gang med at lave programmet i C# rendte ind i nøjagtig de samme problemer, computere der er opsat til engelsk og skandinavisk tastatur, men hvis forkert seperator bruges, er resutatet altid i minus, så jeg vil lave en check på dette, og så komme med en dialog box, der beder brugeren ændre seperator, tror det er det bedste, mangler så lige at finde ud af hvordan en streng checkes for minus !
Jeg kan måske bruge dit indlæg i anden sammenhæng, så du får dine velfortjente points, hvis du lige kan ryste en kode ud af ærmet angående søgning af minus tegn i en streng i VBA, må du meget gerne smide den her.
Tak for hjælpen.
Rigpig
Avatar billede excelent Ekspert
30. december 2007 - 18:02 #10
ok prøv :

If InStr([a1], "-") > 0 Then MsgBox ("Ja ( - ) findes i A1")
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester