24. juli 2008 - 10:03Der 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.
Hos Computerworld it-jobbank er vi stolte af at fortsætte det gode partnerskab med folkene bag IT-DAY – efter vores mening Danmarks bedste karrieremesse for unge og erfarne it-kandidater.
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
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.
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
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
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
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.