Kan nu ikke se at der har været "ekstra hjælp" da der vel kun svares på hvad du spørger om - under alle omstændigheder må du i hvert fald ikke give mere end 200 point samlet for en løsning :(
Det kan jeg godt forstå, at du ikke kan se. Vi har mailet sammen privat, og Koppelgaard har løst et yderligere problem, som dækker et lidt mere avanceret poroblem. Jeg spørger ham lige, hvad han synes.
tildele point for en løsning, der ikke er tilgængelig for alle Eksperten.dk’s brugere.
tildele point for en opgave løst uden om Eksperten.dk (f.eks. opgaver løst via mail, ICQ eller telefon), eller blot et andet spørgsmål på Eksperten.dk (lovlig pointoverførsel undtaget). Citat slut.
Jeg er ked af at vi har overtrådt nogle regler. Men hvordan kommer jeg af med pointene igen ?? Og hvordan gør vi det godt igen?? Spørgsmålet 780948 var om man kunne undgå at indtastninger af data kunne ske med forkert decimalseperator.
Mit svar er
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) On Error Resume Next ' hvis der sker en fejl så spring videre i koden.
indtastning = Target 'Target er den celle, hvor der sker en ændring If Target <= 0 Then Exit Sub If IsNumeric(indtastning) Then 'System decimalseperator aflæses: sep = Application.International(xlDecimalSeparator)
If sep = "," Then sepStr = "komma" wrongSep = "." Else sepStr = "punktum" wrongSep = "," End If
If Not indtastning Like "*" & sep & "*" Then x = Int(indtastning) - indtastning If Int(indtastning) - indtastning <> 0 Or Right(indtastning, 1) = wrongSep Then MsgBox "Husk at bruge " + sepStr + ", når du taster tal", vbCritical 'cellens værdi overskrives med den korrekt værdi Target.Value = Replace(indtastning, wrongSep, sep) End If End If
Ups! Jeg må vedkende mig min manglende viden om reglerne. Jeg beklager meget, at jeg (og det er kun mig), har overtrådt reglerne. Må jeg fordele pointene, sådan at jeg får 60, og koppelgaard får de 140? På den måde har han fået 200 for løsningen, og det er vel inden for reglerne, ikke sandt? Ville det være okay? ...og vær rare at lade alle advarsler og fordømmelser regne ned over min ryg - ikke Koppelgaards. Det er mig, der er skurken her!
Her er en ny løsning på det spørgsmål, som I vist nu alle sammen har hørt om :-)
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) On Error Resume Next ' hvis der sker en fejl så spring videre i koden.
indtastning = Target.Text 'Target er den celle, hvor der sker en ændring
If IsNumeric(indtastning) Then 'System decimalseperator aflæses: sep = Application.International(xlDecimalSeparator) If sep = "," Then sepStr = "komma" wrongSep = "." Else sepStr = "punktum" wrongSep = "," End If
If Not indtastning Like "*" & sep & "*" Then MsgBox "Husk at bruge " + sepStr + ", når du taster tal", vbCritical 'cellens værdi overskrives med den korrekt værdi Target.Value = Replace(indtastning, wrongSep, sep)
Hej Sasso. Kan det passe at jeg på en eller anden måde har jeg nu fået endnu flere point, end jeg skulle have? Jeg tror, jeg efterhånden har fået 400 point for dette ene spørgsmål ?
Ovenstående løsning virker ikke hvis der er 0 decimaler. Der gør nedenstående forhåbentlig: Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) On Error Resume Next ' hvis der sker en fejl så spring videre i koden.
indtastning = Target.Text 'Target er den celle, hvor der sker en ændring
If IsNumeric(indtastning) Then 'System decimalseperator aflæses: sep = Application.International(xlDecimalSeparator) If sep = "," Then sepStr = "komma" wrongSep = "." Else sepStr = "punktum" wrongSep = "," End If
If Not indtastning Like "*" & sep & "*" Then If Int(indtastning) - indtastning <> 0 Or Right(indtastning, 1) = wrongSep Then MsgBox "Husk at bruge " + sepStr + ", når du taster tal", vbCritical 'cellens værdi overskrives med den korrekt værdi Target.Value = Replace(indtastning, wrongSep, sep) End If End If
Ny udgave som virker både med og uden decimaler: Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) On Error Resume Next ' hvis der sker en fejl så spring videre i koden.
indtastning = Target.Text 'Target er den celle, hvor der sker en ændring
If IsNumeric(indtastning) Then 'System decimalseperator aflæses: sep = Application.International(xlDecimalSeparator) If sep = "," Then sepStr = "komma" wrongSep = "." Else sepStr = "punktum" wrongSep = "," End If
If Not indtastning Like "*" & sep & "*" Then If Not indtastning Like "*" & wrongSep & "*" Then GoTo afslut MsgBox "Husk at bruge " + sepStr + ", når du taster tal", vbCritical 'cellens værdi overskrives med den korrekt værdi Target.Value = Replace(indtastning, wrongSep, sep)
End If End If afslut: End Sub
Synes godt om
Ny brugerNybegynder
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.