Print side | Luk vindue

VBA problemer

Udskrevet fra: Dansk Regneark Forum
Kategori: Hjælp til regneark.
Forum navn: Makro og VBA
Forum beskrivelse: Hjælp til Makroer og VBA-programmering
Web-adresse: https://forum.excel-regneark.dk/forum_posts.asp?TID=3239
Udskrevet den: 06.Maj.2024 kl. 05:06


Emne: VBA problemer
Besked fra: krille15
Emne: VBA problemer
Posteringsdato: 15.Nov.2017 kl. 13:13

Sub Uge1()


If D4 = 1 Then


For rep = 36 To 85

    Sheets("ark1").Rows(rep & ":" & rep).EntireRow.Hidden = True


Next rep


End Sub


Sub Uge11()


For rep = 46 To 85

    Sheets("ark1").Rows(rep & ":" & rep).EntireRow.Hidden = False


Next rep


End Sub


Sub Uge2()


If D4 = 2 Then


For rep = 46 To 85

    Sheets("ark1").Rows(rep & ":" & rep).EntireRow.Hidden = True


Next rep


End Sub


Sub Uge12()


If D4 > 2 Then


For rep = 56 To 85

    Sheets("ark1").Rows(rep & ":" & rep).EntireRow.Hidden = False


Next rep


End Sub



Sub Uge3()


If D4 = 3 Then


For rep = 56 To 85

    Sheets("ark1").Rows(rep & ":" & rep).EntireRow.Hidden = True


Next rep


End Sub


Sub Uge13()


If D4 > 3 Then


For rep = 66 To 85

    Sheets("ark1").Rows(rep & ":" & rep).EntireRow.Hidden = False


Next rep


End Sub


Sub Uge4()


If D4 = 4 Then


For rep = 66 To 85

    Sheets("ark1").Rows(rep & ":" & rep).EntireRow.Hidden = True


Next rep


End Sub


Sub Uge14()


If D4 > 4 Then


For rep = 76 To 85

    Sheets("ark1").Rows(rep & ":" & rep).EntireRow.Hidden = False


Next rep


End Sub


Sub Uge5()


If D4 = 5 Then


For rep = 76 To 85

    Sheets("ark1").Rows(rep & ":" & rep).EntireRow.Hidden = True


Next rep


End Sub



Kan ikke helt forstå hvad det er jeg gør galt. Det er meningen af den skal kunne skjule de rækker baseret på om der står 1,2,3,4,5 hvor hvis der står 1 så skal den altså skjule fra række 36:85 og omvendt hvis der står 2 så skal den vise 36:45 igen men skjule fra 46:85 osv. 

håber der er nogen der kan være behjælpelige :) 



Svar:
Besked fra: EXCELGAARD
Posteringsdato: 15.Nov.2017 kl. 17:53
Det der ville jeg lave HELT anderledes!

For det første, så behøver du ikke en makro til hver uge, da du alligevel styrer det hele fra celle D4 af.
For det andet, så undlad kombinationen af vis/skjul - bare start med at vise det hele og så skjule de ønskede rækker.
For det tredje ville jeg slet ikke bruge et loop, med blot skjule rækkerne direkte.

Noget i denne stil:
Cells.EntireRow.Hidden = False
Select Case
Range("D4").Value
    Case 1:   Range("36:85").EntireRow.Hidden = True
    Case
2:   Range("46:85").EntireRow.Hidden = True
    Case
3:   Range("56:85").EntireRow.Hidden = True
    Case
4:   Range("66:85").EntireRow.Hidden = True
    Case
5:   Range("76:85").EntireRow.Hidden = True
End Select




-------------
Husk, at trykke på [Tak], hvis du kan lide et indlæg.
Husk, at trykke på [Accepteret Svar], hvis du kan bruge et løsningsforslag.


Besked fra: Studerende
Posteringsdato: 16.Nov.2017 kl. 14:51
Hej igen, 

hvis den så skal kunne "opdater" arket når man trykker en ny værdi i d4 hvordan gør man så det?

Mvh Kristoffer


Besked fra: Kurt Kubik
Posteringsdato: 16.Nov.2017 kl. 16:46
Hvorfor har du pludseligt skiftet navn?

Placér denne kode i ark-modulet:

Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("D4")) Is Nothing Then
        'Placér din kode her...
        'Eller endnu bedre: Kør din sub herfra
    End If
End Sub


Besked fra: krille15
Posteringsdato: 16.Nov.2017 kl. 19:42
af uforklarlige årsager så har jeg logget ind med et gammelt login som jeg havde... nå tilbage igen.

Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("D4")) Is Nothing Then
       Cells.EntireRow.Hidden = False
Select Case Range("D4").Value
    Case 1:   Range("36:85").EntireRow.Hidden = True
    Case
2:   Range("46:85").EntireRow.Hidden = True
    Case
3:   Range("56:85").EntireRow.Hidden = True
    Case
4:   Range("66:85").EntireRow.Hidden = True
    Case
5:   Range("76:85").EntireRow.Hidden = True
End Select
    End If
End Sub

Er det sådan ud mener Kurt

Mvh


Besked fra: Kurt Kubik
Posteringsdato: 16.Nov.2017 kl. 19:49
Ja, det ser da vist fint ud - virker det ikke?


Besked fra: EXCELGAARD
Posteringsdato: 17.Nov.2017 kl. 16:02
Yeps, det burde virke Smile


-------------
Husk, at trykke på [Tak], hvis du kan lide et indlæg.
Husk, at trykke på [Accepteret Svar], hvis du kan bruge et løsningsforslag.



Print side | Luk vindue