Avatar billede kov Nybegynder
20. august 2001 - 09:54 Der er 4 kommentarer og
1 løsning

Fjerne tomme celler fra udskrift version 2

Dette indlæg er en forlængelse af spørgsmålet \"Fjerne tomme celler fra udskrift\" det desværre blev lukket inden alle var færdige med at svare.

Det oprindelige spørgsmål lød:

Jeg er stødt ind i et mindre problem: Jeg har et Excel regneark der indeholder en del formler. En del af disse formler bliver i praksis sjældent regnet ud. Et eksempel er =HVIS(A2;A3+1;\"\") det ses at jeg tester på A2 og indsætter en værdi hvis A2 er sand. Hvis dette ikke er tilfældet bliver der indsat et blanktegn. Problemet er at blanktegnet medfører at sider hvor de indgår udskrives hvilket ikke er nødventigt hvis de er det eneste på siden.

Jeg vil gerne undgå at skulle justere sidesperatorene manuelt hvorfor det ikke er en løsning.

Jeg ved at man kan skjule NUL-værdier men det løser ikke problemet.

På forhånd tak
KOV
Avatar billede janvogt Praktikant
20. august 2001 - 11:42 #1
Jeg har sammensat et ark, som bygger på Lotus\' gamle pipe(|) princip.
Hvis kolonne A begynder med en \"|\" vil linien blive skjult - ikke på skærmen, men kun i udskriften.

Koden dertil er lidt omstændelig, men jeg tror den virker.
Arket indeholder yderligere dokumentation, forklaringer, begrænsninger etc., så måske var det nemmest at jeg mailede det til dig. Send en mail til jan_vogt_hansen@hotmail.com
20. august 2001 - 12:12 #2
Jeg modtager også gerne et eksemplar på fd@win-consult.com
Avatar billede kov Nybegynder
21. august 2001 - 13:47 #3
Hmmmm... Tjaaa..... Hvad gør jeg nu....

>> Janvogt, hvis du vil have point må du offentliggøre dit forslag. Eksperten er et diskusionsforum og derfor skal alle svar frem så de kan hjælpe alle der nu og i fremtiden har brug for svar på området. Hemmelighedskræmmeri med at sende svar rundt med mail er efter min mening ikke i Ekspertens ånd. Jeg kan naturligvis godt se at det kan være nødvendigt hvis man har lavet et demo ark, som i dette tilfælde, men man kan stadig beskrive de anvendte principper mv. på eksperten.

Efter som jeg er \"sysop\" på det her spørgsmål har jeg derfor besluttet at lægge dit svar op til gennemsyn. -Jeg er ked af hvis du bliver sur over det....

Denne løsning bygger på at man indsætter et særligt tegn (pipe) i kolonne A i rækker man ikke ønsker udskrevet. Nedenstående makro anvendes derefter til at foretage den egentlige udskrift.
Demo arket indeholdet en demonstration af dette men ikke yderligere.

Janvogts løsning:
Sub LotusPrint()
\' Denne makro vil midlertidigt skjule rækker som begynder med \"|\",
\' udskrive arket, og så vise rækkerne igen. Den er ment som en
\' emaluering af Lotus 1-2-3 funktionen med ikke at udskrive
\' rækker, som starter med en \"pipe\".

Dim UnhideRow() As Single
Application.ScreenUpdating = False

\' Finder den sidste række i kolonne A
FinalRow = Range(\"A65536\").End(xlUp).Row
Ctr = 0

\' Checker og skjuler hver række, som starter med en \"pipe\"
For x = 1 To FinalRow
    If Left(Range(\"A\" & x).Value, 1) = \"|\" Then

    \' Undlad at gøre noget, hvis rækken allerede er skjult
    If Not Range(\"A\" & x).EntireRow.Hidden Then
        Range(\"A\" & x).EntireRow.Hidden = True

        \' Gem rækken så den kan blive vist igen
        Ctr = Ctr + 1
        ReDim Preserve UnhideRow(Ctr)
        UnhideRow(Ctr) = x
    End If
    End If
Next x

\' Udskriv arket
ActiveWindow.SelectedSheets.PrintOut

\' Vis alle skjulte rækker
If Ctr > 0 Then
    For x = 1 To Ctr
        Range(\"A\" & UnhideRow(x)).EntireRow.Hidden = False
    Next x
End If
Application.ScreenUpdating = True
End Sub

Som det ses bygger løsningen på de samme principper som Flemmingdahl allerede har præsenteret i det oprindelige spørgsmål. Løsningen indeholder efter min bedste overbevisning ikke det som var lovet -nemlig et tegn som får Excel til at se bort fra rækken automatisk. Ikke desto mindre er der tydeligvis lagt en del arbejde i at dette eksempel ligesom det indeholder visse funktioner jeg personligt godt kan drage nytte af (f.eks. funktionen til at finde sidste række mv.).

Under anerkendelse af at jeg åbentbart ikke for opfyldt mit ønske om en \"simpel\" løsning har jeg besluttet at lukke dette spørgsmål (og hele diskusionen om tomme celler) ved at tildele Janvogt de 30 point.

Tak for nu til alle der har deltaget.
KOV
Avatar billede janvogt Praktikant
21. august 2001 - 14:09 #4
Jeg er helt enig i at alle accepterede løsninger på Eksperten skal offentliggøres hvis muligt! Så jeg blev ikke sur :-)

Jeg havde også selv offentliggjort koden når/hvis svaret er accepteret! Omvendt ser jeg heller ingen grund til at fylde Eksperten op med meterlang kode, som alligevel får et \"afvist svar\".

Denne løsning indeholdt, som du ved, en del mere information og eksempler i selve filen end den, du kan læse af ovenstående kode.
Heldigvis er koden dog godt dokumenteret.

Du har ret i, at det ikke er en simpel løsning. Jeg skriver også længere oppe, at løsningen er omstændelig.

Alligevel mener jeg, at den opfylder kravet om at sætte et tegn foran (i kolonne A) som medfører, at rækken ikke udskrives, men alligevel vises på skærmen. Funktionaliteten ligger således tæt op af det, som gamle Lotus kunne klare.
21. august 2001 - 15:22 #5
Jeg er også helt enig i, at det skal vises her - også forsøg på løsninger, idet andre vil kunne hjælpe videre på uhensigtsmæssigheder, som bliver vist - alle ved, at det er den sidste kodestump der nok er rigtig!

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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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