Problem: Hjælp til programmering i VBA.
Jeg har tidligere med hjælp til VBA fra Eksperten udarbejdet et program i excel til beregning af min fremtidige økonomi efter skat år for år.Programmet er bl.a opbygget med følgende ark:
"Likviditetoversigt"
"Lignmæssige fradrag"
"Skatteprogram"
efter følgende skabelon
D1 .............AE1 omfatter årstallene 2013 til 2038 og rækkerne under indeholder data for de forskellige årstal.
Dog ikke Skatteprogrammet, som bliver anvendt. Hvert års data fra de øvrige ark indgår i hvert års skatteberegning. Resultatet af hvert års beregnet skat (VBA) indsættes i likviditetsoversigten række 30 for de respektive år.
Nu har jeg suppleret regnearket med et nyt ark "ydelserogrenter".
Arket er opbygget på samme måde som de øvrige ark med
D1 .............AE1 som omfatter årstallene 2013 til 2038.
Række 8 indeholder låneydelserne for de respektive år og overføres for de respektive år til arket: "likviditetsoversigt" ved hjælp af formel.
Række 9 indeholder renteudgiften for de respektive år og skal indgå i skatteberegningen for de respektive år. Det er her mit problem opstår:
Hvordan for jeg tilrettet VBA så arket "ydelserogrenter" indgår i skatteprogrammet med række 9 renteudgiften for de respektive år? I skatteprogrammet skal renter posteres på kolonne E, række 40.
VBA ser i dag således ud:
Sub udregnSkatForAlleAar()
Dim rRange As Range
Dim rCell As Range
Dim rCellCol As String
Dim likviditetsoversigt As String
Dim fradragsarkNavn As String
Dim skatteberegningsarkNavn As String
' Navn på ark
likviditetsoversigt = "Likviditetoversigt"
fradragsarkNavn = "Lignmæssige fradrag"
skatteberegningsarkNavn = "Skatteprogram"
' Sørger for, at det er cellerne i indkomst arket der benyttes i det følgende
Sheets(likviditetsoversigt).Activate
' Finder de kolonner/år der skal udregnes skat for
' Så længe cellerne er udfyldt, vil de blive taget med i dataområdet.
Set rRange = Range("D1", Range("XFD1").End(xlToLeft))
' Gennemgå alle årstallene
For Each rCell In rRange
' Vi står p.t. i feltet med årstallet
' Hent kolonnenavn
rCellCol = Split(rCell.Address, "$")(1)
'
' ALLAN
'
' Overfør lønindkomst
Sheets(skatteberegningsarkNavn).Range("E30").Value = Sheets(likviditetsoversigt).Range(rCellCol & "7").Value
' Overfør overførselsindkomst
Sheets(skatteberegningsarkNavn).Range("E32").Value = Sheets(likviditetsoversigt).Range(rCellCol & "16").Value
' Overfør fradrag
' Da kolonnerne ikke er på de samme pladser i likviditetsarket og fradragsarket
' så sørger offset her for, at vi rammer den rigtige celle.
Sheets(skatteberegningsarkNavn).Range("E44").Value = Sheets(fradragsarkNavn).Range(rCellCol & "4").Offset(0, -1).Value
'
' BENTE
'
' Overfør lønindkomst
Sheets(skatteberegningsarkNavn).Range("F30").Value = Sheets(likviditetsoversigt).Range(rCellCol & "20").Value
' Overfør overførselsindkomst
Sheets(skatteberegningsarkNavn).Range("F32").Value = Sheets(likviditetsoversigt).Range(rCellCol & "27").Value
' Overfør fradrag
' Da kolonnerne ikke er på de samme pladser i likviditetsarket og fradragsarket
' så sørger offset her for, at vi rammer den rigtige celle.
Sheets(skatteberegningsarkNavn).Range("F44").Value = Sheets(fradragsarkNavn).Range(rCellCol & "7").Offset(0, -1).Value
'
' RESULTAT
'
' Overfør resultat
Sheets(likviditetsoversigt).Range(rCellCol & "30").Value = Sheets(skatteberegningsarkNavn).Range("E129").Value
' "Next rCell" sørger for at gå videre til næste celle i vores dataområde, dvs. næste årstal
Next rCell
' Færdig
MsgBox "Makro færdig"
End Sub
På forhånd tak for eventuel hjælp.
Allan