Avatar billede jath08ac Forsker
14. juli 2016 - 16:34 Der er 3 kommentarer

Vis / skjul kolonner VBA

Hej,

Jeg har lavet en Excel fil, som skal skjule en række kolonner, på baggrund af hvilken dato der indtastet i en udarbejdet UserForm hertil.

I knappen på UserFormen, har jeg indsat nedenstående kode, som skal vise/skjule kolonner i et andet ark i samme forbindelse med at dato indtastes.

Mit problem er, at hvis jeg indtaster datoer som ligger mellem den 1 og 12, så sker der ikke noget, men datoer fra den 13 til 31, der kan koden godt vise/skjule kolonner.

Håber at i kan hjælpe

Private Sub CommandButton1_Click()

'slå skærmopdatering til igen
Application.ScreenUpdating = False

Dim sh1 As Worksheet

Set sh1 = ActiveWorkbook.Sheets("Salg&Ordre")
Set sh2 = ActiveWorkbook.Sheets("Controlling")
 
sh2.Range("M6").Value = Format(TextBox1.Value, "dd-mm-yyyy")
             
              ThisWorkbook.Save

Unload Me
 


    If Range("Dag").Value = 1 Then 'Denne kode er kopieret 31 gange
        sh1.Columns("F").EntireColumn.Hidden = False
        sh1.Columns("G").EntireColumn.Hidden = True
        sh1.Columns("H").EntireColumn.Hidden = True
        sh1.Columns("I").EntireColumn.Hidden = True
        sh1.Columns("J").EntireColumn.Hidden = True
        sh1.Columns("K").EntireColumn.Hidden = True
        sh1.Columns("L").EntireColumn.Hidden = True
        sh1.Columns("M").EntireColumn.Hidden = True
        sh1.Columns("N").EntireColumn.Hidden = True
        sh1.Columns("O").EntireColumn.Hidden = True
        sh1.Columns("P").EntireColumn.Hidden = True
        sh1.Columns("Q").EntireColumn.Hidden = True
        sh1.Columns("R").EntireColumn.Hidden = True
        sh1.Columns("S").EntireColumn.Hidden = True
        sh1.Columns("T").EntireColumn.Hidden = True
        sh1.Columns("U").EntireColumn.Hidden = True
        sh1.Columns("V").EntireColumn.Hidden = True
        sh1.Columns("W").EntireColumn.Hidden = True
        sh1.Columns("X").EntireColumn.Hidden = True
        sh1.Columns("Y").EntireColumn.Hidden = True
        sh1.Columns("Z").EntireColumn.Hidden = True
        sh1.Columns("AA").EntireColumn.Hidden = True
        sh1.Columns("AB").EntireColumn.Hidden = True
        sh1.Columns("AC").EntireColumn.Hidden = True
        sh1.Columns("AD").EntireColumn.Hidden = True
        sh1.Columns("AE").EntireColumn.Hidden = True
        sh1.Columns("AF").EntireColumn.Hidden = True
        sh1.Columns("AG").EntireColumn.Hidden = True
        sh1.Columns("AH").EntireColumn.Hidden = True
        sh1.Columns("AI").EntireColumn.Hidden = True
        sh1.Columns("AJ").EntireColumn.Hidden = True
       
        End If
'slå skærmopdatering fra
Application.ScreenUpdating = True
 
End Sub
Avatar billede kabbak Professor
14. juli 2016 - 17:25 #1
denne kode skulle udgøre det for alle 31

Sub CommandButton1_Click()
    Dim Dag As Integer
    'slå skærmopdatering fra
    Application.ScreenUpdating = False

    Dim sh1 As Worksheet

 
    Set sh2 = ActiveWorkbook.Sheets("Controlling")

      sh2.Range("M6").Value = Format(TextBox1.Value, "dd-mm-yyyy")

      ThisWorkbook.Save

      Unload Me
    Dag = (Day(Range("Dag")) + 5)
    ActiveWorkbook.Sheets("Salg&Ordre").Columns("F:AJ").EntireColumn.Hidden = True
    ActiveWorkbook.Sheets("Salg&Ordre").Columns(Dag).EntireColumn.Hidden = False

    'slå skærmopdatering til igen
    Application.ScreenUpdating = True
    Set sh2 = Nothing

End Sub
Avatar billede jath08ac Forsker
14. juli 2016 - 17:40 #2
Det funger, men ikke helt som det skal.

Har ikke helt fået udtrykt hvad koden skal kunne i mit spørgsmål, beklager.

Hvis personen taster dato 15-7-16, så skal kolonnerne F til T vises.
Hvis personen taster dato 5-7-16, så skal kolonnerne F til L vises
Hvis personen taster dato 1-7-16, så skal kolonnen F vises

Derudover er fanen beskyttet med kode, så det skal koden også kunne tage højde for.
Avatar billede kabbak Professor
14. juli 2016 - 18:41 #3
Sub CommandButton1_Click()
    Dim Dag As Integer
    'slå skærmopdatering fra
    Application.ScreenUpdating = False

    Dim sh1 As Worksheet


    Set sh2 = ActiveWorkbook.Sheets("Controlling")

    sh2.Range("M6").Value = Format(TextBox1.Value, "dd-mm-yyyy")

    ThisWorkbook.Save

    Unload Me
    Dag = (Day(Range("Dag")) + 5)
    ActiveWorkbook.Sheets("Salg&Ordre").Columns("F:AJ").EntireColumn.Hidden = True
    For col = 6 To Dag
        ActiveWorkbook.Sheets("Salg&Ordre").Columns(col).EntireColumn.Hidden = False
    Next
    'slå skærmopdatering til igen
    Application.ScreenUpdating = True
    Set sh2 = Nothing

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

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