Avatar billede Toppersurfer Mester
06. december 2017 - 10:39 Der er 5 kommentarer og
3 løsninger

VBA - skjule kolonner baseret på celleindhold - flere forskellige valgmuligheder

Hej.

Jeg har et Excel 2016 ark, hvor jeg skal skjule nogle kolonner baseret på indholdet i celle B3.

Resultatet skal gerne være således:
Hvis B3 = 1, skal kolonnerne F:T være skjult,
Hvis B3 = 2, skal kolonnerne C:E og I:T være skjult,
Hvis B3 = 3, skal kolonnerne C:H og L:T være skjult og så fremdeles for i alt 6 forskellige værdier for B3.

Jeg har prøvet mig lidt frem med nedenstående kode, men det er som om der går noget galt.:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

If Range("B3").Value = 1 Then
Columns("F:T").EntireColumn.Hidden = True
Else
Columns("F:T").EntireColumn.Hidden = False

ElseIf Range("B3").Value = 2 Then
Columns("C:E").EntireColumn.Hidden = True
Columns("I:T").EntireColumn.Hidden = True
Else
Columns("C:E").EntireColumn.Hidden = False
Columns("I:T").EntireColumn.Hidden = False

ElseIf Range("B3").Value = 3 Then
Columns("C:H").EntireColumn.Hidden = True
Columns("L:T").EntireColumn.Hidden = True
Else
Columns("C:H").EntireColumn.Hidden = False
Columns("L:T").EntireColumn.Hidden = False
End If

End Sub

Hvis jeg kun lader første del af koden stå, kan den godt skjule kolonnerne ved value=1 i B3, men jeg kan ikke finde ud af at have flere forskellige "if"-betingelser i koden.

HÅber I kan hjælpe :-)
Avatar billede finb Ekspert
06. december 2017 - 10:51 #1
Brug
SELECT CASE
er meget mere overskueligt for dig
Avatar billede Toppersurfer Mester
06. december 2017 - 11:07 #2
OK, den kender jeg ikke. hvor vil den skulle placeres i koden?
Avatar billede finb Ekspert
06. december 2017 - 11:20 #3
Select Case B3
  Case "1"
      hændelse 1
  Case "2"
      hændelse 2
  osv.
      osv.
  End Select
Avatar billede Toppersurfer Mester
06. december 2017 - 11:34 #4
OK, tak!

Nu ser den således ud:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)

Select Case B3

Case 1
Columns("F:T").EntireColumn.Hidden = True

Case 2
Columns("C:E").EntireColumn.Hidden = True
Columns("I:T").EntireColumn.Hidden = True

Case 3
Columns("C:H").EntireColumn.Hidden = True
Columns("L:T").EntireColumn.Hidden = True

End Select

End Sub

Men synes nu ikke at der sker noget, når jeg ændrer værdien i B3...
Avatar billede finb Ekspert
06. december 2017 - 11:49 #5
Du skal vist "unhide" alt først:
Columns("C:T").EntireColumn.Hidden = False

Select Case B3

Case 1
Columns("F:T").EntireColumn.Hidden = True

Case 2
Columns("C:E").EntireColumn.Hidden = True
Columns("I:T").EntireColumn.Hidden = True

Case 3
Columns("C:H").EntireColumn.Hidden = True
Columns("L:T").EntireColumn.Hidden = True

End Select
End Sub
Avatar billede jens48 Ekspert
06. december 2017 - 12:34 #6
Prøv med:

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("B3")) Is Nothing Then
Select Case Target
Case 1
Columns("C:T").EntireColumn.Hidden = False
Columns("F:T").EntireColumn.Hidden = True
Case 2
Columns("C:T").EntireColumn.Hidden = False
Columns("C:E").EntireColumn.Hidden = True
Columns("I:T").EntireColumn.Hidden = True
Case 3
Columns("C:T").EntireColumn.Hidden = False
Columns("C:H").EntireColumn.Hidden = True
Columns("L:T").EntireColumn.Hidden = True
End Select
End If
End Sub
Avatar billede Toppersurfer Mester
06. december 2017 - 12:47 #7
Fantastisk, den sidste kode løser problemet :-)

Tusind tak begge to :-)

Hvordan er det nu, jeg giver jer point? - det er noget tid siden, jeg har været herinde sidst.
Avatar billede finb Ekspert
08. december 2017 - 10:06 #8
Du kan give "point" til flere, fx #5
marker som svar
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