Avatar billede martin_moth Mester
11. november 2002 - 11:47 Der er 6 kommentarer og
1 løsning

Skjul rækker vha. VBA

Jeg vil loope igennem alle rækkerne i mit ark vha. vba. visse rækker skal så skjules, hvis der står noget bestemt i en celle i rækken, skal rækken skjulen.

Hvoddn?

For i = 2 To 65536
  If Cells(i, 2).Value = "777" Then
    row(i).EntireRow.Hidden = True '<- ???
  End If
Next i

Hvordan refererer jeg til en hel række med et index, og skjuler den?
Avatar billede martin_moth Mester
11. november 2002 - 11:50 #1
100 points til mig for dagens dårligst formulerede spørgsmål - prøver igen:

Jeg vil loope igennem alle rækkerne i mit ark vha. VBA. Hvis der står "777" i kolonne B den aktuelle række, skal rækken skjules - hvoddn?
Avatar billede martin_moth Mester
11. november 2002 - 11:54 #2
Fandt selv svaret:

  For i = 2 To Slut
    If Cells(i, 2).Value = "777" Then
      Cells(i, 2).Select
      ActiveCell.EntireRow.Hidden = True
    End If
  Next i
Avatar billede bak Forsker
11. november 2002 - 11:54 #3
Jeg tror du mangler et S i row

For i = 2 To 65536
  If Cells(i, 2).Value = "777" Then
    rows(i).EntireRow.Hidden = True '<- ???
  End If
Next i
Avatar billede bak Forsker
11. november 2002 - 11:57 #4
Hvis du bruger mit (dit eget) eksempel slipper du for select-sætningen, kan kan sløve makroen hvis det er et større område.
Avatar billede martin_moth Mester
11. november 2002 - 12:35 #5
Yep - og endnu en lille optimering er application.screenupdate = false - så slipper man for at se den blinkende skærm, og det går vist lidt hurtigere.

Skal du have points for ulejligheden??
Avatar billede bak Forsker
11. november 2002 - 13:43 #6
nej, det er ikke nødvendig, du klarede det jo selv :-)
Avatar billede bak Forsker
11. november 2002 - 14:42 #7
Hvis du ønsker lidt hastighedsforøgelse, så prøv denne her:
Sub quickmodel()
Dim iLoop As Integer
Dim rNa As Range
Dim i As Integer
Dim rX As Range
svalue = "777"          'søgeværdi
scolumn = 2            'søgekolonne
iLoop = WorksheetFunction.CountIf(Columns(scolumn), svalue)
Set rNa = Cells(1, scolumn)
Set rX = Columns(scolumn).Find(What:=searchvalue, After:=rNa, _
            LookIn:=xlValues, LookAt:=xlWhole, _
            SearchOrder:=xlByRows, SearchDirection:=xlNext, _
            MatchCase:=True)

For i = 1 To iLoop
  Set rNa = Columns(scolumn).Find(What:=svalue, After:=rNa, _
            LookIn:=xlValues, LookAt:=xlWhole, _
            SearchOrder:=xlByRows, SearchDirection:=xlNext, _
            MatchCase:=True)
  Set rX = Union(rNa, rX)
Next i
rX.EntireRow.Hidden = True
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
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