Avatar billede 3z Nybegynder
27. januar 2003 - 15:25 Der er 10 kommentarer og
1 løsning

Auto hide af linie...

Jeg har et excel ark, hvor jeg gemmer de ikke relevante linier. Disse linier varierer fra dag til dag, så det aldrig er de samme linier der skal være gemte...

Kan jeg udfra et felts værdi få excel automatisk til, at hide/unhide den pågældende linie?

Håber I forstår...
27. januar 2003 - 15:58 #1
det kan du jo kun een gang - nemlig når du skjuler - næste gang skal du manuelt vise for at kunne ændre værdien ?? eller misforstår jeg noget
27. januar 2003 - 15:58 #2
Afhængigt af omfanget af de celler der skal vises/skjules, kan det måske laves med betinget formatering.

Du vælger en hvid på hvid skrift hvis en betingelse er opfyldt.
Avatar billede bak Forsker
27. januar 2003 - 15:58 #3
Har du prøvet med autofilter ?. Det burde kunne gøre det..
Avatar billede martin_moth Mester
27. januar 2003 - 16:03 #4
JA du kan hvis du med "linie" mener række, kan du med en macro hide/unhide udvalgte rækker ganske automatisk

Jeg bruger ofte selv det, at alle rækker hvor fx. kolonne D er tom skal skjules. Så slipper jeg for at se på uinteressante rækker... Jeg laver en knap, der kalder macroen, samt en knap, der un-hider det hele igen.

Så ja, det kan du sagtens  - skal jeg kode det for dig, skal jeg bare vide, hvad kriteriet for om en række skal skjules/vises er...
Avatar billede 3z Nybegynder
27. januar 2003 - 16:16 #5
Martin - lyder godt !

Hvis feltet i kolonne T er blankt/0 skal rækken hides... :)
Avatar billede martin_moth Mester
27. januar 2003 - 16:17 #6
OK - 2 sek...
Avatar billede martin_moth Mester
27. januar 2003 - 16:46 #7
Der er mange måder at gøre det på, og her får du bare en af dem (fordi den er nemmest at beskrive)

  1) StartExcel op med det regneark du skal bruge

  2) Funktioner > Macro > Indspil ny Macro. Giv macroen et passende navn, fx. "Skjul"

  3) Funktioner > Macro > Stop Indspilning

  4) Funktioner > Macro > Afspil Macro. I den dialogbox der kommer op, markerer du din macro ("Skjul") og vælger "Rediger"

  5) Indsæt kode mellem "Sub Skjul()" og "End Sub", så det ser således ud:

  Sub Skjul()
    Dim i As Long  'i er en tækker der tæller over rækkerne
    For i = 1 To 65536
      If Cells(i, 20).Value = "" Or Cells(i, 20).Value = "0" Then
        Cells(i, 20).Select
        ActiveCell.EntireRow.Hidden = True
      End If
    Next i
  End Sub

Det var det - nu har du en macro, der hedder skjul, der kikker alle rækker fra række 1 til 65536 igennem (dvs. ALLE rækker i arket!!! - du kan jo ændre til kun at kikke de første 1000 rækker eller hvad der nu er nødvendigt). Står der ikke noget i kolonne 20 (=kolonne T), skjules rækken.

Denne macro kan du så bare afspille når du finder det nødvendigt - flimrer skærmen for meget, og går det for langsomt, kan du sætte en Application.Screenupdate = False ind før løkkens start (linien før "For i = 1 To..."), og en Application.ScreenUpdating = True ind lige før End Sub. Det gør det væsentligt hurtigere, og kan STÆRKT anbefales!!!

Vil du også have en macro, der viser alle rækker igen, kan du bare kopiere følgende kode ind under ovenstående kode, så har du en ny macro ved navn VisAlle du kan vælge fra din macroliste

Sub VisAlle()
  Cells.Select
  Selection.EntireRow.Hidden = False
End Sub

Ovenstående kode kan ændres som du ønsker, nu har jeg bare vist det på en simpel måde - generelt, når vi taler VBA, så kan du ALT det du vil. Så fungerer macroen ikke som du vil, ja, så skal koden bare ændres til du er tilfreds :o) Du KAN indsætte to trykknapper på dit regneark, så du slipper for at gå til Funktioner -> Macro -> Afspil Macro, hver gang du vil køre en macro

Jeg har forsøgt at svare så grundigt, at du forhåbeltligt har lært lidt om VBA samtisigt :o)
Avatar billede janvogt Praktikant
27. januar 2003 - 16:57 #8
Hvis løsningen skal være helt perfekt vil det måske være en idé, at arket opdateres automatisk evt. via Worksheet_Activate eller måske Workbook_Open.
Avatar billede martin_moth Mester
27. januar 2003 - 16:59 #9
Yep - mulighederne er uendelige, og der er plads til masser af smarte forbedringer :o)
Avatar billede 3z Nybegynder
28. januar 2003 - 09:10 #10
Martin >> Takker det virker jo fortrinligt...

Kan du så også hjælpe mig med denne:
Jeg har følgende formel, som søger efter et tal i et andet ark. Hvis tallet ikke findes skal den f.eks. skrive "Nej", men det eneste jeg får ud er #N/A!...
=IF(D18<>0;(IF((VLOOKUP(D18;Import;6;"Nej")>0);(VLOOKUP(D18;Import;12;"Nej"));0));0)

Hvad gør jeg forkert?
Avatar billede martin_moth Mester
28. januar 2003 - 09:29 #11
Øhh - det har ikke meget med ovenstående at gøre...

En god ide - bryd sætningen ned til brudstykker, og tjek de enkelte dele for sig. Og tjek paranteser. Men hører det ikke til i et nyt spørgsmål? ;o)
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