Avatar billede lwi Juniormester
15. august 2019 - 12:36 Der er 5 kommentarer og
2 løsninger

Skjul række baseret på værdi i celle

I et excelark skal brugerne sætte kryds (x) i celle B3 eller B4 (Blå eller Gul)
Alt efter hvad der vælges, skal rækker, hvor der står fx Blå eller Gul i G-kolonnen skjules/vises.
Ideer til, hvordan man nemmest laver det.
Og gerne således at makroen kaldes, når x'et sættes.
Avatar billede jens48 Ekspert
15. august 2019 - 14:21 #1
Det kunne være noget i stil med dette. Ret selv områderne til.

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("B3:B4")) Is Nothing Then
    Columns.EntireColumn.Hidden = False
    Rows.EntireRow.Hidden = False
If Range("B3") = "X" Or Range("B3") = "x" Then
    Range("D:F").EntireColumn.Hidden = True
    Range("7:9").EntireRow.Hidden = True
End If
If Range("B4") = "X" Or Range("B4") = "x" Then
    Range("G:H").EntireColumn.Hidden = True
    Range("11:17").EntireRow.Hidden = True
End If
End If
End Sub
Avatar billede Jan K Ekspert
15. august 2019 - 14:33 #2
#1: Glemmer du ikke at teste for, hvcad der skal skjules? Altså se på indholdet af cg-kolonnen?
Avatar billede Jan K Ekspert
15. august 2019 - 14:43 #3
Jeg vil foreslå noget i denne stil

Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("b3:b4")) Is Nothing Then
        Columns.EntireColumn.Hidden = False
        Rows.EntireRow.Hidden = False
     
        If Target.Address = "$B$3" And Target.Value = "x" Then

                For Each c In Range("g5:g50").Cells
                    If UCase(c.Value) = "GUL" Then
                        c.EntireRow.Hidden = True
                    End If
                Next
        End If
        If Target.Address = "$B$4" Then

                For Each d In Range("g5:g50").Cells
                    If UCase(d.Value) = "BLÅ" Then
                        d.EntireRow.Hidden = True
                    End If
                Next
        End If
    End If
End Sub
Avatar billede lwi Juniormester
15. august 2019 - 14:55 #4
Tester - er der noget med at sub'en skal ligge et bestemt sted for, at virke (være synlig).
Jeg er ikke erfaren med at skrive vba i Excel - Word er mere simpelt
Avatar billede jens48 Ekspert
15. august 2019 - 14:56 #5
Hej Jan,
Det kan du da have ret i. Jeg lavde ikke læst opgaveformuleringen ordentligt.
Her er et andet forslag.

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("B3:B4")) Is Nothing Then
    Dim c As Range
    Columns.EntireColumn.Hidden = False
    Rows.EntireRow.Hidden = False
If Range("B3") = "X" Or Range("B3") = "x" Then
  For Each c In Range("G5:G1000")
  If c = "Blå" Then
  c.EntireRow.Hidden = True
  End If
  Next
End If
If Range("B4") = "X" Or Range("B4") = "x" Then
  For Each c In Range("G5:G1000")
  If c = "Gul" Then
  c.EntireRow.Hidden = True
  End If
  Next
End If
End If
End Sub
Avatar billede lwi Juniormester
15. august 2019 - 15:14 #6
Hej i 2 kloge hoveder (og alle kloge hoveder)
Skal koden gemmes et bestemt sted Modules eller under arket ?
Jeg er ikke vant til at lave vba kode i Excel, Word er ikke helt så kompliceret.
Avatar billede jens48 Ekspert
15. august 2019 - 15:16 #7
Højreklik på fanebladet og gem den under Vis Koder
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