Avatar billede acw Nybegynder
24. oktober 2003 - 10:22 Der er 11 kommentarer og
1 løsning

afrund i vba

hej.

jeg har læst lidt på de andre svar der findes til 'afrund', men ingen af dem løser problemet med at det afrundede tal skal skrives i cellen hvor man skriver tallet.

så lad venligst være med at skrive =AFRUND(A1;0,5) (eksempelvis)

Formoder det er nemmest at gøre i VBA, men hvis der findes en anden metode...
Avatar billede pegasus72 Nybegynder
24. oktober 2003 - 10:26 #1
Kan du ikke bare formattere den/de pågældende celler til at afrunde?
Avatar billede acw Nybegynder
24. oktober 2003 - 10:26 #2
jeg har prøvet at lege med denne her, men det afrunder kun antallet af decimaler:
_________________________________________________________________________

Private Sub Worksheet_Change(ByVal Target As Range)

If Not Intersect(Target, Range("F9:F38")) Is Nothing Then
        Application.EnableEvents = False
        For Each cell In Target
        cell.Value = Round(cell.Value, 1)
        Next
        Application.EnableEvents = True
    End If

End Sub
Avatar billede kabbak Professor
24. oktober 2003 - 10:26 #3
Private Sub Worksheet_Change(ByVal Target As Range)
Target = Round(Target, 2)
End Sub
Avatar billede acw Nybegynder
24. oktober 2003 - 10:29 #4
der skal afrundes til nærmeste 0,5
Avatar billede bak Forsker
24. oktober 2003 - 11:00 #5
cell.Value = Round(cell.Value * 2, 0) / 2
Avatar billede jkrons Professor
24. oktober 2003 - 11:24 #6
Eller

Target = WorksheetFunction.Round(Target / 0.5, 0) * 0.5
Avatar billede oyejo Nybegynder
24. oktober 2003 - 11:44 #7
bak-> kan du forklare en "nybørjare" litt nærmere?
Jeg skjønner hvor koden skal stå, men hvordan få man definert target.
Avatar billede bak Forsker
24. oktober 2003 - 12:17 #8
Koden skal være i Arkets eget kodemodul.
Target er cellen man har ændret i.
Hvis Target er indenfor Range("F9:F38") skal der udføres en afrunding


Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("F9:F38")) Is Nothing Then
        Application.EnableEvents = False
        Target.Value = Round(cell.Value * 2, 0) / 2
        Application.EnableEvents = True
End Sub
Avatar billede oyejo Nybegynder
24. oktober 2003 - 12:27 #9
bak-> Hva du kan, takker så mye :-)
Oppretter en 15 pointer.
Avatar billede acw Nybegynder
24. oktober 2003 - 12:33 #10
bak jeg kan se du var først med svaret, så 15 points til dig...svar :-)
Avatar billede bak Forsker
24. oktober 2003 - 12:34 #11
ok :-)
Avatar billede oyejo Nybegynder
24. oktober 2003 - 13:01 #12
bak-> Hvis man ikke  benytter If Not Intersect(.....
men bare:  Target.Value = Round(cell.Value * 2, 0) / 2
Gjelder formateringen da for hele arket?
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
Excel kurser for alle niveauer og behov – find det kursus, der passer til dig

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