Avatar billede Cikija Nybegynder
07. marts 2016 - 17:58 Der er 11 kommentarer og
1 løsning

Hændelse ved indtastninger i felter

Det jeg ønsker at hvis der tastes noget ind i A1, åbner fanerne 1+2+3(De er skjult, da jeg kun vil have relevante faner åbne.

Det kan jeg godt vha nedenstående indsat i worksheet

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("A1")) Is Nothing Then
    Sheets("1").Visible = True
    Sheets("2").Visible = True
    Sheets("3").Visible = True     
      End If
End Sub

Men jeg skal åbne andre faner hvis der tastes noget ind i A2.
Det kan jeg ikke rigtigt finde ud af.
Avatar billede jens48 Ekspert
07. marts 2016 - 18:18 #1
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("A1:A2")) Is Nothing Then
If Target.Row = 1 Then
    Sheets("1").Visible = True
    Sheets("2").Visible = True
    Sheets("3").Visible = True
Else
    Sheets("4").Visible = True
    Sheets("5").Visible = True
    Sheets("6").Visible = True
End If
End If
End Sub
Avatar billede Cikija Nybegynder
07. marts 2016 - 18:55 #2
Måske har jeg ikke været konkret nok:

Hvis der er skrevet i A1, skal 1,2 og 3 åbne
Hvis der er skrevet i A2, skal 4,5 og 6 åbne

Hvis der er skrevet i A2, men ikke i A1, skal kun 4,5 g 6 åbne.
Hvis der er skrevet i A1, men ikke i A2, skal kun 1,2 og 3 åbne.
Avatar billede jens48 Ekspert
07. marts 2016 - 20:02 #3
Så skal der bare lukkes for samtlige ark minus forsiden først. Ret selv til hvis den ikke hedder "Forside":

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("A1:A2")) Is Nothing Then
Dim ws As Worksheet
For Each ws In Worksheets
If ws.Name <> "Forside" Then
ws.Visible = False
End If
Next
If Target.Row = 1 Then
    Sheets("1").Visible = True
    Sheets("2").Visible = True
    Sheets("3").Visible = True
Else
    Sheets("4").Visible = True
    Sheets("5").Visible = True
    Sheets("6").Visible = True
End If
End If
End Sub
Avatar billede jens48 Ekspert
07. marts 2016 - 20:27 #4
Eller denne hvis du vil have at siderne 1 til 6 alle skal være åbne, når der er skrevet i begge celler:

If Not Intersect(Target, Range("A1:A2")) Is Nothing Then
Dim ws As Worksheet
For Each ws In Worksheets
If ws.Name <> "Forside" Then
ws.Visible = False
End If
Next
If Range("A1") <> "" Then
    Sheets("1").Visible = True
    Sheets("2").Visible = True
    Sheets("3").Visible = True
End If
If Range("A2") <> "" Then
    Sheets("4").Visible = True
    Sheets("5").Visible = True
    Sheets("6").Visible = True
End If
End If
End Sub
Avatar billede Cikija Nybegynder
07. marts 2016 - 21:38 #5
Hm.
Det virker ikke helt efter hensigten.

Her den rigtige kode:

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("D16:D42")) Is Nothing Then
Dim ws As Worksheet
For Each ws In Worksheets
If ws.Name <> "INDSKRIV" Then
ws.Visible = False
End If
Next
If Target.Row = 1 Then
    Sheets("1").Visible = True
    Sheets("2").Visible = True
    Sheets("Toldfaktura  - 1").Visible = True
    Sheets("Følgeseddel 1").Visible = True
Else
    Sheets("3").Visible = True
    Sheets("4").Visible = True
    Sheets("Toldfaktura  - 1").Visible = True
    Sheets("Følgeseddel 1").Visible = True
End If
End If
End Sub


Når jeg taster i D16: skulle (1),(2),(Toldfaktura -1), og (Følgeseddel 1) åbne.
Den åbner (3), (4), (Toldfaktura -1), og (Følgeseddel 1).

Der er i virkeligheden flere rækker med flere faner der skal åbne, men jeg tænker, at hvis jeg kan få disse to til at virke, kan resten nok også falde på plads.
Avatar billede jens48 Ekspert
08. marts 2016 - 00:05 #6
If Target.Row = 1 Then

skal ændres til

If Target.Row = 16 Then
Avatar billede Cikija Nybegynder
08. marts 2016 - 08:03 #7
Efter ændring:
Når jeg skriver i felt D17: Åbner de rigtige.
Men når jeg skriver i D16 åbner de rigtige, men den lukker de andre.
Og omvendt.
Det er meningen, at efterhånden som D16,D17,D18 osv. bliver udfyldt, skal de tilhørende faner åbne, og forblive åben.
Det virker som om vi er tæt på nu.
Avatar billede jens48 Ekspert
08. marts 2016 - 08:55 #8
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("D16:D42")) Is Nothing Then
Dim ws As Worksheet
For Each ws In Worksheets
If ws.Name <> "INDSKRIV" Then
ws.Visible = False
End If
Next
If Target.Row = 16 Then
    Sheets("1").Visible = True
    Sheets("2").Visible = True
    Sheets("Toldfaktura  - 1").Visible = True
    Sheets("Følgeseddel 1").Visible = True
End if
If Target.Row = 17 Then
    Sheets("3").Visible = True
    Sheets("4").Visible = True
    Sheets("Toldfaktura  - 1").Visible = True
    Sheets("Følgeseddel 1").Visible = True
End If


End If
End Sub

Og i mellemrummet kan du fortsætte med

If Target.Row = 18 Then
    Sheets("5").Visible = True
    Sheets("6").Visible = True
    Sheets("Toldfaktura  - 1").Visible = True
    Sheets("Følgeseddel 1").Visible = True
End If

osv.
Avatar billede Cikija Nybegynder
08. marts 2016 - 14:21 #9
Hmm.
Stadig ikke helt som det skal være.
Når jeg taster i D16, gør den det rigtigt.
Når jeg så bagefter taster i D17, åbner den rigtig nok, men den lukker dem som D16 lige har åbnet. De skal forblive åbne.
Det skal være sådan, at der hvor der er tastet (imellem D16 og D42), der skal de faner, som passer til, være åbne.
Hvis jeg kun skulle taste i 'en af rækkerne, ville det være fint nok, men sådan er det desværre ikke.
Avatar billede jens48 Ekspert
08. marts 2016 - 14:45 #10
Du skulle have arbejdet videre med det forslag jeg havde i #4. Men prøv med denne:

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("D16:D42")) Is Nothing Then
Dim ws As Worksheet
For Each ws In Worksheets
If ws.Name <> "INDSKRIV" Then
ws.Visible = False
End If
Next
If Range("D16")<>"" Then
    Sheets("1").Visible = True
    Sheets("2").Visible = True
    Sheets("Toldfaktura  - 1").Visible = True
    Sheets("Følgeseddel 1").Visible = True
End if
If Range("D17")<>"" Then
    Sheets("3").Visible = True
    Sheets("4").Visible = True
    Sheets("Toldfaktura  - 1").Visible = True
    Sheets("Følgeseddel 1").Visible = True
End If


End If
End Sub

Og i mellemrummet kan du fortsætte med

If Range("D18")<>"" Then
    Sheets("5").Visible = True
    Sheets("6").Visible = True
    Sheets("Toldfaktura  - 1").Visible = True
    Sheets("Følgeseddel 1").Visible = True
End If
Avatar billede Cikija Nybegynder
08. marts 2016 - 15:54 #11
Perfekt.
Tusind tak for hjælpen.
Laver du et svar, så jeg kan give point?
Avatar billede jens48 Ekspert
08. marts 2016 - 16:02 #12
Et 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