Avatar billede perhol Seniormester
14. april 2010 - 15:49 Der er 5 kommentarer og
1 løsning

Smart momsberegning

Jeg har lavet et ark hvor der i området C4:C33 skal være priser inklusiv moms, i området D4:D33 priser eksklusiv moms.

Det skal være valgfrit om indtastning sker i kolonnen med moms eller kolonnen uden moms.

Det skulle gerne virke selv om man i første omgamg tager fejl (taster beløbet i forkert kolonne) og ændrer indtastningen til den rette kolonne.

Altså:
Hvis indtastning sker i kolonne C, række 4 til 33, skal beløbet, ganget med 0,8, indsættes i samme række i kolonne D.
Hvis indtastning sker i kolonne D, række 4 til 33, skal beløbet, ganget med 1,25, indsættes i samme række i kolonne C.
14. april 2010 - 22:52 #1
Højreklik på fanen og vælg "Vis kode" eller "View code"

Kopier følgende makro ind

Private Sub Worksheet_Change(ByVal Target As Range)

    If Not Intersect(Target, Range("C4:C33")) Is Nothing Then
        'Brutto
        Application.EnableEvents = False
        Target.Offset(0, 1).Value = Target.Value * 0.8
        Application.EnableEvents = True
    End If

    If Not Intersect(Target, Range("D4:D33")) Is Nothing Then
        'Netto
        Application.EnableEvents = False
        Target.Offset(0, -1).Value = Target.Value * 1.25
        Application.EnableEvents = True
    End If

End Sub
Avatar billede perhol Seniormester
14. april 2010 - 23:26 #2
Bortset fra et enkelt irritationsmment virker det perfect.
Hvis noget er indtastet i kolonne C og jeg sletter det, så viser kolonne D "0,00".
For at undgå det har jeg tilføjet lidt.
Her er den færdige kode.

Private Sub Worksheet_Change(ByVal Target As Range)

    If Not Intersect(Target, Range("C4:C33")) Is Nothing Then
        'Brutto
        Application.EnableEvents = False
        If Target.Value = "" Then
        Target.Offset(0, 1).Value = ""
        Else
        Target.Offset(0, 1).Value = Target.Value * 0.8
        End If
        Application.EnableEvents = True
    End If

    If Not Intersect(Target, Range("D4:D33")) Is Nothing Then
        'Netto
        Application.EnableEvents = False
        If Target.Value = "" Then
        Target.Offset(0, -1).Value = ""
        Else
        Target.Offset(0, -1).Value = Target.Value * 1.25
        End If
        Application.EnableEvents = True
    End If

End Sub

Tak for hjælpen ;b)
15. april 2010 - 09:06 #3
Så må du også været træt af fejlen, hvis du indtaster bogstaver eller laver en fejl, som ikke er et tal...


Private Sub Worksheet_Change(ByVal Target As Range)
   
    If Not Intersect(Target, Range("C4:C33")) Is Nothing Then
        'Brutto
        Application.EnableEvents = False
        If IsEmpty(Target.Value) Then
            Target.Offset(0, 1).Delete
        ElseIf IsNumeric(Target.Value) Then
            Target.Offset(0, 1).Value = Target.Value * 0.8
        End If
        Application.EnableEvents = True
    End If

    If Not Intersect(Target, Range("D4:D33")) Is Nothing Then
        'Netto
        Application.EnableEvents = False
        If IsEmpty(Target.Value) Then
            Target.Offset(0, -1).Delete
        ElseIf IsNumeric(Target.Value) Then
            Target.Offset(0, -1).Value = Target.Value * 1.25
        End If
        Application.EnableEvents = True
    End If

End Sub
Avatar billede perhol Seniormester
15. april 2010 - 18:13 #4
Den havde jeg ikke lige tænkt på.
At lave en indtastning i en beløbskolonne som ikke er et tal er lidt langt ude, men i betragtning af hvad jeg ellers har set mine kære kolleger lave af narrestreger, så må jeg nok hellere afprøve dit forslag i aften.

Endnu engang tak.
15. april 2010 - 18:46 #5
Du kan også bruge datavaliderig til dette formål, således der kun kan tastes tal i cellerne... måske en lidt mere brugervenlig løsning, når nu der skal andre brugere på...
Avatar billede perhol Seniormester
15. april 2010 - 21:56 #6
Datavalidering vinder.
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