27. januar 2003 - 15:25Der 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?
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...
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)
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)
Ø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)
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.