Avatar billede hjald8 Nybegynder
20. maj 2007 - 20:40 Der er 4 kommentarer og
1 løsning

Makro til skjul linier igen. En tilføjelse?

Jeg har følgende makro, som virker fantastisk fint. Jeg har dog det problem, at nogle af brugernes maskiner er en anelse gamle og har ikke helt nok RAM. Derfor skal jeg spare på alt for mange og lange gennemløb af ark.

Derfor har jeg i hvert ark, lavet en celle (V1), som tæller hvor mange rækker, der skal gennemløbes. Følgende makro, som spørger om den skal lave gennemløb (spørg på celle U1), vil jeg gerne have til at tage hensyn til førnævnte celle (V1) med antallet af rækker.

P.t. har jeg lavet 2 forskellige gennemløb afhængig af antal i U1. Håber at én kan hjælpe.

Sub SkjulAlle()
førArk = ActiveSheet.Name
førCelle = ActiveCell.Address

Application.Calculation = xlCalculationManual
Application.ScreenUpdating = False
   
For Each sh In ActiveWorkbook.Worksheets
    Cells.EntireRow.Hidden = False
Next

For Each sh In ActiveWorkbook.Worksheets
   
If sh.Range("U1") = "SV" Then

    If sh.Range("V1") < 250 Then
        For Each c In sh.Range("A3:A250").Cells
            If c.Value = Falsk Then
            Application.GoTo Reference:=c
            Selection.EntireRow.Hidden = True
            End If
        Next
    Else
        For Each c In sh.Range("A3:A999").Cells
            If c.Value = Falsk Then
            Application.GoTo Reference:=c
            Selection.EntireRow.Hidden = True
            End If
        Next
    End If
End If


Next

Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
Sheets(førArk).Activate
Range(førCelle).Select
End Sub
Avatar billede kabbak Professor
20. maj 2007 - 23:26 #1
prøv at teste denne

Sub SkjulAlle()
    førArk = ActiveSheet.Name
    førCelle = ActiveCell.Address
    Application.Calculation = xlCalculationManual
    Application.ScreenUpdating = False
    For Each sh In ActiveWorkbook.Worksheets
        Cells.EntireRow.Hidden = False
    Next
    For Each sh In ActiveWorkbook.Worksheets
        If sh.Range("U1") = "SV" Then
            If sh.Range("V1") < 250 Then
                For Each c In sh.Range("A3:A" & sh.Range("V1").Value).Cells
                    If c.Value = Falsk Then
                        c.EntireRow.Hidden = True
                    End If
                Next
            Else
                For Each c In sh.Range("A3:A999").Cells
                    If c.Value = Falsk Then
                        c.EntireRow.Hidden = True
                    End If
                Next
            End If
        End If
    Next
    Application.Calculation = xlCalculationAutomatic
    Application.ScreenUpdating = True
    Sheets(førArk).Activate
    Range(førCelle).Select
End Sub
Avatar billede hjald8 Nybegynder
21. maj 2007 - 05:48 #2
Tusind tak. Jeg havde bøvlet med nogle " og & ved navngivning af Range. Dermed blev kode jo også kortere. Supert.

I denne kode søges der efter FALSK. Dvs. i praksis leder den efter SAND eller FALSK. Hvis den finder en værdi som fx #Reference, så går makroen i stå. Hvorledes kan jeg gardere mig mod det. ENTEN ved at fortolke fejlværdier, som enten falsk/sand, ELLER give brugeren besked om at løse problemet via en dialogboks? (undskyld men det er jo nærmest et tillægspørgsmål).

Tak og smid et svar.
Avatar billede kabbak Professor
21. maj 2007 - 09:26 #3
prøv at se om fejlen fanges med
  If IsError(c.Value) Then
Avatar billede kabbak Professor
21. maj 2007 - 09:28 #4
et svar ;-))
Avatar billede hjald8 Nybegynder
21. maj 2007 - 14:24 #5
Supert. Jeg fik det til at virke. Ved at minimere arbejdsprocessen, blev det væsentligt hurtigere for brugerne.

Om IsError - det ser ud til at virke. Jeg er dog ikke helt tilfreds.
Tak for hjælpen igen.
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
Excel kurser for alle niveauer og behov – find det kursus, der passer til dig

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