Avatar billede mrkr Juniormester
22. juli 2009 - 12:17 Der er 6 kommentarer og
1 løsning

danne sideskift med vba

Jeg har en kodestump der indsætter nogle manuelle sideskift.
Den virker som den skal, men der er alligevel nogle gange at jeg gerne vil have den til at gøre det lidt anderledes.

Koden kigger efter om der står noget i kollonne H, hvis der gør det laver den sideskift lige over den linje som har noget stående i kol H.

Her kommer det nye:
Det sker at der står noget i kolonne H i to linjer lige over hinanden. Hvis der gør det skal den sætte sideskiftet 1 linje over den ØVERSTE linje der har noget i kolonne H.

På den måde bliver begge linjer "presset" ned på næste side.

Ved eksempel med 1 linje med noget i kol H.
------- sideskift ----------
****


Ved eksempel med 2 linje med noget i kol H.
------- sideskift ----------
****
****


Oprindelig kode:

Sub sideskift()
On Error GoTo Ingen_sideskift
Application.ScreenUpdating = True
   
   
    Range(Range("F65536").End(xlUp).Address).Select
    Application.ScreenUpdating = False

    ActiveSheet.PageSetup.PrintArea = "$A:$F"
   
    For Each pb In Worksheets("ark1").HPageBreaks
        I = pb.Location.Row
        If Rows(I).PageBreak = xlPageBreakAutomatic Then
            If Cells(I, "H") = "" Then
                A = Cells(I, "H").End(xlUp).Row
                Rows(A).PageBreak = xlPageBreakManual
            End If
        End If
    Next pb

    With Worksheets("ark1").HPageBreaks
        I = .Item(.Count).Location.Row
        If Rows(I).PageBreak = xlPageBreakAutomatic Then
            If Cells(I, "H") = "" Then
                A = Cells(I, "H").End(xlUp).Row
                Rows(A).PageBreak = xlPageBreakManual
            End If
        End If
    End With

    Set Rng = Nothing
    Range("A1").Select

Ingen_sideskift:

End Sub
Avatar billede supertekst Ekspert
22. juli 2009 - 16:35 #1
Sub sideskift()
On Error GoTo Ingen_sideskift
Application.ScreenUpdating = True
   
   
    Range(Range("F65536").End(xlUp).Address).Select
    Application.ScreenUpdating = False

    ActiveSheet.PageSetup.PrintArea = "$A:$F"
   
rem forslag:
    For Each pb In Worksheets("ark1").HPageBreaks
        i = pb.Location.Row
        If Rows(i).PageBreak = xlPageBreakAutomatic Then
            While Cells(i, "H") <> ""
                i = i - 1
            Wend
           
            Rows(i + 1).PageBreak = xlPageBreakManual
        End If
    Next pb
Avatar billede mrkr Juniormester
22. juli 2009 - 17:42 #2
Den virker desværre ikke efter hensigten.

Ved ikke om jeg ikke har fået foklaret mig korrekt.
Kan evt. sende en mail med et ark hvor problemstillingen kan visualiseres.
Avatar billede supertekst Ekspert
22. juli 2009 - 17:49 #3
Det skal du være velkommen til (mailadr. under profil)
Avatar billede mrkr Juniormester
23. september 2009 - 16:39 #4
Hej supertekst

Har du haft tid til at kigge på mit lille problem?
Eller skal vi lukke tråden :-)
Avatar billede supertekst Ekspert
23. september 2009 - 17:11 #5
I morgen skal jeg se på det!
Avatar billede mrkr Juniormester
17. januar 2010 - 20:11 #6
Hej Supertekst

Vi har vist et hængeparti her. :-)

Har du et svar så jeg kan afgive points?

Og ikke mindst tak for indsatsen
Avatar billede supertekst Ekspert
17. januar 2010 - 23:06 #7
Selv tak
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