Avatar billede sasso Novice
03. juni 2007 - 14:25 Der er 17 kommentarer og
2 løsninger

Point til Koppelborg

Tak for ekstra hjælp i form af VB-programmering. :o)
Sasso
Avatar billede sasso Novice
03. juni 2007 - 14:26 #1
Koppelgaard. Undskyld... :o)
Avatar billede keysersoze Ekspert
03. juni 2007 - 14:29 #2
hvilket spørgsmål refererer dette til?
Avatar billede sasso Novice
03. juni 2007 - 14:35 #3
Åh, sorry: http://www.eksperten.dk/spm/780948.
Spørgsmålet er besvaret fuldt ud tilfredsstillende, og Koppelgaard har givet ekstra hjælp.
Avatar billede keysersoze Ekspert
03. juni 2007 - 16:02 #4
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 :(
Avatar billede sasso Novice
03. juni 2007 - 17:31 #5
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.
Avatar billede vejmand Juniormester
03. juni 2007 - 17:42 #6
http://www.eksperten.dk/regler.phtml

Citat: Det er ikke tilladt at:

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.

Det burde ikke kunne misforstås.......
Avatar billede koppelgaard Praktikant
03. juni 2007 - 18:04 #7
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
       
       
    End If
End Sub
Avatar billede keysersoze Ekspert
03. juni 2007 - 18:09 #8
der skal såmen ikke andet til at end sasso selv besvarer og tager point for dette spm :)
Avatar billede koppelgaard Praktikant
03. juni 2007 - 18:42 #9
Gør hellere det Sasso.
Det sidste jeg ønsker, er at blive upopulær på eksperten!
Den kan jeg ikke undvære.

Koppelgaard
Avatar billede sasso Novice
03. juni 2007 - 20:33 #10
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!
Avatar billede johnstigers Seniormester
03. juni 2007 - 21:15 #11
GG - vi kan alle klokke i det ;)
Husk at acceptere eget svar.s
Avatar billede vejmand Juniormester
03. juni 2007 - 21:59 #12
Selvfølgelig må du give de 140 til koppelgaard, så overstiger du jo ikke de 200 point pr. spørgsmål.  :-)
Avatar billede sasso Novice
03. juni 2007 - 23:40 #13
Takker for venlig assistance. :o) Nu skal jeg så lige have et svar fra Koppelgaard. Så får vi lukket dette emne. Sov godt allesammen.
/sasso
Avatar billede koppelgaard Praktikant
04. juni 2007 - 08:25 #14
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)
         
        End If
       
       
    End If
End Sub
Avatar billede koppelgaard Praktikant
04. juni 2007 - 12:12 #15
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 ?
Avatar billede vejmand Juniormester
04. juni 2007 - 12:23 #16
koppelgaard >> Nope, alt er i den skønneste orden. :-)
Du har fået 60 point her: http://www.eksperten.dk/spm/780948
Og 140 point her: http://www.eksperten.dk/spm/781474
Avatar billede koppelgaard Praktikant
04. juni 2007 - 13:49 #17
Nå men det var dejligt - så havde jeg bare flere point i forvejen, end jeg troede.

Michael
Avatar billede koppelgaard Praktikant
04. juni 2007 - 18:34 #18
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
     
     
    End If
End Sub
Michael
Avatar billede koppelgaard Praktikant
04. juni 2007 - 21:54 #19
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
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
Kategori
Computerworld tilbyder specialiserede kurser i database-management

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