Avatar billede BFV Juniormester
08. september 2022 - 11:43 Der er 8 kommentarer og
2 løsninger

show hidden rows based on cell value

I need a VBA that based on a value in a cell, shows specific rows in a spread sheet. Anyone?
If value in cell A2 = basic, then show row 1-10.
If value in call A2 = Complex, then show rows 20-50 and so on.
Avatar billede jens48 Ekspert
08. september 2022 - 12:53 #1
Pas på med at lave en makro, som skjuler den linje du skriver ind i. Men med dette forbehold laver denne makro, det du ønsker, hvis jeg har forstået dig korrekt.
Den aktiveres, når du skriver i A2

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("a2")) Is Nothing Then
Range("A1:A100").EntireRow.Hidden = True
If Target = "Basic" Then
Range("A1:A10").EntireRow.Hidden = False
End If
If Target = "Complex" Then
Range("A20:A50").EntireRow.Hidden = False
End If
Target.Select
End If
End Sub
Avatar billede BFV Juniormester
08. september 2022 - 14:54 #2
Hej jens48.

Hvis jeg forstår ovenstående, så skjuler den også rækkerne, hvis intet er valgt range. Korrekt?
Formålet med makroen er at lave et specifikt spørgeskema afhængig af hvad der er valgt i cellen.
Min tanke var så at have alle rækker med alle mulige spørgsmål skjulte og så have de relevante komme frem afhængig af hvad brugeren vælger i range. Brugeren vælger fra en rulleliste i range.
Avatar billede jens48 Ekspert
08. september 2022 - 15:09 #3
Ja, den starter med at skjule rækkerne 1 til 100. Det kan selvfølgelig laves om, så den i hvert fald ikke skjuler række 2, hvor du taster dit valg ind. Med denne lille ændring ville den se sådan ud:

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("a2")) Is Nothing Then
Range("A3:A100").EntireRow.Hidden = True

If Target = "Basic" Then
Range("A3:A10").EntireRow.Hidden = False
End If

If Target = "Complex" Then
Range("A20:A50").EntireRow.Hidden = False
End If

Target.Select
End If
End Sub

Hvis du vil have flere valgmuligheder end to skal der blot for hver mulighed insættes tre linjer
Avatar billede BFV Juniormester
09. september 2022 - 07:21 #4
Mange tak. Det ser ud til at virke
Avatar billede store-morten Ekspert
09. september 2022 - 12:07 #5
Forenklet:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("a2")) Is Nothing Then
    Rows("3:100").EntireRow.Hidden = True

        If Target = "Basic" Then Rows("3:10").EntireRow.Hidden = False
        If Target = "Complex" Then Rows("20:50").EntireRow.Hidden = False

    Target.Select
End If
End Sub
Avatar billede BFV Juniormester
12. september 2022 - 08:37 #6
Jeg har denne som gerne skulle skjule række 12 hvis værdien i celle F10 er tom eller >40. Den virker dog ikke

Private Sub Worksheet_Change_2(ByVal Target As Range)
If Not Intersect(Target, Range("F10")) Is Nothing Then
Row("12").EntireRow.Hidden = True

If Target < 40 Then Row(12).EntireRow.Hidden = False


Target.Select
End If
End Sub
Avatar billede jens48 Ekspert
12. september 2022 - 09:18 #7
Prøv med denne linje i stedet.

It Target <> "" and Target <40 Then Row(12).EntireRow.Hidden = False
Avatar billede BFV Juniormester
12. september 2022 - 10:52 #8
Der sker ikke rigtig noget
Avatar billede jens48 Ekspert
12. september 2022 - 11:30 #9
Jeg havde lavet en stavefejl, jeg har fjernet citationstegnene omkring 12, Row rettet til Rows, og _2 i første linje fjernet

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("F10")) Is Nothing Then
Rows(12).EntireRow.Hidden = True

If Target <> "" And Target < 40 Then Rows(12).EntireRow.Hidden = False

Target.Select
End If
End Sub
Avatar billede BFV Juniormester
12. september 2022 - 11:40 #10
Denne virker

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Range("f10") > 40 Or Range("f10") = "" Then
Rows("12").EntireRow.Hidden = True
Else
Rows("12").EntireRow.Hidden = False

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