Avatar billede mira96ac Novice
08. oktober 2006 - 10:41 Der er 22 kommentarer og
1 løsning

Tæl sideskift/sider

Hejsa

Kan man lave en makro som hele tiden tester i baggrunden på hvor mange sideskift der er på en pågældende side. Den skal så tælle sideskiftene og skrive værdien i celle A1.

Går det galt hvis nogle linier er skjulte eller kan den tælle de faktiske viste sideskift ?

På den måde kan man vel bruge Excel til at lave en slags indholdsfortegnelse på de sider man har !
Avatar billede excelent Ekspert
08. oktober 2006 - 12:08 #1
koden (hentet fra XL-hjælp) indsætes i arkets kodemodul
opdater med et dobbeltklik

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
For Each pb In ActiveSheet.HPageBreaks
  If pb.Extent = xlPageBreakFull Then
    cFull = cFull + 1
  Else
    cPartial = cPartial + 1
  End If
Next
Range("A1") = cFull
End Sub
Avatar billede mira96ac Novice
08. oktober 2006 - 12:54 #2
Et dobbeltklik hvor ?

Det skal helst fungerer så makroen hele tiden kører i baggrunden og opdaterer celle A1, man skal ikke dobbeltklikke e.l.

Kan det lade sig gøre ?
Avatar billede excelent Ekspert
08. oktober 2006 - 16:20 #3
Det blir nok for langsomt at arbejde med - prøv:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
For Each pb In ActiveSheet.HPageBreaks
  If pb.Extent = xlPageBreakFull Then cFull = cFull + 1
Next
Range("A1") = cFull
End Sub
Avatar billede kabbak Professor
08. oktober 2006 - 16:56 #4
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Range("A1") = ActiveSheet.HPageBreaks.Count
End Sub
Avatar billede kabbak Professor
08. oktober 2006 - 16:57 #5
det var en nedkogning af excelent's kode
Avatar billede mira96ac Novice
08. oktober 2006 - 17:15 #6
Kabbak

Men denne kode opdateres ikke hele tiden vel ?

Den skal fungerer så jeg ikke skal trykke på en knap e.l. eventuelt skal den aktiveres når man forlader arket ?

Meningen er at jeg vil lave en indholdsfortegnelse på baggrund af værdi i celle A1 og dermed kan den jo selv tælle siderne.
Avatar billede mira96ac Novice
08. oktober 2006 - 17:18 #7
Jeg kan se at det kræver at man klikker på siden for at den opdateres.

Desuden synes jeg ikke at den tæller rigtig ?
Avatar billede kabbak Professor
08. oktober 2006 - 17:36 #8
hvad mener du med rigtig, hvis du ikke har en side fuld, er der ingen sat ind endnu, derfor skal du  plusse med 1, hvis du vil vide antal sider.

sådan


Range("A1") = ActiveSheet.HPageBreaks.Count + 1
Avatar billede mira96ac Novice
08. oktober 2006 - 19:23 #9
Den tæller stadig ikke rigtig...

Jeg har sider uden sideskift (altså 1 side) som den viser er 3 sider
og jeg har sider med 1 sideskift som den viser er 4 sider
og jeg har sider med 1 sideskift som den rigtigt viser er 2 sider

Jeg har angivet udskriftsområde, så der er ikke noget skjult eller lignende.
Avatar billede kabbak Professor
08. oktober 2006 - 20:51 #10
Jeg mener ikke den kan se kun i udskriftområdet, men kikker på hele arket.
Avatar billede mira96ac Novice
09. oktober 2006 - 08:14 #11
Det virker i hvert fald ikke... desværre
Avatar billede gibber Nybegynder
09. oktober 2006 - 08:22 #12
Prøv denne:

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
Dim iLodretBreak As Integer, iVandretBreak As Integer
    Dim iTotalantalSider As Integer
   
    iLodretBreak = ActiveSheet.HPageBreaks.Count + 1
    iVandretBreak = ActiveSheet.VPageBreaks.Count + 1
   
    iTotalantalSider = iLodretBreak * iVandretBreak
   
    Range("A1") = iTotalantalSider
End Sub
Avatar billede mira96ac Novice
09. oktober 2006 - 08:39 #13
Det vil jeg gøre... er desværre ikke muligt før jeg kommer hjem fra arbejde idag...
Avatar billede mira96ac Novice
09. oktober 2006 - 19:04 #14
Det virker desværre heller ikke
Avatar billede mira96ac Novice
02. november 2006 - 11:03 #15
Denne her virker vist

Sub PrintedPages()
    MsgBox ExecuteExcel4Macro("Get.Document(50)")
End Sub

Men hvordan får jeg den til at skrive værdien i f.eks. celle a1 og derudover skal den eksekvere makroen hver gang man går ud af arket...

Kan man det ?
Avatar billede excelent Ekspert
04. november 2006 - 20:20 #16
Sub PrintedPages()
    cells(1,1)=ExecuteExcel4Macro("Get.Document(50)")
End Sub

og følgende sub indsættes i arkets kodemodul:

Private Sub Worksheet_Deactivate()
Call PrintedPages
End Sub
Avatar billede mira96ac Novice
05. november 2006 - 12:37 #17
Til excelent...

Hvad er dit bedste råd når jeg nu skal bruge funktionen til at generere en indholdsfortegnelse.

Skal ovenstående funktion køre hver gang man går ud af de forskellige ark eller sænker det Excel væsentligt og i stedet skal man måske lave en knap som på en gang finder alle sideskift på alle ark og genererer indholdsfortegnelsen ?
Avatar billede mira96ac Novice
05. november 2006 - 14:13 #18
Jeg har indsat: Sub PrintedPages()
    cells(1,1)=ExecuteExcel4Macro("Get.Document(50)")
End Sub

i ThisWorkBook

og: Private Sub Worksheet_Deactivate()
Call PrintedPages
End Sub

i det enkelte ark i Worksheet


Men jeg synes ikke deet virker ???
Avatar billede mira96ac Novice
05. november 2006 - 14:50 #19
Nu har jeg bare placeret:

Private Sub Worksheet_Activate()
Cells(1, 1) = ExecuteExcel4Macro("Get.Document(50)")
End Sub

Private Sub Worksheet_Deactivate()
Cells(1, 1) = ExecuteExcel4Macro("Get.Document(50)")
End Sub

På hvert enkelt ark

Men jeg har det problem at når man går væk fra arket så kan den ikke huske værdien i celle A1 mere...

Dvs. når jeg står på min indholdsfortegnelse og vil hente værdien i celle A1 på f.eks. arket "Noter" så kan den ikke finde den rigtige værdi i celle A1 på arket "Noter", kun nå jeg står på selv arket skriver den det rigtige antal sideskift
Avatar billede mira96ac Novice
05. november 2006 - 15:25 #20
Jeg kan se at det er denne som laver fejlen:

Private Sub Worksheet_Deactivate()
Cells(1, 1) = ExecuteExcel4Macro("Get.Document(50)")
End Sub

De opdaterer den side man forlader....men med værdien fra det ark men klikker på...

Hvordan får man den til det ?
Avatar billede excelent Ekspert
05. november 2006 - 16:47 #21
prøv:

Private Sub Worksheet_Deactivate()
sheets("dit arknavn").Cells(1, 1) = ExecuteExcel4Macro("Get.Document(50)")
End Sub
Avatar billede mira96ac Novice
05. november 2006 - 17:17 #22
Har selv lige løst det ved at sætte funktionen ind i en anden makro jeg havde som jeg kører på alle sider.

Tak for hjælpen alle.

Excelent får point da det var denne funktion der virkede...
Avatar billede excelent Ekspert
05. november 2006 - 17:24 #23
ok
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