Avatar billede lail Forsker
18. februar 2020 - 10:37 Der er 12 kommentarer

variabelt udskriftsområde

Jeg har et regneark med en masse celler der skal udfyldes af brugeren

Ialt fylder området fra A1-K268

Men midt i er der to områder der, som udgangspukt er sjkulte, med kan foldes ud.

De foldes ind og ud med knapper Kunne kan vi kanppane sætte værider i nogle celler og afhængig af celle indhold skal der udskrives forskelligt???

Men det driller jo så hvis man har foldet det ene eller begge omåder ud . mht pæn udskrift

Nogen der har en idé til hvordan dette kan løses(he he så selv jeg kan forstå det )

LN
Avatar billede jens48 Ekspert
18. februar 2020 - 15:40 #1
Måske kan noget i stil med dette bruges. Makroen tester på højden af celle A80 og hvis den er skjult (= 0) sættes printområdet som ønsket, ellers vælges hele området.

Sub Macro1()
If Range("A80").RowHeight = 0 Then
    ActiveSheet.PageSetup.PrintArea = "$A$1:$K$27,$A$151:$K$268"
  Else
    ActiveSheet.PageSetup.PrintArea = "$A$1:$K$268"
End If
End Sub
Avatar billede lail Forsker
19. februar 2020 - 09:32 #2
naivt sprørrgsmål, hvordan skal jeg tricke makroen -  har ingen knap. Og brugerne aner  intet om brugen af makroer

Kunne være fedt hvis jeg kigge i celle - lad os sige K1

Hvis der står 0 er begge områder lukket og udskriftsområdet er a1:k237;a238:k268
Hvis værdie er 1 er første område åbent og andet område skjult . så er det A1:K85;A86:K227;A228:K268
Hvis væriden er 2 er andet område åbent og første skjult ...
Hvis vidien er 3 er alle råder vist....

Da jeg jeg åbner områderne med knapper, må jeg kunne få et tal smidt en celle ved tryk på knappen ???
Avatar billede jens48 Ekspert
19. februar 2020 - 10:25 #3
Makroen kan laves, så den går i gang, når der skrives i en bestemt celle. Skal det være K1? Jeg er ikke helt sikker på hvad du mener. Er det sådan?
1 i celle K1 giver printområde A1:K85
2 i celle K1 giver printområde A86:K227
3 i celle K1 giver printområde A228:K268
Avatar billede lail Forsker
19. februar 2020 - 10:29 #4
Der er flere side
Og de skal stå pænt der Hvis der står 1 i k1
Så er
side 1:A1:K85
side 2:A86:K227
side 3:A228:K268

Det skulle gerne trikkes når folk prøver at udskrive Ctrl P eller filer udskriv

LN
Avatar billede jens48 Ekspert
19. februar 2020 - 11:06 #5
Du skriver kun hvad der skal ske i en situation, men det kan klares med noget i stil med

Private Sub Workbook_BeforePrint(Cancel As Boolean)
If Range("K1") = 1 Then
    ActiveSheet.PageSetup.PrintArea = "$A$1:$K$85,$A$86:$K$227,$A$228:$K$268"
End If
End Sub
Avatar billede lail Forsker
19. februar 2020 - 13:06 #6
hvor skal denne kode placeres?
Avatar billede jens48 Ekspert
19. februar 2020 - 13:20 #7
Højreklik på fanebladet, og indsæt den under Vis koder
Avatar billede lail Forsker
19. februar 2020 - 15:00 #8
Dvs på kodning for selve arket ikke module eller projektmappe
Avatar billede lail Forsker
20. februar 2020 - 10:55 #9
det virker ikke

Hvis K1=0 så skal den skrive ud på to sider og det gør den også men deler ikke ved K237 som skrevet
Avatar billede jens48 Ekspert
20. februar 2020 - 12:21 #10
Ja, det er klart. Som jeg skrev i #5 havde du kun angivet hvad der skulle ske i en situation, nemlig hvis K1=1. Du kan rette makroen til så den tager hensyn til andre situationer i stil med nedenstående. Du skal blot selv definere hvad området skal være

Private Sub Workbook_BeforePrint(Cancel As Boolean)
If Range("K1") = 1 Then
    ActiveSheet.PageSetup.PrintArea = "$A$1:$K$85,$A$86:$K$227,$A$228:$K$268"
Else
ActiveSheet.PageSetup.PrintArea = "Skriv selv det ønskede område"

End If
End Sub
Avatar billede lail Forsker
20. februar 2020 - 12:48 #11
Private Sub Workbook_BeforePrint(Cancel As Boolean)
If ThisWorkbook.Sheets("1.forkalkulation").Range("K1") = 0 Then
ActiveSheet.PageSetup.PrintArea = "$A$1:$K$237,$A$238:$K$268"
End If

If ThisWorkbook.Sheets("1.forkalkulation ").Range("K1") = 1 Then
ActiveSheet.PageSetup.PrintArea = "A1:K84,A85:K237,A238:K268"
End If

If ThisWorkbook.Sheets("1.forkalkulation").Range("K1") = 2 Then
ActiveSheet.PageSetup.PrintArea = "A1:K187,A188:K237,A238:K268"
End If

If ThisWorkbook.Sheets("1.forkalkulation").Range("K1") = 3 Then
ActiveSheet.PageSetup.PrintArea = "A1:K84,A85:K177,A178:K248,A249:K268"
End If


Det er som om den husker de gamle udskriftsområder og når jeg så har haft første område Vist og bagefter lukker den så ligger sideskiftet i de skjulte område - og bliver der. og så fylder min sammeklappede udskrift 3 sider i stedet for 2

Ved ikke om det giver mening

LN
Avatar billede lail Forsker
22. februar 2020 - 22:42 #12
Jeg tænker situationen måske har ændret sig

De kære ledere vil ahve flere knapper der skjuler/viser områder
Så hvis jeg får dette til at virker - skal der måske en helt anden løsning til

LN
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

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