Avatar billede mira96ac Praktikant
23. marts 2009 - 11:51 Der er 5 kommentarer

Skjule kolonner

Hejsa

Jeg vil gerne have en makro som automatisk gør følgende:

I arket standata er et felt udfyldt med enten (måned;kvartal) på en rulleliste.

Vælger man måned er alle kolonner vist i de efterfølgende ark.

Vælger man derimod "kvartal" skal nogle kolonner på nogle af de efterfølgende ark skjules automatisk.

Hvordan kan man gøre dette.
Avatar billede mira96ac Praktikant
24. marts 2009 - 16:47 #1
Slet ikke nogen løsning ?
Avatar billede jkrons Professor
26. marts 2009 - 16:35 #2
For at kunne lave en makro er det nødvendigt at vide hvilke kolonner, der skal skjules.
Avatar billede Niels_Bjarne Praktikant
26. marts 2009 - 22:05 #3
Sub Skjulmaaneder()
Dim iSheet As Integer
Dim oSheet As Worksheet
Dim iCol As Integer

' Loop igennem alle faner
For iSheet = 1 To ActiveWorkbook.Sheets.Count

    ' Sæt oSheet til aktuel fane
    Set oSheet = ActiveWorkbook.Sheets(iSheet)
   
    ' Fanen standata springes over
    If Not oSheet.Name = "standata" Then
       
        ' Løb i gennem de første 3200 kolonner (bør ændres til hvad der er relevant)
        For iCol = 1 To 3200
       
            ' Vær sikker på at kolonnen ikke er skjult uden at skulle være det
            oSheet.Cells(1, iCol).EntireColumn.Hidden = False
       
            ' Kun når det er et kvartal er det relevant at skjule kolonner
            If Range("standata!B2").Value = "kvartal" Then
                ' Nedenstående if ændres til hvad der afgør om det er en månedskolonne
                ' I dette eksempel testes på om teksten i række 2 er "Måned"
                If oSheet.Cells(2, iCol).Value = "Måned" Then
                    oSheet.Cells(2, iCol).EntireColumn.Hidden = True
                End If
            End If
        Next iCol
    End If
Next iSheet
       
End Sub
Avatar billede mira96ac Praktikant
30. marts 2009 - 21:01 #4
Kan man lave det sådan at den "kører" makroen automatisk så snart man vælger "Kvartal" i Stamdataarket ? Og selvfølge skal den vise kolonerne igen så snart man vælger "Måned".

Jeg ved også lige præcis hvilke kolonner der skal skjules i de forskellige ark (der skal ikke stå noget i række to e.l.), kan man ikke definere kolonnerne i makroen ?
Avatar billede Niels_Bjarne Praktikant
11. april 2009 - 21:36 #5
For at køre makroen automatisk:
I Visual Basic editoren (Alt+F11): dobbeltklik til venstre i billedet på "Sheet1 (standata)" (Sheet1 kan godt hedde noget andet i dit tilfælde)
For oven til højre i billedet vælg "Worksheet" i den venstre valgliste og "Change" i den højre valgliste.
Skriv følgende stump kode:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim isect As Range

    ' Er Kvartal/måned ændret, så kald funktionen SkjulMaaneder
    Set isect = Application.Intersect(Target, Range("B2"))
    If Not isect Is Nothing Then Skjulmaaneder
    Set isect = Nothing
End Sub

For selv at udpege de kolonner der skal skjules/vises, ændrer du makroen Skjulmaaneder til følgende:

Sub Skjulmaaneder()
Dim ErKvartal As Boolean

If Range("standata!B2").Value = "Kvartal" Then
    ErKvartal = True
Else
    ErKvartal = False
End If

' Nedenstående er eksempler, der skal rettes til!
' Ret i hver linje navnet på fanen og kolonnenummeret
' Eksemplerne skjuler/viser kolonne 5 i arket Østdanmark og kolonne 6 i arket Vestdanmark
ActiveWorkbook.Sheets("Østdanmark").Cells(1, 5).EntireColumn.Hidden = ErKvartal
ActiveWorkbook.Sheets("Vestdanmark").Cells(1, 6).EntireColumn.Hidden = ErKvartal

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
Vi har et stort udvalg af Excel kurser. Find lige det kursus der passer dig lige her.

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