Avatar billede mlhave Nybegynder
30. december 2003 - 09:19 Der er 8 kommentarer og
2 løsninger

Procedure til at slette hver anden række i et ark

Vil en hjælpe mig med at lave en procedure til at slette hver anden række i et ark, startende med række 2.
Avatar billede slo Nybegynder
30. december 2003 - 09:51 #1
Dim i As Integer, Ark As Worksheet
Set Ark = ThisWorkbook.Worksheets("Ark1")
With Ark
  For i = 1 To 15
    .Rows(i).Delete
  Next i
End With
Avatar billede jpvj Nybegynder
30. december 2003 - 10:14 #2
slo> Din With ... End With er vist lidt skudt over målet her :-)

Og så skal vi lige starte med række 2...

Dim i As Integer, Ark As Worksheet
Set Ark = ThisWorkbook.Worksheets("Ark1")
For i = 2 To 15
  Ark.Rows(i).Delete
Next i
Avatar billede slo Nybegynder
30. december 2003 - 10:18 #3
jpvj> Upps - den med række 2 havde jeg overset...
Mht. at bruge With/End With er det et performance spørgsmål - har mest af alt noget at gøre med nogle gode vaner, da der her naturligvis ikke er tale om en kørselstid af betydning.
En god hovedregel er at bruge With/End With når du skal "tilgå" et objekt mere end en gang. I ovenstående gør vi det (i din kode) 14 gange.
Avatar billede kabbak Professor
30. december 2003 - 10:53 #4
Sæt denne ind i en tom kolonne og træk den nedad
Vælg autofilter.
vælg 0

slet rækker

=REST(RÆKKE();2)
Avatar billede aheiss Praktikant
30. december 2003 - 14:41 #5
Og hvis man ikke gider indtaste antal rækker :
---------------
Sub sletrakker()
Dim a As Integer
a = (1 + (InStr(1, ActiveSheet.UsedRange.Address(ReferenceStyle:=xlR1C1, _
    RowAbsolute:=False, RelativeTo:=Cells(1, 1)), "]")))
With ThisWorkbook.ActiveSheet
  For b = 2 To a
    .Rows(b).Delete
  Next
End With
End Sub
Avatar billede mlhave Nybegynder
30. december 2003 - 18:31 #6
Har I alle sammen overset at det kun er HVER ANDEN række der skal slettes?
Så vidt jeg kan læse jeres forslag sletter i alle rækker fra 2 til 15???

Eller forstår jeg bare ikke det I skriver?
Avatar billede kabbak Professor
30. december 2003 - 19:30 #7
Deres makroer er gode nok

Du skal huske på at når du sletter en række, så hopper den en række op.

altså, række 2 slettes, række 3 bliver til række 2, makroen siger next og det bliver jo række 4 fordi række 3 er hoppet op.

håber du forstår. ;-))
Avatar billede jpvj Nybegynder
31. december 2003 - 01:57 #8
Så i virkeligheden skal man jo dele slut variablen i for-next løkken med 2 :-)

slo> Performance? Nu ved jeg ikke hvordan VB bliver fortolket/jit kompileret, så jg har ingen forudsætninger for at udtale mig om emnet. Hvis du mener at man opnår en bedre performance, kan du så ikke lige smide et link til noget dokumentation? Er da lidt nysgerrig...
Avatar billede slo Nybegynder
02. januar 2004 - 08:59 #9
jpvj -> Excel's indbyggede hjælp er bare ét sted du kan se det - flg. er fra "Brug af With-sætninger" :
"Med sætningen With kan du angive et objekt eller en brugerdefineret type én gang for en hel række sætninger. With-sætninger bevirker, at procedurerne afspilles hurtigere, og at du undgår gentagne indtastninger."
og lidt senere på samme hjælpeside:
"Du kan indlejre With-sætninger for at opnå større effektivitet."
Avatar billede jpvj Nybegynder
04. januar 2004 - 23:45 #10
slo> Takker for info - nice to know :-)

Tror du lige jeg vil teste lidt på det...
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