Avatar billede jath08ac Forsker
09. marts 2018 - 11:10 Der er 14 kommentarer og
1 løsning

Skjul kolonner VBA kode

Hej,

Jeg har lavet et Gantkort, men har lidt problemer med at lave en kode der skal skjule de kolonner der ikke skal vises. Valget af hvor mange kolonner der skal vises, bliver foretaget i en UserForm, hvor der er indsat en ComboBox (navn:ComboBox1) med værdierne 1 til 8.

Jeg har navngivet mine kolonner således: År2018, År2019, År2020 osv. indtil År2043.

I Excel filen har jeg navngivet (IDagÅr) et områder som viser årstallet for det aktive år.

Mit problem er at lave koden som gør, at hvis jeg i comboBox1 vælger værdien 5, så skal kolonnerne År2018 til År2022 vises, resten af kolonnerne, altså fra År2023 til År2043, skjules.

Koden skal samtid være dynamisk, således når årstallet er 2019, så vil det i ovenstående eksempel være kolonnerne År2019 til 2023 der skal vises

Håber nogen kan hjælpe med en kode hertil.

pft.
Avatar billede kim1a Ekspert
09. marts 2018 - 13:20 #1
Kan du ikke et sted i disse kolonner have en tidsangivelse, således at =year(now())-2018 skaber dynamikken og så blot lader en if sætning i loop i vbaen afgøre om kolonnen skal skjules.
Avatar billede store-morten Ekspert
09. marts 2018 - 14:28 #2
"Jeg har navngivet mine kolonner således: År2018, År2019, År2020 osv. indtil År2043."

Jeg går ud fra det er i A1:AA1
Ret navne til rene årstal så År2018 = 2018 osv.

Prøv:
Sub test()
Dim Antal As Integer

Columns("A:AA").EntireColumn.Hidden = False

    On Error Resume Next
            Antal = Application.InputBox _
            (Prompt:="Hvor mange år vil du have med.", _
                    Title:="Antal år", Type:=1)
    On Error GoTo 0

        If Antal = 0 Then
            Exit Sub
        Else
        If Antal > 8 Then
            Exit Sub
        End If
        End If
 
    Iår = Year(Now())
    Sår = Iår + Antal
 
For Each c In Range("A1:AA1").Cells
    If c < Iår Then c.EntireColumn.Hidden = True
    If c >= Sår Then c.EntireColumn.Hidden = True
Next c
End Sub
Avatar billede jath08ac Forsker
11. marts 2018 - 14:33 #3
@store-morten: Jeg får en fejl, når jeg prøver at ændre navnet fra År2018 til 2018. Får at vide, at navnet er ugyldigt, da det eventuel ikke starter med et bogstav. Så ved ikke lige hvordan jeg ændret navnet til 2018?
Avatar billede store-morten Ekspert
11. marts 2018 - 16:54 #4
Det er fordi du har navn-givet kolonnerne med "Navnestyring"

(i]"Jeg går ud fra det er i A1:AA1
Ret navne til rene årstal så År2018 = 2018 osv."[/i]

Altså:
A1: 2018
B1: 2019
C1: 2020.......
Avatar billede store-morten Ekspert
11. marts 2018 - 17:12 #5
"Jeg går ud fra det er i A1:AA1
Ret navne til rene årstal så År2018 = 2018 osv."


Altså:
A1: 2018
B1: 2019
C1: 2020.......

Makroen kikker på A1 så B1..... osv
Avatar billede jath08ac Forsker
11. marts 2018 - 21:00 #6
Området er i Y1:LX1.

Området År2018 er defineret i området Y1:AJ1 ; År2019 er defineret i område AK1:AV1 osv.
Forstår stadig ikke hvordan jeg kan rettet navne til 2018, 2019 osv. ved at bruge navnestyring?
Avatar billede store-morten Ekspert
11. marts 2018 - 21:11 #7
Glem navnestyrring.

Makroen jeg har lavet skal bruge kolonne overskrifter i Arket
Altså årstal tastet i cellerne:
A1: 2018
B1: 2019
C1: 2020.......osv.

Er der ikke ledigt i række, tilføj en række øverst, og tast årstal ind i Arket.

Makroen kikker i Arket på A1 så B1..... osv
Avatar billede store-morten Ekspert
11. marts 2018 - 21:13 #8
Prøv evt. i et nyt tomt Ark.
Hvor du taster 2018 i A1, 2019 i B1, fylder ud til 2034 i AA1.

Test makro heri.
Avatar billede store-morten Ekspert
11. marts 2018 - 21:17 #9
Har selv lige prøvet i et tomt Ark.
AA1 = 2044 ;-)
Avatar billede store-morten Ekspert
11. marts 2018 - 23:10 #10
Prøver med en ny makro, ud fra de nye oplysninger.
Bruger ikke navnestyring eller overskrifter.

Starter med at skjule kolonner i Y:LX
Viser  X * 12 kolonner ud fra "I år" og Inputbox vælg.

Husk at handlinger udført ved hjælp af en makro ikke kan fortrydes med Fortryd funktionen. Afprøv derfor altid dine makroer på en kopi af dine data.

Sub test2()
Dim Antal As Integer

Columns("Y:LX").EntireColumn.Hidden = True

    On Error Resume Next
            Antal = Application.InputBox _
            (Prompt:="Hvor mange år vil du have med.", _
                    Title:="Antal år", Type:=1)
    On Error GoTo 0

        If Antal = 0 Then
            Exit Sub
        Else
        If Antal > 8 Then
            Exit Sub
        End If
        End If
 
    Iår = Year(Now()) - 1993
    Sår = (Iår - 1) + (Antal * 12)
   
Cells(1, Iår).Activate
   
Range(Columns(Iår), Columns(Sår)).Hidden = False
   
End Sub
Avatar billede jath08ac Forsker
12. marts 2018 - 10:17 #11
Jeg har prøvet at indsætte den sidste kode :-) Men får en fejl ved Iår = Year(Now())-1993.
Når jeg prøver at køre maakroen, så bliver Year markeret og får følgende fejlmeddelelse:
"Compile error:
Worng number of arguments or invalid property assignment"
Avatar billede jath08ac Forsker
12. marts 2018 - 13:21 #13
Har klippet din kode og i mit ark. men den fejler stadig. Kan se at det laver Year(Now()) om til year(Now())

Ved ikke om det er det der fejler, for den fil du har lavet fungerer fint ;-(
Avatar billede store-morten Ekspert
12. marts 2018 - 14:07 #14
Prøv at "Dim" I år og Sår ligesom
Dim Antal As Integer
Avatar billede jath08ac Forsker
13. marts 2018 - 08:56 #15
Det har jeg prøvet, men det hjælper. Det virker som om at det er Excel filen der fejler noget. Hvis jeg prøver at skrive ?year(now()) i Immediate window så fejler koden også. Hvis jeg så åbner en hel ny Excel fil, så kan jeg godt skrive ?year(now()) i Immediate window, og så retunerer den 2018.

Hvad kan jeg gøre, vil helst undgå at lave en ny Excel fil, da der ligger en del koder og UserForms i Excel 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
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



Seneste spørgsmål Seneste aktivitet
I dag 06:10 Excel åbner fil i kæmpe format Af Aske i Excel
I går 22:00 Datafordeler Af Lsk i PHP
I går 12:37 Summere beløb pr. dato Af TTA i Excel
31/1022:44 Tilslutte chassic fans Af viking69 i PC
31/1020:28 LED lysstofrør Af ErikHg i Fri debat