05. december 2006 - 23:20Der er
18 kommentarer og 1 løsning
Skjul rækker
Hej
Er der en som kan hjælpe mig med dette.
jeg har oprettet et regneark hvor kolonne E21 til E48 er delsum, hvis en af disse summe er 0,00 kr skal rækken gemmes eller slettes. E49 er totalsum.
Eksempel: a21 til d21 er 0,00 kr, så vil E21 også blive 0,00 kr, så skal række 21 ikke vises eller bedre slettes, men skal kunne gendannes hvis summen bliver noget andet. Det skal nævnes at der er tekst i a21 til a48 men det har vel ikke noget med kolonnen E ad gøre
Det må gerne være i VBA, hvis man kan auto køre det fra arket åbnes.
jeg vil gerne have et visuelt forslag, da jeg er ny i excel
Denne er bedre, da den kun starter med at vise rækkerne igen i dit område
Sub skjul() Rows("21:48").Hidden = False For Each værdi In Range("E21:E48") If værdi.Value = 0 Then Rows(værdi.Row).Hidden = True End If Next værdi End Sub
Du er da vist lidt en pro til dette, jeg havde prøvet ligende, men det ville ikke.
den virker ok, men hvis e21 ændrer sig, vises rækken ikke igen.
eksempel: e21 til e48 er nu skjult, hvis jeg så via min rullemenu vælger noget og summen i e21 pludeslig er 35,00 skal rækken kunne vises igen på fakturaen.
Et forslag som du måske kan bruge Makroen kopieres ind i arkmodul. Variablen Flag skal stå for sig selv som den øverste linie i kode vinduet. Den viser rækkerne ligeså snart du stiller dig i området A21:E48. Når du forlader området igen, køres makroen og linjer skjules. Et andet forslag er at lave en knap som henholdsvis viser og skjuler rækker, som du selv er inde på.
Dim Flag As Boolean
Private Sub worksheet_selectionchange(ByVal target As Range)
If Not Intersect(target, Range("A21:E48")) Is Nothing Then If Flag = True Then Rows("21:48").Hidden = False Flag = False End If End If
If Intersect(target, Range("A21:E48")) Is Nothing Then If Flag = False Then For Each værdi In Range("E21:E48") If værdi.Value = 0 Then Rows(værdi.Row).Hidden = True End If Next værdi Flag = True End If End If
kan ikke få det til at virke. Du skal også lige vide at jeg vælger alle data fra rullemenuer jeg vil normalt aldrig arbejde i række 21 til 48.
jeg vælger alt i rullemenuer i række 1 til 21
jeg forhøjer med 40 points hvis dette lykkedes.
For at skære det ud i pap:
hvis der kommer en total sum i række 21 skal den vises også når jeg printer, men hvis summen er 0 skal det ikke vises eller skrives ud. dette gælder række e21 til e48, som er del sums felter
Mener du ikke "rullemenuer i række 1 til 20" I så fald kopier denne kode ind i arkmodulet. den kører så hver gang der sker en ændring af værdien i din rullemenu. Rullemenuen er forudsat i området E1:E20, hvilket du bare ændrer i 2. linje i koden.
Private Sub worksheet_change(ByVal target As Range)
If Not Intersect(target, Range("E1:E20")) Is Nothing Then For Each værdi In Range("E21:E48") If værdi.Value = 0 Then Rows(værdi.Row).Hidden = True End If Next værdi End If
Din anden kommentar virkede ok, men hvis jeg ændrede noget i rullemenuen kan rækken ikke vises igen.
kan der modificeres i den macro du lavede som nummer 2, så rækken opdateres og vises igen.
Du skrev:
Denne er bedre, da den kun starter med at vise rækkerne igen i dit område
Sub skjul() Rows("21:48").Hidden = False For Each værdi In Range("E21:E48") If værdi.Value = 0 Then Rows(værdi.Row).Hidden = True End If Next værdi End Sub
der skal lige tilføjes at jeg har rullemenuer i alle rækker og kolonne fra a1 til e 20
håber du lige gider hænge på så vi kan løse dette problem.
Private Sub worksheet_change(ByVal target As Range)
If Not Intersect(target, Range("E1:E20")) Is Nothing Then For Each værdi In Range("E21:E48") If værdi.Value = 0 Then Rows(værdi.Row).Hidden = True Else Rows(værdi.Row).Hidden = False End If Next værdi End If
jeg kan ikke få den til at virke, jeg kan kun få denne til at virke.
Sub skjul() Rows.Hidden = False For Each værdi In Range("E21:E48") If værdi.Value = 0 Then Rows(værdi.Row).Hidden = True End If Next værdi End Sub
Jeg har rullemenuer fra a12 til e12, a15 til e15 og fra a18 til e18, i cellen under hver rullemenu er der en cellekæde, som angiver hvad valg jeg har lavet.
feks.
hvis jeg vælger menu punkt 1 (noget tekst)i a12, vises der i a13 1.
men rullemenuerne har ikke noget med delsummen e21 til 48 ad gøre
Macroen skal "bare" overvåge e21 til 48 og så gemme eller vise dem alt efter havd summen er. Så den ovenstående du lavede er megtig god den skal bare vise rækkerne hvis delsummen ændres fra 0 til feks 333,00
Håber du forstår ...
Hvis ikke det kan laves kan man så lave en knap som man først bruger når man er klar til at printe.
En knap som skjuler rækker med delsum 0 og en knap som "resetter" og viser alt igen, så man kan arbejde vidre og se alle celler
Private Sub worksheet_change(ByVal target As Range)
If Not Intersect(target, Range("A12:E18")) Is Nothing Then Rows.Hidden = False For Each værdi In Range("E21:E48") If værdi.Value = 0 Then Rows(værdi.Row).Hidden = True End If Next værdi End If
Jamen ok. Hvis du er tilfreds med det. Den anden virker fint hos mig og kører automatisk hver gang du ændrer en værdi i en af dine rullemenuer. Men måske jeg ikke helt forstår din opbygning af fakturaen. Ihvertfald godt du fik det til at virke.
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.