Avatar billede covesen Praktikant
05. december 2006 - 23:20 Der 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

Venlig hilsen
Christian
Avatar billede mrjh Novice
05. december 2006 - 23:28 #1
Makro som indsættes i arkmodul.
Alt+F11 > F7, kopier koden ind og tryk F5


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
Avatar billede mrjh Novice
05. december 2006 - 23:33 #2
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
Avatar billede covesen Praktikant
06. december 2006 - 17:19 #3
Hej

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.

kan det lade sig gøre?

Venlig hilsen
Christian
Avatar billede covesen Praktikant
06. december 2006 - 17:27 #4
Hej

Macroen skal helst køre fra jeg åbner til jeg lukker arket, så det opdateres efter de valg jeg laver.

kan man lave en knappe, så det kan slåes til eller fra, hvis jeg skal redigere teksten eller ligende i rækken
Avatar billede covesen Praktikant
06. december 2006 - 17:28 #5
eller har excel en genvejs tast til at kortvarigt deaktivere macros
Avatar billede mrjh Novice
06. december 2006 - 20:04 #6
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

End Sub
Avatar billede covesen Praktikant
06. december 2006 - 21:48 #7
Hej,

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

du skal nok forklare det helt ned i detaljer.

venligst
Christian
Avatar billede mrjh Novice
06. december 2006 - 22:25 #8
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
   
End Sub
Avatar billede covesen Praktikant
06. december 2006 - 22:56 #9
Hej,

Jeg oplever at macroen ikke virker.

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.
Avatar billede mrjh Novice
06. december 2006 - 23:43 #10
Ups en lille fejl. Prøv denne


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
   
End Sub
Avatar billede mrjh Novice
06. december 2006 - 23:49 #11
Husk at ændre E1:E20 til cellerne med din rullemenu
Avatar billede covesen Praktikant
07. december 2006 - 17:41 #12
Hej

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

Venlig hilsen
Christian Ovesen
Avatar billede mrjh Novice
07. december 2006 - 17:57 #13
Du skriver at rullemenuerne ikke har noget med delsummen at gøre. Hvad er det så der gør at summerne i E21:E48 ændrer sig ?
Avatar billede covesen Praktikant
07. december 2006 - 18:40 #14
Agh jo...sorry

det er der da

Rullemenuerne bestemmer delsummen, men der står tekst rullemenuen, ingen tal.

Et simpelt eksempel:

a12 = rullemenu, som indeholder 3 valg
a13 = cellekæde til rullemenu, som viser 3 hvis valg 3 er valgt i rullemenuen osv.

a21 til D21 = tekst og tal celler som bliver opdateret ud fra valg i rullemenu

E21 = summen af tal i a21 til d21

hvis der står 0 i E21 skal rækken skjules
hvis e21 indeholder alt andet en 0 skal den vises

sådan skal det være i E21 til E48.
Avatar billede mrjh Novice
07. december 2006 - 18:56 #15
Så makroen skal kører aut. hver gang der sker en ændring i rullemenuerne, korrekt ?
Avatar billede covesen Praktikant
07. december 2006 - 19:04 #16
ja
Avatar billede mrjh Novice
07. december 2006 - 19:26 #17
Ja så burde denne virke.


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
   
End Sub
Avatar billede covesen Praktikant
07. december 2006 - 19:38 #18
Kan ikke få den til at virke, men den første kode har jeg nu modificeret
så den virker på 2 knapper.

Og dette virker fint for mig, så der er ingen grund til at gå vidre.

knap 1 skjuler rækker med 0 og printer ud
knap 2 resetter valg og viser alt

du skal have dine points, du gav mig jo koden og den er jeg taknemlig for

mange tak for din hjælp.
Avatar billede mrjh Novice
07. december 2006 - 19:51 #19
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.
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