Avatar billede mrg Nybegynder
03. september 2003 - 13:49 Der er 16 kommentarer og
2 løsninger

Vis/skjul afh. af celle

Hej,

Jeg skal lave et ark som flere personer skal indrapportere i. Jeg ville dog meget gerne have det sådan at de enkelte kun så de celler som var relevante for dem.

Altså - jeg ville meget gerne kunne skjule/vise rækker alt efter hvilket navn der vælges i en menu.

Kan det lade sig gøre ?
03. september 2003 - 14:12 #1
Sagtens, men du skal spørge BAK eller retaxes, eller janvogt, jkrons eller flemmingdahl. de kan ryste det ud af ærmet. jeg har ikke tid i dag (og bruger for lang tid på at regne det ud)
Avatar billede mrg Nybegynder
03. september 2003 - 14:17 #2
Det lyder godt - mon ikke de ser spørgsmålet ?
Avatar billede fobian Nybegynder
03. september 2003 - 14:32 #3
Jeg har lavet et eksempel til din inspiration. Navnet læses fra en ComboBox1 på et Excel-ark. Der er så defineret et array med de felter, den enkelte må have lov til at skrive i Excel-arket. Den kan selvfølgelig udbygges, så det i stedet er rækker der må vises i stedet for celler.

Sub Beskyt()
Dim område As Variant
ActiveSheet.Unprotect
Cells.Locked = True

Select Case ComboBox1.Text
    Case "Fobian"
        område = Array("a1", "a2")
    Case "MRG"
        område = Array("b1", "b2")
End Select

For i = 0 To UBound(område)
    Range(område(i)).Locked = False
Next

ActiveSheet.Protect
End Sub
Avatar billede mrg Nybegynder
03. september 2003 - 14:45 #4
Tak for det, Fobian

Et par kommentarer:
1. I din opstilling kan MRG skrive i cellerne B1 og B2 ?
2. Skjules de øvrige celler ?
3. Hvordan ser det ud hvis det er rækker ?
Avatar billede mrg Nybegynder
03. september 2003 - 14:51 #5
Dette er i øvrigt min første flirt med VB i excel, så det bliver måske lidt omstændeligt.
Avatar billede aheiss Praktikant
03. september 2003 - 14:57 #6
Hvis du har mange navne kan du evt. kombinere med celler. Denne makro skjuler alle de rækker hvor der ikke står det relavante navn i kolonne A. (små bogstaver) - fra række 5. Den aktiveres når filen åbnes.
___________________________________
Sub auto_open()
Application.ScreenUpdating = False
ActiveSheet.Unprotect
    Range("a:a").Select
    Selection.EntireRow.Hidden = False
Dim navn As String
navn = InputBox("Indtast navn")
Dim omrode As Range
Set omrode = Range("a5:a500") ' antal rækker hvor relevant
For Each cell In omrode
    cell.Select
    If Selection = navn Then
    Else
        Selection.EntireRow.Hidden = True
    End If
Next
ActiveSheet.Protect
End Sub
Avatar billede jkrons Professor
03. september 2003 - 15:00 #7
fobian-> Bliver det ikke lidt omstændeligt, hvis der er mange celler for den enkelte bruger?

Denner løsning er baseret på, at A1 kolonnen i hver række indeholdeer navnet på den person, der må skrive i rækken. I en comboboks vælges den aktuelle person. Derefter skjules alle de rækker vedkommende må se. selve koden skal ligge på komboboksen:

Private Sub ComboBox1_Change()
r = ComboBox1.Value
For Each c In ActiveSheet.UsedRange.Columns("A:A").Cells
If c.Value = r Then
c.EntireRow.Hidden = False
Else: c.EntireRow.Hidden = True
End If
Next c
    Range("A65000").Select
    Selection.End(xlUp).Select
End Sub
Avatar billede jkrons Professor
03. september 2003 - 15:01 #8
fobian-> Det var array løsningen, der var kompleks, ikke den senere :-)
Avatar billede fobian Nybegynder
03. september 2003 - 15:08 #9
Det afhænger selvfølgelig af hvor mange celler eller rækker der er tale om der skal vises for den enkelte person. Hvis der er mange rækker, kan det være en fordel at lave en matrix i regnearket, som indeholder navne som overskrift. Derefter kan man afkrydse hvilke rækker der skal vises for hvert navn. Derefter oprettes en macro, som gennemløber kolonnen med medarbejdernavnet og som skjuler de rækker, hvor der ikke er sat kryds.
Avatar billede jkrons Professor
03. september 2003 - 15:10 #10
eller man kunne bruge et ark pr medarbeder og så lade et evt netlogin bestemme, hvilke ark, der skal vises :-)  Mulighederne er mange.
Avatar billede fobian Nybegynder
03. september 2003 - 15:18 #11
Ja - heldigvis :o)
Avatar billede mrg Nybegynder
03. september 2003 - 15:48 #12
UPS...der blev afvist ved en fejl (ham tumpen der sad og hjalp mig!). Gider I svare igen...så prøver vi igen...
Avatar billede mrg Nybegynder
03. september 2003 - 15:53 #13
Jeg har prøvet med jkrons' forslag.

Jeg har nu:
Private Sub ComboBox1_Change()
    ComboBox1.Text = "Vælg person"
    ComboBox1.AddItem "Christian"
    ComboBox1.AddItem "Andre"

r = ComboBox1.Value
For Each c In ActiveSheet.UsedRange.Columns("A:A").Cells
If c.Value = r Then
c.EntireRow.Hidden = False
Else: c.EntireRow.Hidden = True
End If
Next c
    Range("A100").Select
    Selection.End(xlUp).Select
End Sub

Men den skjuler alle rækker (1-100) uanset hvad jeg vælger...

Hvor går det galt ? Skal værdierne i kolonne A have specielt format ?
Derudover er listen i combobox gentagelse af christian og andre flere gange...hvorfor ?
Avatar billede jkrons Professor
03. september 2003 - 17:04 #14
Jeg fyldte min forsøgskomboboks fra et område i regnearket. I dit tilfælde fyldes den faktisk først, når du bruger den. Måske ligger fejlen her.

Prøv evt at fylde komboboksen på en anden hændelse, fx Worksheet_Open
Avatar billede fobian Nybegynder
04. september 2003 - 09:39 #15
Du får lige et nyt svar :-)

Har du ellers fået styr på det?
Avatar billede mrg Nybegynder
04. september 2003 - 20:18 #16
Nu kører det !!!! Min første VBA stump !!! Jaaaaa...tusind tak - er det ok at I deler pointene ? Det synes jeg ihvertfald !
Avatar billede jkrons Professor
04. september 2003 - 20:23 #17
Det er helt ok med mig :-) Tak!
Avatar billede fobian Nybegynder
04. september 2003 - 21:41 #18
Også ok med mig - og tak :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