20. juni 2019 - 08:32 Der er 2 kommentarer og
1 løsning

Slet fra et søge ord til et andet - VBA

Jeg har 5 aktivitetsark hvor der er påført skemaer som alle har søgeordet stop0. Hertil kører jeg en makro der indsætter et nyt skema under det oprindelige hvor det tager udgangspunkt i søgeordet for at finde placeringen og ændre det nye søge på det indsatte skema til stop1, stop2 osv.
Makro:
Sub IndsætEkstraBoks()

Dim slut As String
Dim i As Integer
Dim rng As Range
Dim RowNo As Integer
Dim aktivitet As Worksheet

Set aktivitet = ThisWorkbook.ActiveSheet

i = 0
slut = "stop" & i
For i = 1 To 100
    slut = "stop" & i

    Columns("B:B").Select
    Set rng = Selection.Find(what:=slut, After:=ActiveCell, LookIn:=xlFormulas, _
      lookat:=xlPart, searchorder:=xlByRows, searchdirection:=xlNext, _
      MatchCase:=False)
   
    If rng Is Nothing Then
       
        slut = "stop" & i - 1
        RowNo = aktivitet.Range("B:B").Find(what:=slut, After:=ActiveCell, LookIn:=xlFormulas, _
            lookat:=xlPart, searchorder:=xlByRows, searchdirection:=xlNext, _
            MatchCase:=False, SearchFormat:=False).Row
       
        Sheets("Lister").Activate
        Range("A34:AV45").Select
        Selection.Copy
        aktivitet.Activate
        Range("A" & RowNo).Offset(4, 0).Select
        Selection.Insert Shift:=xlDown
       
        ActiveSheet.Range("B" & RowNo).Offset(15, 0) = "stop" & i
        ActiveSheet.Shapes("Rektangel 1").IncrementTop 45

Kan jeg ligeledes lave en makro hvor den sletter fra det højeste stopX søgeord og op til lige under stop0? Og hvis der ikke er andre end stop0 skal den selvfølgelig ikke slette :)

- Excel Optimisten ^^
Avatar billede Jan Hansen Ekspert
20. juni 2019 - 09:09 #1
prøv om denne ikke virker

Option Explicit

Dim Ws As Worksheet
Dim Area As Range, Rows As Range, Cell As Range
Dim MyRowA As Long, MyRowB As Long

Const Stoppe As String = "stop0"

Sub Rens()
    Set Ws = ActiveSheet
    Set Area = Ws.Range("B1")
    Set Area = Range(Area, Ws.Range("B10000").End(xlUp))
    For Each Cell In Area
        If Cell.Value = Stoppe Then MyRowA = Cell.Row + 1
    Next
    MyRowB = Ws.UsedRange.Rows.Count - MyRowA
    Set Rows = Rows(MyRowA & ":" & MyRowB)
    Rows.Delete
End Sub

ej testet

Jan
20. juni 2019 - 09:22 #2
Får fejl meddelelse

Run-time error '91':
Object variable or With block variable not set

Markerer linjen:
Set Rows = Rows(MyRowA & ":" & MyRowB)
Avatar billede Jan Hansen Ekspert
20. juni 2019 - 18:15 #3
Løst
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