Avatar billede zjat Nybegynder
08. april 2010 - 23:45 Der er 17 kommentarer og
1 løsning

VBA: skjul rækker med 0 i 2 kolonner

Hej alle sammen

Jeg har googlede en del rundt, for at finde svar på dette.

Jeg vil gerne have en makro der tjekker kolonne k og j for om der er en række, hvor begge kolonner indeholder 0. Hvis det er tilfældet skal den gemme rækken.

Derudover skal rækkerne kunne komme frem igen, hvis cellerne bliver <>0.

Jeg har fundet frem til dette indlæg - men her tjekkes der kun i 1 kolonne:

http://www.ozgrid.com/forum/showthread.php?t=72324&page=2

Håber nogen kan hjælpe :)

P.s. det handler om række 20 til 65
Avatar billede zjat Nybegynder
08. april 2010 - 23:48 #1
Derudover har jeg prøvet med følgende kode:

Application.ScreenUpdating = False

    Dim Criteria As Boolean
    Dim i As Integer

    i = 20
    Do Until Trim(Cells(i, 1).Value) = ""
        Criteria = True
        Criteria = True And (Cells(i, 9).Value = 0) And Cells(i, 2).Value <> ""
        Criteria = True And (Cells(i, 11).Value = 0) And Cells(i, 2).Value <> ""
        If Criteria Then Rows(i).EntireRow.Hidden = True
        i = i + 1
    Loop

Application.ScreenUpdating = True

Men synes ikke jeg kan få det til at virke, og er ikke sikker på ved ændringer at den tjekker tidligere gemte rækker igennem og viser igen.
Avatar billede jokerper Nybegynder
09. april 2010 - 07:04 #2
Sådan her

så kan du selv lige flytte dem ud til de rigtige kolonner

    Dim Criteria As Boolean
    Dim i As Integer

    i = 1
    For i = 1 To 20
   
        Criteria = False
        If (Cells(i, 1).Value = 0) And (Cells(i, 2).Value = 0) Then
       
        Criteria = True
       
      End If
   
        If Criteria Then
        Rows(i).EntireRow.Hidden = True
        End If
     
  Next i
Avatar billede jokerper Nybegynder
09. april 2010 - 07:10 #3
Skal lige finde en løsning på at vise dem igen, havde jeg lige overset.
Avatar billede jokerper Nybegynder
09. april 2010 - 07:27 #4
Denne her tror jeg virker som du vil have.

Du kan evt. indsætte som:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)


    Dim Criteria As Boolean
    Dim i As Integer

 
    For i = 20 To 65
   
      ' Criteria = False
        If (Cells(i, 9).Value = "0") And (Cells(i, 11).Value = "0") Then
       
        Criteria = True
    Rows(i).EntireRow.Hidden = True
      End If
   
        If Criteria = False Then
    Rows(i).EntireRow.Hidden = False
    End If
  Next i

End Sub
Avatar billede zjat Nybegynder
09. april 2010 - 14:24 #5
Hej tak for det hurtige svar :)

Desværre så melder den run-time error 13: Type mismatch

i linien 
If (Cells(i, 9).Value = "0") And (Cells(i, 11).Value = "0") Then

Kan man evt. lave det som en knap funktion?
Avatar billede jokerper Nybegynder
09. april 2010 - 14:38 #6
Ja, det kan man godt. Jeg tænkte om det måske hjælper med denne kode, den er godt i kolonne a og b lige nu:

    Dim Criteria As Boolean
    Dim i As Integer
   
    On Error GoTo slut
Sheets("Ark1").Activate
i = 20
    For i = 20 To 65
 
      ' Criteria = False
        If (Cells(i, 1).Value = "0") And (Cells(i, 2).Value = "0") Then
     
        Criteria = True
    Rows(i).EntireRow.Hidden = True
      End If
 
        If Criteria = False Then
    Rows(i).EntireRow.Hidden = False
    End If
  Next i
slut:
Exit Sub

Hvilken version kører du! 2003? 2007?
I 2007 skal du have fat i udvikler menuen og indsætte en knap i arket og tildele makroen.

I 2003 er der værktøjs-linjen formularer.
Avatar billede zjat Nybegynder
11. april 2010 - 18:34 #7
Jeg kører 2007 - men værktøjet skal også virke i 2003.

Desværre betyder ændringen bare at du ikke får fejlen :( hvis man fjerner "OnError GoTo slut" kommer fejlen igen.

Virker koden i dit office?
Avatar billede jokerper Nybegynder
11. april 2010 - 19:01 #8
Nej jeg får ingen fejl.


Prøv i et helt tomt excel dok. at indsætte denne kode:

Sub test()
   
    Dim Criteria As Boolean
    Dim i As Integer
 
'    On Error GoTo slut
Sheets("Ark1").Activate
i = 1
    For i = 1 To 20

      ' Criteria = False
        If (Cells(i, 1).Value = "0") And (Cells(i, 2).Value = "0") Then
   
        Criteria = True
    Rows(i).EntireRow.Hidden = True
      End If

        If Criteria = False Then
    Rows(i).EntireRow.Hidden = False
    End If
  Next i
'slut:
'Exit Sub

End Sub

Se om den arbejder?

ja, prøv så at indsætte noget tekst i henholdvis:
Skriv i celle
a1 og a2 hhv. 1 og 0
a3 og a4 hhv. 0 og 0
a5 og a6 hhv. 0 og 0
a7 og a8 hhv. 1 og 0
a9 og a10 hhv. 0 og 0
Avatar billede jokerper Nybegynder
11. april 2010 - 19:05 #9
Husk også at indsætte knappen (kontrolelement for formularer) og tildel den makroen test.

Jeg kører selv 2007.
Avatar billede zjat Nybegynder
11. april 2010 - 23:28 #10
Så fik jeg det næsten til at virke. Hvad jeg havde lavet af dumme ting sidst. Må stå hen i det uvisse :)

1) Desværre så ligeså snart den kommer til #N/A går den istå og skriver "type mismatch"

2) Den tager ikke højde for, hvis der er kommet tal i de rækker som er blevet gemt. Den kigger kun på rækker som er vist (ser det ud til).

Var fantastisk og se det næsten virke - rigtig god hjælp.
Avatar billede zjat Nybegynder
11. april 2010 - 23:36 #11
Kan se at lign problem med #N/A er beskrevet her:

http://www.pcreview.co.uk/forums/thread-2075031.php

Men gad vide om den løsning giver andre problemer senere i ny beregning.
Avatar billede zjat Nybegynder
11. april 2010 - 23:45 #12
2) har jeg løst ved at tilføje

Rows("20:65").EntireRow.Hidden = False

i starten af koden :)
Avatar billede zjat Nybegynder
12. april 2010 - 00:12 #13
Så fik jeg sat mig ind i den kode du har givet mig. Den er jo intet mindre end genial :D

Her er slutkoden:

Sub test()
   
Dim Criteria As Boolean
Dim i As Integer

    On Error GoTo slut
    Sheets("Skabelon").Activate
    i = 1
   
    For i = 20 To 65
        If (Cells(i, 9).Value = "0") And (Cells(i, 11).Value = "0") Then
        Criteria = True
        Rows(i).EntireRow.Hidden = True
        End If
   
        If Criteria = False Then
        Rows(i).EntireRow.Hidden = False
        End If
slut:
    Next i

End Sub

Smid et svar og du får point :) Går ud fra slut: koden skulle være inden next i stedet for efter.

Beklager at jeg ikke forstod den i første omgang og endnu engang tak! :)
Avatar billede zjat Nybegynder
12. april 2010 - 00:17 #14
BTW: Kan man gøre sådan at rækker med fejl(#N/A) også bliver skjult?
Avatar billede jokerper Nybegynder
12. april 2010 - 01:02 #15
Måske sådan her:

Sub test()
 
Dim Criteria As Boolean
Dim i As Integer

    On Error GoTo slut
    Sheets("Skabelon").Activate
    i = 20
 
    For i = 20 To 65 Step 1
        If (Cells(i, 9).Value = "0") And (Cells(i, 11).Value = "0") Or (Cells(i, 9).Formula = "#N/A") And (Cells(i, 11).Formula = "#N/A") Then
        Criteria = True
        Rows(i).EntireRow.Hidden = True
        End If
 
        If Criteria = False Then
        Rows(i).EntireRow.Hidden = False
        End If

    Next i
slut:
Exit Sub
End Sub

Mit endelige bud
Avatar billede baekmal Nybegynder
12. april 2010 - 01:12 #16
Et lille spørgsmål. Hvordan får du den til at vise de gemte rækker igen?
Avatar billede jokerper Nybegynder
12. april 2010 - 06:33 #17
Ved at ændre det til forskellige værdier hhv. kolonne 9 og 11 og kilk på knappen.

Jeg tænkte godt nok meget hvordan dit ark var opbygget, kom frem til at tallene i kolonne 9 og 11 må komme fra nogle andre celler.
Avatar billede zjat Nybegynder
12. april 2010 - 09:03 #18
Jeg tjekkede lige en ekstra gang her til morges - og ser ud til at den laver nogle mærkelige ting, når man ændrer skjult række til et tal. Så må desværre gå tilbage til at vise alle rækker ved opstart af koden - men ellers virker den :)

Mærkelig = viser ikke rækken :)

Koden jeg nu bruger er:

Sub test()
   
Dim Criteria As Boolean
Dim i As Integer
   
    Rows("20:65").EntireRow.Hidden = False
    On Error GoTo slut
    Sheets("Skabelon").Activate
    i = 1
   
    For i = 20 To 65
        If (Cells(i, 9).Value = "0") And (Cells(i, 11).Value = "0") Then
        Criteria = True
        Rows(i).EntireRow.Hidden = True
        End If
   
        'If Criteria = False Then
        'Rows(i).EntireRow.Hidden = False
        'End If
slut:
    Next i

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
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