25. juni 2007 - 10:05Der er
14 kommentarer og 1 løsning
Indholdsfortegnelse i Projektmappe med flere ark
Jeg har en projektmappe med 15 ark. Heraf skal de 9 ark medgå i en samlet udskrift. Dette har jeg fået til at fungere fint bla med en markering i de ark, der skal medgå i udprint.
Nu vil jeg imidlertid gerne lave en forside med indholdsfortegnelse - gerne med sidetal - som fx.
Indholdsfortegnelse Ark 1.............. Side 2 Ark 2.............. Side 5 osv.
Jeg har ikke umiddelbart nogle gode ideer til løsning. Har nogen en god løsning.
Det er forholdsvis store ark, hvor de rækker som ikke skal vises - skjules via en skjul-makro. Så ja - rækkerne er identificeret ved at være sand eller falsk i kolonne A.
Forslag: Dim arkTilPrint() As Variant Const indhfort_Ark = "Indholdsfortegnelse" 'evt. justeres" Const indhfort_Startræk = 3 'Startrække- under overskrifter Const antalRækPrSide = 56 'justeres Dim indhTabel(), arkNr Sub opbygIndholdsfortegnelse() 'evt. makro_knap skal aktivere denne "Sub" Dim ark, antalNettolinier Rem Opsæt arknavne, der skal udskrives arkTilPrint = Array("Ark1", "Ark2", "Ark3", "Ark5") 'justeres
Rem opsæt tabel til indholdsfortegnelse ReDim indhTabel(UBound(arkTilPrint), 2) arkNr = 0
Rem undersøg de enkelte ark, om de skal udskrives For Each ark In ActiveWorkbook.Sheets If skalArkUdskrives(ark.Name) = True Then antalNettolinier = optælNettoLinier(ark.Name) indhTabel(arkNr, 0) = ark.Name indhTabel(arkNr, 1) = antalNettolinier arkNr = arkNr + 1 End If Next
Indholdsfortegnelse End Sub Private Function skalArkUdskrives(arkNavn) antal = UBound(arkTilPrint)
For f = 0 To UBound(arkTilPrint) If arkNavn = arkTilPrint(f) Then skalArkUdskrives = True Exit Function End If Next f skalArkUdskrives = False End Function Private Function optælNettoLinier(ark) 'optæller IKKE-skjulte linier Dim netto, bruttolinier netto = 0 With ActiveWorkbook.Sheets(ark) .Activate bruttolinier = ActiveCell.SpecialCells(xlLastCell).Row
For r = 1 To bruttolinier If .Rows(r).EntireRow.Hidden = False Then netto = netto + 1 End If Next r End With optælNettoLinier = netto End Function Private Sub Indholdsfortegnelse() 'indsætter indholdsfortegnelse på relevante ark Dim linier, sideNr linier = 0
ActiveWorkbook.Sheets(indhfort_Ark).Activate
For i = 0 To UBound(indhTabel) ark = indhTabel(i, 0)
If i = 0 Then sideNr = 2 Else s = linier \ antalRækPrSide If linier Mod antalRækPrSide <> 0 Then s = s + 1 End If sideNr = sideNr + s End If linier = indhTabel(i, 1)
Cells(indhfort_Startræk + i, 1) = ark Cells(indhfort_Startræk + i, 2) = sideNr Next i End Sub
Supertekst> Det er faktisk bare i orden. Fik det med nogle små tilpasninger til at fungere godt. Beklager den sene svar. Min kommentar af 30.6. var rimelig avorlig. På banen igen. Læg et svar og på forhånd tak for tålmodighed.
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.