Avatar billede Hovedbrud Nybegynder
29. september 2009 - 17:48 Der er 12 kommentarer

Skjul Kolonne Hvis Værdi VBA

Jeg ønsker at "hvis F8=1" så skal hele F kolonnen skjules og er den 0 skal den vises på mit ark som hedder status. Den må gerne skjules/vises med det samme værdien i F8 skifter.

Jeg bruger lige pt denne kode, som virker, men sikkert kan være meget kortere og kan opdatere uden at jeg skal kører macro manuelt.

Sub Skjul()
    If Range("F8").Value = 1 Then
        Columns("F").EntireColumn.Hidden = True
    Else
        Columns("F").EntireColumn.Hidden = False
    End If
    If Range("G8").Value = 1 Then
        Columns("G").EntireColumn.Hidden = True
    Else
        Columns("G").EntireColumn.Hidden = False
    End If
    If Range("H8").Value = 1 Then
        Columns("H").EntireColumn.Hidden = True
    Else
        Columns("H").EntireColumn.Hidden = False
    End If
    If Range("I8").Value = 1 Then
        Columns("I").EntireColumn.Hidden = True
    Else
        Columns("I").EntireColumn.Hidden = False
    End If
    If Range("J8").Value = 1 Then
        Columns("J").EntireColumn.Hidden = True
    Else
        Columns("J").EntireColumn.Hidden = False
    End If
    If Range("K8").Value = 1 Then
        Columns("K").EntireColumn.Hidden = True
    Else
        Columns("K").EntireColumn.Hidden = False
    End If
    If Range("L8").Value = 1 Then
        Columns("L").EntireColumn.Hidden = True
    Else
        Columns("L").EntireColumn.Hidden = False
    End If
    If Range("M8").Value = 1 Then
        Columns("M").EntireColumn.Hidden = True
    Else
        Columns("M").EntireColumn.Hidden = False
    End If
    If Range("N8").Value = 1 Then
        Columns("N").EntireColumn.Hidden = True
    Else
        Columns("N").EntireColumn.Hidden = False
    End If
    If Range("O8").Value = 1 Then
        Columns("O").EntireColumn.Hidden = True
    Else
        Columns("O").EntireColumn.Hidden = False
    End If
    If Range("P8").Value = 1 Then
        Columns("P").EntireColumn.Hidden = True
    Else
        Columns("P").EntireColumn.Hidden = False
    End If
    If Range("Q8").Value = 1 Then
        Columns("Q").EntireColumn.Hidden = True
    Else
        Columns("Q").EntireColumn.Hidden = False
    End If
End Sub
Avatar billede excelent Ekspert
29. september 2009 - 19:21 #1
Indsæt denne i arkets kodemodul

Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("F8:Q8")) Is Nothing Then Exit Sub
If Target = 1 Then
Target.Columns.EntireColumn.Hidden = True
Else
Target.Columns.EntireColumn.Hidden = False
End If
End Sub
Avatar billede Hovedbrud Nybegynder
29. september 2009 - 22:28 #2
Ved ikke om jeg sætter det ind det forkerte sted ??

Jeg går udfra at jeg skal trykke på Udvikler->Visual Basic og dobbelt klikker på Ark14(status) og sætter det ind der. Eller er jeg langt ude i skoven :o)

Der sker nemlig ikke noget ;o)
Avatar billede Hovedbrud Nybegynder
29. september 2009 - 22:38 #3
Skal måske lige hurtigt informere om, at den celle's værdi er en reference fra en anden celle.
Avatar billede excelent Ekspert
29. september 2009 - 23:18 #4
Lyder som om det er det rette sted, men ja det har betydning hvis værdien ændres via en formel, for det trikker koden ikke på.
Hvordan og hvor udløses hændelsen så ?
Avatar billede Hovedbrud Nybegynder
30. september 2009 - 00:54 #5
Hvis jeg selv skriver 1 i celle F8, skjuler F kolonnen sig som den skal. Men desværre ikke, når værdien ændre via formel.
Avatar billede Hovedbrud Nybegynder
30. september 2009 - 01:09 #6
Formelen som ændre, om det er 1 eller 0, er SAND/FALSK
Avatar billede Hovedbrud Nybegynder
30. september 2009 - 10:17 #7
Formelen som finder ud af, om det er SAND/FLASK, ser sådan ud:
=ER.FEJL(INDIREKTE("'"&$E$11&" "&F11&"'!"&TEKST($F$10;1)))

E11 = afs
F11 = 1
F10 = L35

og skal fortælle om der er et ark som "afs 1"

Håber det giver mening ;o)
Avatar billede excelent Ekspert
30. september 2009 - 14:59 #8
ok prøv udskift koden med denne, - samme sted
Avatar billede excelent Ekspert
30. september 2009 - 18:08 #9
ahemm og så lige koden :-)

Private Sub Worksheet_Calculate()
If Intersect(Target, Range("F8:Q8")) Is Nothing Then Exit Sub
If Target = 1 Then
Target.Columns.EntireColumn.Hidden = True
Else
Target.Columns.EntireColumn.Hidden = False
End If
End Sub
Avatar billede Hovedbrud Nybegynder
30. september 2009 - 21:27 #10
hmm det virkede slet ikke, fik en debug og dette blev markeret gult

If Intersect(Target, Range("F8:Q8")) Is Nothing Then

derefter fik jeg mange #Navn i mange celler.
Avatar billede Hovedbrud Nybegynder
30. september 2009 - 22:09 #11
Ikke noget jeg har forstand på, men kan det laves som Function ?
Avatar billede excelent Ekspert
30. september 2009 - 23:49 #12
Prøv send filen
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