Avatar billede VildeHest Praktikant
04. februar 2014 - 15:35 Der er 4 kommentarer og
1 løsning

Excel søg og erstat på alle ark

Hej,

Jeg ville gerne søge på f. eks. "for", og erstatte cellen to gange til højre for denne med en anden celle.

Jeg har fundet frem til følgende kode:

Sub SoegOgErstat()
'
' Makro4 Makro
'
' Genvejstast: Ctrl+Skift+C
'
Dim ws As Worksheet
    For Each ws In ActiveWorkbook.Worksheets
            Cells.Find(What:="For", After:=ActiveCell, LookIn:=xlFormulas, _
                LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
                MatchCase:=False, SearchFormat:=False).Activate
            ActiveCell.Offset(0, 3).Select
            ActiveCell.FormulaR1C1 = "=RC[2]"
    Next ws
End Sub

Funktion virker på det givne ark, men jeg ville gerne have den til at gøre det på alle ark.

Udover dette kan det nævne at teksten "for" kun forekommer én gang på hvert ark.

På forhånd tak!
Avatar billede kabbak Professor
04. februar 2014 - 17:29 #1
Prøv denne

Sub SoegOgErstat()
'
' Makro4 Makro
'
' Genvejstast: Ctrl+Skift+C
'
Dim ws As Worksheet
    For Each ws In ActiveWorkbook.Worksheets
    ws.Activate ' NY
    Cells(1, 1).Activate ' NY
            Cells.Find(What:="For", After:=ActiveCell, LookIn:=xlFormulas, _
                LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
                MatchCase:=False, SearchFormat:=False).Activate
            ActiveCell.Offset(0, 3).Select
            ActiveCell.FormulaR1C1 = "=RC[2]"
    Next ws
End Sub
Avatar billede VildeHest Praktikant
05. februar 2014 - 08:29 #2
Når jeg prøver at køre den får jeg runtime error 91:
Object variable or With block variable not set.

Når jeg debugger markeres:
Cells.Find(What:="For", After:=ActiveCell, LookIn:=xlFormulas, _
                LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
                MatchCase:=False, SearchFormat:=False).Activate

Nogle forslag?
Avatar billede supertekst Ekspert
05. februar 2014 - 10:32 #3
Når tomt ark behandles opstår fejl - derfor +++ - tilføjelsen

Sub test_1()
Dim ws As Worksheet
    For Each ws In ActiveWorkbook.Worksheets
    ws.Activate ' NY
    Cells(1, 1).Activate ' NY
   
On Error Resume Next      '<+++
            Cells.Find(What:="For", After:=ActiveCell, LookIn:=xlFormulas, _
                LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
                MatchCase:=False, SearchFormat:=False).Activate
            ActiveCell.Offset(0, 3).Select
            ActiveCell.FormulaR1C1 = "=RC[2]"
    Next ws
End Sub
Avatar billede VildeHest Praktikant
05. februar 2014 - 13:58 #4
Mange tak supertekst, det fungerer!

Svar for point
Avatar billede supertekst Ekspert
05. februar 2014 - 14:00 #5
Fint og selv tak
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