Avatar billede janvogt Praktikant
08. august 2005 - 14:05 Der er 6 kommentarer og
1 løsning

VBA Skjul/vis celler

Hvordan vil VBA-koden se ud til følgende problemstilling:

Når f.eks. række "5" indeholder et "x" skal den pågældende kolonne skjules.

Derudover skal makroen fungere således, at hvis bare én kolonne er skjult, så skal makroen i stedet vise alle kolonner - altså:

HVIS Minimum én kolonne er skjult
SÅ Vis alle kolonner (hele arket)
ELLERS Skjul alle kolonner med "x" i række 5.
Avatar billede brynil Nybegynder
08. august 2005 - 16:39 #1
Prøv:

' Hvor mance x'er er der ?
For c = 1 To 10
    If Cells(5, c).Value = "x" Or Cells(5, c).Value = "X" Then i = i + 1
Next

' Hvis flere end 1 så skjul alle med x
If i > 1 Then
    Cells.Select
    Selection.EntireRow.Hidden = False
   
    For c = 1 To 10
        If Cells(5, c).Value = "x" Or Cells(5, c).Value = "X" Then
            Cells(c, c).EntireColumn.Hidden = True
   
        End If
    Next
    Cells(1, 1).Select
' ellers vis hele arket
Else
    Cells.Select
    Selection.EntireRow.Hidden = False
    Cells(1, 1).Select
End If
Avatar billede janvogt Praktikant
08. august 2005 - 17:03 #2
Tak for svaret, men den holder ikke helt.
Den skal tjekke, hvor mange kolonner der er skjulte, og ikke hvor mange der står med "x".

Forestil dig en "toggle"-makro, som viser hele arket, hvis er nogle skjulte kolonner, og hvis der ikke er nogle skjulte kolonner, så skjuler den alle dem med "x".

Makroen må derfor skulle vendes lidt rundt a'la:
' Hvor mance x'er er der ? <--- HVOR MANGE KOLONNER ER SKJULTE?
For c = 1 To 100
    If Cells(5, c).Value = "x" Or Cells(5, c).Value = "X" Then i = i + 1
Next

' Hvis flere end 0 er skjulte så vis hele arket
If i > 0 Then
   
    For c = 1 To 100
        If Cells(5, c).Value = "x" Or Cells(5, c).Value = "X" Then
            Cells(c, c).EntireColumn.Hidden = False
        End If
    Next

' ellers skjul kolonner med "x"
Else
    For c = 1 To 100
        If Cells(5, c).Value = "x" Or Cells(5, c).Value = "X" Then
            Cells(c, c).EntireColumn.Hidden = True
   
        End If
    Next
End If

Problemet er så bare tælleren, som skal tælle skjulte kolonner frem for "x"er.
Avatar billede janvogt Praktikant
08. august 2005 - 17:10 #3
Fandt ud af det:

Sub skjul()

' Hvor mance x'er er der ?
For c = 1 To 100
    If Cells(5, c).EntireColumn.Hidden = True Then i = i + 1
Next

' Hvis flere end 0 så vis hele arket
If i > 0 Then
    Cells.EntireColumn.Hidden = False

' ellers skjul kolonner med "x"
Else
    For c = 1 To 100
        If Cells(5, c).Value = "x" Or Cells(5, c).Value = "X" Then
            Cells(5, c).EntireColumn.Hidden = True
   
        End If
    Next
End If

End Sub


Smid et svar ....
Avatar billede brynil Nybegynder
08. august 2005 - 17:13 #4
Nej tak - du løste jo selv problemet ;)
Avatar billede janvogt Praktikant
08. august 2005 - 17:31 #5
Jamen jeg fik jo lige den hjælp jeg havde behov for ... men tak anyway :-)
Avatar billede janvogt Praktikant
08. august 2005 - 17:52 #6
Afsluttet
Avatar billede kabbak Professor
08. august 2005 - 18:35 #7
en kortere udgave

Sub skjul()
For c = 1 To 100
    If Cells(5, c).EntireColumn.Hidden = True Then Cells.EntireColumn.Hidden = False:  Exit Sub
Next
    For c = 1 To 100
        If UCase(Cells(5, c).Value) = "X" Then Cells(5, c).EntireColumn.Hidden = True
    Next
End Sub
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