23. januar 2002 - 14:15Der er
19 kommentarer og 1 løsning
Regnskab med brug af tal fra tidligere regnskab
Jeg har et regnskab som består af x søjler og en række for hver forbruger. De første søjler er forbrug af hver vare, den næste søjle er regning for forbrug, den næste søjle er forbrugerens gl. gæld. Den næste er at betale (regning + gl. gæld), den sidste er betalt. Jeg har lavet det sådan, at når jeg laver et nyt regnskab skubber jeg det gamle ned og kopiere en skabelon ind som ikke er udfyldt. Det gør så, at der kommer en række gamle regnskaber nedenunder det nyeste, hvor det nyeste afhænger af alle de tidligere fordi gl. gæld bliver udregnet ud fra "at betale" - "betalt" for måneden før. Jeg vil så gerne have det sådan, at det kun er det nyeste regnskab der er i arket + en søjle med gl. gæld. Derfor ville det så blive nødt til at fungere på den måde, at når jeg skal til at lave det nye regnskab skal der for hver forbruger udregnes gl. gæld ved at tage "at betale" - "betalt" i det nyeste regnskab og så slette alt forbrug og betalt-søjlen så det er klart til at taste ind i. gl. gæld skal derfor ikke udregnes med en formel, men tages fra en søjle som opdateres en gang om måneden (altså når jeg laver nyt regnskab). Spørgsmålet er derfor efter denne lange udredning: Kan man lave en funktion som tager og udregner den nuværende gæld for alle forbrugere og smider den over i en søjle og derefter sletter alle værdier i et bestemt antal celler?
jeg ved ikke om jeg lige skal prøve at præcisere det jeg gerne vil have: Regnearket: a-h i j k l q søjler med forbrug regning gl. gæld at betale betalt gæld pt
regning udregnes fra forbrug. gl. gæld fås fra sidste måneds at betale-betalt. at betale er regning+gl.gæld. Betalt giver sig selv. gæld pt er at betale-betalt. gæld pt er en søjle med formler (=K12-L12 f.eks). Det jeg skal bruge, er en macro der kopierer q-søjlen over i j søjlen og sletter søjlerne A-H og L.
man kan da se hvor mange indlæg der er. Jeg har ikke prøvet endnu, det skal vel sættes ind som en macro. Hvad skal jeg helt præcist ændre, hvis det kun er rækkerne fra 3 til 18 det drejer sig om?
Du skal ændre de steder, hvor der står angivet 2 f.eks. A2:H2 skal rettes til A3:H3 - jeg har lavet den, så den tager de rækker, som du har med. Det vil sige, om der er 18 eller 19 rækker, betyder intet.
jeg har nu prøvet at implementere det, men der er et mindre problem. Jeg har i forvejen en programstump til at køre:Private Sub Worksheet_Change(ByVal Target As Range) Dim rPayed As Range Set rPayed = Range("L3:L18")
If Not Intersect(Target, rPayed) Is Nothing Then If Not Target.Value = "" Then Dim wksPay As Worksheet Dim lNumRow As Long Set wksPay = ActiveWorkbook.Worksheets("Indbetalt") lNumRow = wksPay.Range("A2").CurrentRegion.Rows.Count + 1 wksPay.Range("A" & CStr(lNumRow)).Value = Range("A" & CStr(Target.Row)).Value wksPay.Range("C" & CStr(lNumRow)).Value = Now wksPay.Range("D" & CStr(lNumRow)).Value = Target.Value wksPay.Range("B" & CStr(lNumRow)).Value = InputBox("Indtast navn på indbetaler", "Systeminformation") Set wksPay = Nothing End If End If
Set rPayed = Nothing End Sub
Denne brokker sig når makroen vil til at slette indholdet af første celle med indhold i søjle L, er der en måde dette kan løses på?
jeg har løst det, måske ikke så fix en måde, men her er det i hvert fald: Range("L2").Select Selection.ClearContents Range("L3").Select Selection.ClearContents osv Hvis der er en smartere måde vil jeg meget gerne høre det. Tak for hjælpen
b_hansen > jeg har desværre ikke fået mails om nye indlæg, så du må undskylde jeg først svarer nu. Jeg havde fra start sat de 2 linjer ind du foreslår Range("L2:L18").Select Selection.ClearContents Men det giver en fejl i vb-scriptet når jeg vil udføre makroen. Men da jeg godt kunne slette cellerne enkeltvis har jeg bare gjort det i makroen. Da makroen kun skal skrives en gang, ser jeg ikke nogle problemer med de ekstra linjer, tidsmæssigt mht udførelse er der heller ikke problemer. Men hvis du kan gennemskue hvorfor den giver en fejl fra vb-scriptet vil jeg da meget gerne høre det. Scriptet kan du se i min kommentar fra 16.41 d. 23/1
umiddelbart kan jeg ikke se, at der skal være noget galt... Men kan du ikke snyde, og i stedet bruge:
rPayed.Select Selection.ClearContents
Men jeg kan altså ikke se ud fra din kodestump, hvor du vil foretage din sletning af kolonne L.... Og jeg kan heller ikke få din kode til at fungere her
Jeg tror vi snakker lidt forbi hinanden. Dette er hele koden: Private Sub Worksheet_Change(ByVal Target As Range) Dim rPayed As Range Set rPayed = Range("L3:L18")
If Not Intersect(Target, rPayed) Is Nothing Then If Not Target.Value = "" Then Dim wksPay As Worksheet Dim lNumRow As Long Set wksPay = ActiveWorkbook.Worksheets("Indbetalt") lNumRow = wksPay.Range("A2").CurrentRegion.Rows.Count + 1 wksPay.Range("A" & CStr(lNumRow)).Value = Range("A" & CStr(Target.Row)).Value wksPay.Range("C" & CStr(lNumRow)).Value = Now wksPay.Range("D" & CStr(lNumRow)).Value = Target.Value wksPay.Range("B" & CStr(lNumRow)).Value = InputBox("Indtast navn på indbetaler", "Systeminformation") Set wksPay = Nothing End If End If
Set rPayed = Nothing End Sub
Og her er hele makroen: Sub nyt_regnskab() ' ' Macro5 Macro ' Macro recorded 23-01-2002 by Peter Anskjær '
VB-scriptet gør, at når jeg indtaster i L3:L18 cellerne tager den værdien samt dato og betaler og indsætter på et andet sheet. Dette gøres med det samme. Dette script skal ikke slette noget. Makroen bruges så til en gang om måneden at gøre klar til at lave et nyt regnskab. Men når du skriver rPayed.select... ved jeg ikke om du mener det skal sættes i makroen eller vb-scriptet, hvis det sættes i makroen hvad sker der så? Det ved jeg ikke. Jeg prøver senere i dag, men tror ikke det virker da scriptet brokker sig over at jeg vil slette hele området på en gang, så er det vel ligegyldigt hvordan jeg selecter området.
ok, så er jeg med... og så alligevel ikke!!! For jeg kan sagtens få det til at fungere med to linier. Men du skulle vel aldrig have lavet en beskyttelse af cellerne? Det kunne være forklaringen på, at du skal slette dem enkeltvis
cellerne er låste, men det er cellerne B3:H18 også, og de kan jo godt blive slettet ved at selecte det hele. Jeg kan ikke slette mere end 1 celle i L3:L18 selvom jeg gør det manuelt, jeg kan godt slette mere end 1 celle ved at highlighte dem, men det giver en fejl fra scriptet. Hvis du vil, kan jeg sende regnearket til dig, så kan det være du bedre kan se hvad jeg mener, men det er kun hvis du er interesseret, for det virker jo sådan set godt nok med denne løsning som dog ikke er den mest elegante. Hvis du vil kan du lige skrive din email-adresse.
Jeg tvivler lidt på, at jeg kan gøre det ret meget bedre, når du allerede har rodet med det.... så vi må nok hellere lade det ligge, eftersom du allerede har en løsning, der dækker dit behov.
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.