Det går ikke lige ... jeg har behov for at spore, hvor en p.t. ugendt modulkode slutter før den næste starter, og i det aktuelle tilvælde, er det desværre ikke linien før :o(
Som udgangspunkt skulle jeg have indsat en ActiveSheet.Unprotect i en lang løkkerutine, og så ActiveSheet.Protect når den sluttede ... det var slutningen jeg ikke kunne finde ...
Sub test() I = 1 Hoved = ActiveSheet.Name For Each ws In ThisWorkbook.Worksheets I = I + 1 If ws.Name <> Hoved Then Vaerdi = Sheets(ws.Name).Range("A1").Value Sheets(Hoved).Range("A" & I).Value = Vaerdi End If Next End Sub
Sub test() hoved = ActiveSheet.Name For Each ws In ThisWorkbook.Worksheets If ws.Name <> hoved Then I = I + 1 Vaerdi = Vaerdi + Sheets(ws.Name).Range("A1").Value End If Next MsgBox "Der var " & I & " ark. Værdien var sammenlagt:" & vbLf _ & Vaerdi Sheets(hoved).Range("A1").Value = Vaerdi End Sub
Sub test() hoved = ActiveSheet.Name For Each ws In ThisWorkbook.Worksheets If ws.Name <> hoved Then I = I + 1 Vaerdi = Sheets(ws.Name).Range("A1").Value Sheets(hoved).Range("A" & I).Value = Vaerdi End If Next Range("A" & I + 1).FormulaR1C1 = "=SUM(R[-" & I & "]C:R[-1]C)" End Sub
Sub test() hoved = ActiveSheet.Name StartV = 6 For Each ws In ThisWorkbook.Worksheets If ws.Name <> hoved Then I = I + 1 Vaerdi = Sheets(ws.Name).Range("G6").Value Sheets(hoved).Range("H" & StartV + I).Value = Vaerdi End If Next Range("E" & StartV + I + 1).FormulaR1C1 = "=SUM(R[-" & I & "]C[3]:R[-1]C[3])" End Sub
Sorry ... men slutresultatet består af en såkaldt rekap ( forsiden ) og en række underark som alle summerer til forsiden, så hvis brugeren efterfølgende retter i underarkene, skal det slå igennem på rekappen med det samme ... :o)
Sub test() hoved = ActiveSheet.Name StartV = 6 For Each ws In ThisWorkbook.Worksheets If ws.Name <> hoved Then Vaerdi = Sheets(ws.Name).Range("G6").Value Sheets(hoved).Range("H" & StartV + I).Value = "=" & ws.Name & "!R[-" & I & "]C[-1]" I = I + 1 End If Next Range("E" & StartV + I + 1).FormulaR1C1 = "=SUM(R[-" & I & "]C[3]:R[-1]C[3])" End Sub
Her er en alternativ kode, som indsætter en 3D formel Kræver dog at summeringsarket er det første i workbooken. Indsæt koden i dennes modules.
Sub test() første = Worksheets(2).Name sidste = Worksheets(Worksheets.Count).Name område = "=" & første & ":" & sidste & "!$G$6" ActiveWorkbook.Names.Add Name:="Data", RefersTo:=område Range("E1").Formula = "=sum(Data)" End Sub
hvis det altid er de samme celler der skal summeres, plejer jeg at indsætte et tomt ark som nummer 2 der hedder start og et tomt ark til slut der hedder slut. så kan man på ark summere således =SUM(start:slut!A4)
alle nye ark indsættes så mellem de to (start og slut) og vil automatisk blive summeret
Jeg står også over, selvom min løsning faktisk også genererede en 3d formel. Men den fangede ikke hvis et nyt erk blev flyttet til det sidste i workbooken, kun hvis makroen blev kørt påny. Jeg ledte faktisk efter en Worksheet insert event, som kunne fikse det, men kunne ikke lige finde det. Så point ubeskåret til bak, som endnu engang kom med en flot kreativ løsning. :-)
Takker excelent. Har lige testet det og den virker. Men hvis arket flyttes til sidst fejler den. Har også prøvet en Workbook_SelectionChange tror jeg den hedder og den fanger den, men baks løsning er klart den mest automatiserede. Så hatten af for det :-)
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.