Avatar billede Nadiavbronx Juniormester
29. juni 2016 - 10:23 Der er 4 kommentarer

Skjul kolonner i VBA, hvis værdien i en celle skifter

Hej

Jeg har et skema i et excel ark, hvori der er en celle som indikere hvor mange kolonner der skal fremgå, det vil altså sige at hvis jeg i celle "E5" = 3 skal kolonne "F:H" fremkomme, og igen hvis "E5" = 7 så skal kolonne "F:L" fremkomme osv, dette gøres gældende helt op til "E5" = 20 og kolonnerne strækker sig således "F:Y". Er der en kode der kan hjælpe mig med dette problem, jeg har allerede i samme ark indskrevet disse koder:

(Denne kode laver ovenstående bare med rækker og ændre navn i fane) - denne kode virker dog ikke til kolonner, selvom jeg tilretter den med columns og de rigtige celler...

Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("C4")) Is Nothing Then
       
        If Range("C4") <> "" Then
            Application.ScreenUpdating = False
           
            n = Range("C4")
           
            Range("14:25").Rows.Hidden = False
            Range(15 + n & ":25").Rows.Hidden = True
           
            Application.ScreenUpdating = True
           
        End If
       
    End If
   
    If Not Intersect(Target, Range("F14")) Is Nothing Then
        If Target.Value <> "" Then
            Sheets(5).Name = Target.Value
        End If
    End If
   
    End Sub
Avatar billede H_Klein Novice
30. juni 2016 - 23:44 #1
Hejsa

herunder et forslag...

Sub kolonner()

Dim K As Integer    'Variabel der vælger startkolonne = 5
Dim N As Integer    'Variabel der viser ønsket antal viste kolonner
   
    K = 5
   
    N = K + Cells(5, 5)
   
    N = N + 1
    K = K + 1
    Range(Columns(N), Columns(20)).Hidden = True
   

End Sub
Avatar billede jens48 Ekspert
02. juli 2016 - 22:07 #2
Hvis du også vil vise nogle skjulte kolonner igen kan du bruge denne makro:

Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("E5")) Is Nothing Then
  For x = 6 To 5 + Cells(5, 5)
  Columns(x).Hidden = False
  Next
  For x = 6 + Cells(5, 5) To 50
  Columns(x).Hidden = True
  Next
    End If
End Sub
Avatar billede Nadiavbronx Juniormester
04. juli 2016 - 15:54 #3
Jens48
- Koden skjuler alle kolonner, men den skal kunne skjule dem alt efter hvad jeg taster i Celle 'E5', det vil sige at taster jeg 5 skal der vises fem af kolonnerne og de resterende 15 skal skjules osv??
Avatar billede kabbak Professor
20. juli 2016 - 13:55 #4
har lige rettet i jens48's kode

Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("E5")) Is Nothing Then
    Application.ScreenUpdating = False
    For x = 6 To 50
  Columns(x).Hidden = True
  Next
   
  For x = 6 To 5 + Range("E5")
  Columns(x).Hidden = False
  Next
  Application.ScreenUpdating = True
    End If
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
Kurser inden for grundlæggende programmering

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