Avatar billede rabitjosph Novice
15. december 2012 - 17:50 Der er 17 kommentarer og
1 løsning

Range

Jeg søger efter celle i kolonne A med tekst "test",
alle rækker med indhold, efter "test" i kolonne A
skal slettes ?

Hvordan gør jeg det nemmeste ?
Avatar billede finb Ekspert
15. december 2012 - 18:45 #1
set kola = range(a:a)

for each cell in kola
cell.select
  if cell.value = "test" then
    set sletRange = range(activeCell.offset (1,0);activeCell.xlDown)
  endif
next 
  sletRange.delete
Avatar billede rabitjosph Novice
15. december 2012 - 19:57 #2
Hvorfor brokker vba sig over
set kola = range(a:a)

er det fordi der skal en dim ind ?
Avatar billede finb Ekspert
16. december 2012 - 12:08 #3
Ja, det var efter hukommelsen,
her er en rettet version:

dim kolA as range
dim cellA as range

set kolA = range(a:a)

for each cellA in kolA
cellA.select
  if cellA.value = "test" then
    set sletRange = range(activeCell.offset(1,0):activeCell.end.xlDown)
    exit for
  endif
next cellA 
  sletRange.delete ' eller .clear !
Avatar billede store-morten Ekspert
16. december 2012 - 16:37 #4
Prøv denne, på et test Ark.
Sub SletRækkerUnderTekst()
    Dim SR As Integer, ST As Integer
    SR = Range("A65536").End(xlUp).Row  ' finder den sidste række med data i kolonne A
    Application.ScreenUpdating = False    ' slår skærmopdateringen fra
    For ST = SR To 1 Step -1  ' fra den sidste række , der er fundet i kolonne A til nr.1
        If Cells(ST, "A") = "Test" Then    ' hvis værdien er Test
        Rows(ST + 1 & ":" & SR).EntireRow.Delete    ' sletter rækker under "fund"
            Exit For    ' stopper efter første "fund"
        End If
    Next ST
    Application.ScreenUpdating = True    ' slår skærmopdateringen til igen
End Sub
Avatar billede rabitjosph Novice
16. december 2012 - 17:57 #5
Hej finb

Super tak for det, svar plz
Avatar billede store-morten Ekspert
16. december 2012 - 18:03 #6
Er det finb løsning du kunne bruge?

Eller er det min løsning?
Avatar billede rabitjosph Novice
16. december 2012 - 18:38 #7
Det er godt nok finb løsning jeg har brugt, men tak store-morten
Avatar billede store-morten Ekspert
16. december 2012 - 18:43 #8
Ok.
Melder den ikke stadig fejl i 2 linier?
Avatar billede finb Ekspert
16. december 2012 - 20:32 #9
Du ku give point til os begge !
Mvh finb
Avatar billede rabitjosph Novice
16. december 2012 - 20:48 #10
stor-morten kommer du med et svar plz
Avatar billede store-morten Ekspert
16. december 2012 - 22:30 #11
Jo, det kommer her.

Lægger du finb`s kode der virker ind her?
Så alle kan få glæde af den :-)
Avatar billede rabitjosph Novice
21. december 2012 - 05:13 #12
Hej finb

Kommer du med den lille justering så vi kan få lukket tråden
Avatar billede finb Ekspert
21. december 2012 - 10:23 #13
dim kolA as range
dim cellA as range

set kolA = range(a:a)

for each cellA in kolA
cellA.select
  if cellA.value = "test" then
    set sletRange = range(activeCell.offset(1,0):activeCell.offset(1,0).end.xlDown)
    exit for
  endif
next cellA 
  sletRange.delete ' eller sletRange.clear
Avatar billede rabitjosph Novice
21. december 2012 - 16:48 #14
Hej finb

Melder stadigt fejl i 2 linier?

Dim kolA As Range
Dim cellA As Range

set kolA = range(a:a)  ****************melder fejl i koden det samme som fra dit første indlæg

For Each cellA In kolA
cellA.Select
  If cellA.Value = "test" Then
    set sletRange = range(activeCell.offset(1,0):activeCell.offset(1,0).end.xlDown)***********************melder fejl i koden det samme som fra dit første indlæg
    Exit For
  End If
Next cellA
  sletRange.Delete ' eller sletRange.clear
Avatar billede finb Ekspert
27. december 2012 - 21:55 #15
Tag bare store-mortens løsning,
jeg har travlt...
Avatar billede rabitjosph Novice
28. december 2012 - 08:25 #16
God kode og dok store-morten
Avatar billede store-morten Ekspert
28. december 2012 - 11:53 #17
Tak for Point :-)

Her er 'finb's kode rettet til,
Den starter oppe fra, til den finder første celle i kolonne A med tekst "Test" og slette derunder:
Sub test()
Dim kolA As Range
Dim cellA As Range

Set kolA = Range("a:a")

For Each cellA In kolA
cellA.Select
  If cellA.Value = "Test" Then
    Set sletRange = Range(ActiveCell.Offset(1, 0).Address & ":" & ActiveCell.Offset(1, 0).End(xlDown).Address)
    Exit For
  End If
Next cellA
  sletRange.EntireRow.Delete
End Sub
Avatar billede rabitjosph Novice
28. december 2012 - 16:11 #18
Sådan, service
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
Kurser inden for grundlæggende programmering

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