20. august 2001 - 09:54Der 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.
Hos Computerworld it-jobbank er vi stolte af at fortsætte det gode partnerskab med folkene bag IT-DAY – efter vores mening Danmarks bedste karrieremesse for unge og erfarne it-kandidater.
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
>> 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
\' 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.
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.
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!
Synes godt om
Ny brugerNybegynder
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.