Avatar billede gustavba Nybegynder
24. juli 2008 - 10:03 Der er 7 kommentarer og
2 løsninger

Macro som sletter rækker og kolonner udenfor navngivet område

Jeg arbejder med et stort regneark hvor jeg ønsker en macro til  at slette rækker og kolonner udenfor et allerede navngivet område (Print_area)inden jeg distribuerer det.
Avatar billede excelent Ekspert
24. juli 2008 - 14:15 #1
Husk backup er en go ting :-)

Sub RydOp()
flag = True
For Each v In Range("A1:Q30")
For Each c In Range("print_area")
If c.Address = v.Address Then flag = False
Next
If flag = True Then v.Clear
flag = True
Next
End Sub
Avatar billede gustavba Nybegynder
24. juli 2008 - 14:54 #2
Det er alle tiders kode. Den virker umiddelbart men fejler dog til sidst efter den har clearet cellerne.

Det er dog ikke helt hvad jeg leder efter.
Jeg jo kun får clearet cellerne og ikke slettet dem. Jeg kan dog godt se at kompleksiteten stiger for jeg er jo nødt til at teste på om rækken eller kolonnen har fælles celler før jeg kan slette.

Jeg skulle gerne ende op med kun at have data i Print_area tilbage i sheetet og disse data vil da blive placeret med udgangspunkt i A1 da rækker over og kolonner til venstre for området er slettet.
Avatar billede excelent Ekspert
24. juli 2008 - 15:37 #3
prøv:

Sub Terminator()
On Error Resume Next
Rows("1:" & Range("print_area").Row - 1).EntireRow.Delete
If Range("print_area").Column - 1 >= 1 Then
For t = Range("print_area").Column - 1 To 1 Step -1
Columns(t).EntireColumn.Delete
Next
End If
End Sub
Avatar billede gustavba Nybegynder
24. juli 2008 - 16:14 #4
Genialt Jeg takker og bukker :-)
Avatar billede excelent Ekspert
24. juli 2008 - 16:26 #5
velbekom :-)
Avatar billede excelent Ekspert
26. juli 2008 - 10:28 #6
husk lige at lukke
Avatar billede gustavba Nybegynder
29. juli 2008 - 14:37 #7
Jeg var nok lige hurtig nok.
Nedenstående kode sletter ganske rigtigt kolonner til venstre for og rækker over et givet navngivet område. Det sletter dog ikke kolonner til højre og rækker under et navngivet område. Man det lade sig gøre at udvide koden til at gøre dette også?

Sub Terminator()
On Error Resume Next
Rows("1:" & Range("print_area").Row - 1).EntireRow.Delete
If Range("print_area").Column - 1 >= 1 Then
For t = Range("print_area").Column - 1 To 1 Step -1
Columns(t).EntireColumn.Delete
Next
End If
End Sub
Avatar billede excelent Ekspert
29. juli 2008 - 20:55 #8
ok prøv :

Sub Terminator()
On Error Resume Next
Rows("1:" & Range("print_area").Row - 1).EntireRow.Delete
If Range("print_area").Column - 1 >= 1 Then
For t = Range("print_area").Column - 1 To 1 Step -1
Columns(t).EntireColumn.Delete
Next
End If

lastRK = Range("A1").SpecialCells(xlLastCell).Row
lastKOL = Range("A1").SpecialCells(xlLastCell).Column
Rows(Range("print_area").Rows.Count + 1 & ":" & lastRK).EntireRow.Delete

Range("print_area").Offset(0, Range("print_area").Columns.Count).Resize(1, lastKOL).EntireColumn.Delete

End Sub
Avatar billede gustavba Nybegynder
30. juli 2008 - 08:18 #9
Virker som en drøm. Takker 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
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