Avatar billede kimkoch Nybegynder
01. august 2003 - 13:32 Der er 10 kommentarer og
1 løsning

Søg og Erstat i VBA

Hej derude i varmen

Jeg forsøger at rette nogle formler med en række forskellige adresser som macroen selv sætter (Dim = Celle1)
Når jeg kører macroen trinsvis "oversættes" formlen korrekt
men rettes ikke i arket !!

Public Sub Omdøb_formler()

Dim Celle1 As String
Dim Celleværdi As String
Dim Celleværdi1 As String
Dim Celleværdi2 As String
Dim Celleværdi3 As String
Dim Celleværdi2A As String
Dim Celleværdi3A As String

Do Until ActiveCell.Value = "695"

Range("D3").Select
Celle1 = ActiveCell.Address
Celleværdi = ActiveCell.Value
ActiveCell.Offset(0, 1).Select
Celleværdi1 = ActiveCell.Value
ActiveCell.Offset(16, 0).Select
Celleværdi1a = ActiveCell.Address
Celleværdi2 = ActiveCell.Value
ActiveCell.Offset(39, 0).Select
Celleværdi2A = ActiveCell.Address
       
Range("" & Celleværdi1a & ":" & Celleværdi2A & "").Select
       
Selection.Replace What:=";0);SAMMENLIGN(indtastning!$D$3", Replacement:=";0);SAMMENLIGN(indtastning!" & Celle1 & "", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
       
       
Range("" & Celle1 & "").Select
ActiveCell.Offset(0, 2).Select

Loop

End Sub
Avatar billede bak Forsker
01. august 2003 - 14:24 #1
For mig at se, så virker loopet ikke da du hele tiden går tilbage til D3, dvs at celle1 bliver = D3 igen og så får du jo ikke erstattet noget :-)
prøv at flytte
Range("D3").Select
ud af loopet
Avatar billede kimkoch Nybegynder
01. august 2003 - 15:12 #2
Hej Bak

Virker desværre stadig ikke:
D3 indikere startcelle; jeg flytter bare Range("D3").Select foran "Do Until.
Celle1 skifter til den rigtige værdi under afvikling af macroen men får ikke rettet formlen til
Avatar billede bak Forsker
01. august 2003 - 15:48 #3
Der er noget galt her, måske er det varmen :-)
Hvad er det du ønsker den makro skal lave ?
Hvis jeg lige ser bort fra  Range("D3").Select, så ser det ud til at du vil ændre E19:E58 fra indtastning!$D$3 til indtastning!$D$3
Derefter vil du spinge hver anden kolonne indtil der står "695" i tredje række.
Her vil du ændre G19:G53  (indtastning!$D$3) til indtastning!$F$3  osv.
Er det korrekt?
Du er velkommen til at sende arket til
Tommybak@netscape.net, men lav lige et indlæg hvis du gør det.
Avatar billede bak Forsker
01. august 2003 - 16:08 #4
Som jeg kan læse din makro burde det her faktisk kunne gøre det:

Public Sub Omdøb_formler()
Dim Repl As String
Dim Celle1 As String
Dim Rng As Range

Range("D3").Select

Do Until ActiveCell.Value = "695"
    Celle1 = ActiveCell.Address
    Set Rng = Range(Range(Celle1).Offset(16, 1), Range(Celle1).Offset(16 + 39, 1))
    Repl = ";0);SAMMENLIGN(indtastning!" & Celle1
    Rng.Replace What:=";0);SAMMENLIGN(indtastning!$D$3", Replacement:=Repl, LookAt:=xlPart
    Range("" & Celle1 & "").Offset(0, 2).Select
Loop

End Sub
Avatar billede kimkoch Nybegynder
04. august 2003 - 10:51 #5
Hej Bak

Beklager at jeg ikke har formuleret mig 100 % klart.
Jeg har prøvet din nye kode; men regnereglen ændres desværre ikke selvom variablerne oversættes korrekt når jeg kører macroen trinvis.
Jeg tillader mig at fremsende regneark med kode.

Hilsen Kim Koch
Avatar billede bak Forsker
04. august 2003 - 13:22 #6
Jeg har kigget på dit ark. Der er et par forhindringer, der heldigvis kan fjernes.
Den største/værste er at du i række 3 bruger flettede celler. Da du hele tiden refererer til celler i række 3 virker makroen ikke.
Du skal ophæve fletning af celler i hele række 3.
(marker hele rækken, i menuen Formater - celle - på andet faneblad fjerner du fluebenet i Flet Celler)

den anden forhindring kan det at det kun er mig der har fordi jeg bruger en engelsk version, men i makro skal semikolon erstattes med komma.

Public Sub Omdøb_formler()
Dim Repl As String
Dim Celle1 As String
Dim Rng As Range

Range("D3").Select

Do Until ActiveCell.Value = "695"
    Celle1 = ActiveCell.Address
    Set Rng = Range(Range(Celle1).Offset(16, 1), Range(Celle1).Offset(16 + 39, 1))
    Repl = ",0),SAMMENLIGN(indtastning!" & Celle1
    Rng.Replace What:=",0),SAMMENLIGN(indtastning!$D$3", Replacement:=Repl, LookAt:=xlPart
    Range(Celle1).Offset(0, 2).Select
Loop

End Sub
Avatar billede kimkoch Nybegynder
04. august 2003 - 15:20 #7
Hej bak

Virker desværrer heller ikke efter rettelse af formattering.
Avatar billede bak Forsker
04. august 2003 - 17:02 #8
Kim-> har du prøvet med både komma og semicolon i de to strenge ?
Det virker fint her, men jeg tester lige på en dansk version, når jeg kommer hjem...
Avatar billede bak Forsker
04. august 2003 - 18:19 #9
Kim-> Fejlen er fundet. Jeg har nu testet i dansk excel.
Replace kommandoen virker (i VBA) på den bagvedliggende engelske formel.
Da SAMMENLIGN svarer til MATCH, skal makroen se således ud.
Det var jo ikke noget problem da jeg testede i den engelske udgave, hvor alle formlerne jo var oversat til engelsk.

Public Sub Omdøb_formler()
Dim Repl As String
Dim Celle1 As String
Dim Rng As Range

Range("D3").Select

Do Until ActiveCell.Value = "695"
    Celle1 = ActiveCell.Address
    Set Rng = Range(Range(Celle1).Offset(16, 1), Range(Celle1).Offset(16 + 39, 1))
    Repl = ",0),MATCH(indtastning!" & Celle1
    Rng.Replace What:=",0),MATCH(indtastning!$D$3", Replacement:=Repl, LookAt:=xlPart
    Range("" & Celle1 & "").Offset(0, 2).Select
Loop

End Sub
Avatar billede kimkoch Nybegynder
05. august 2003 - 11:38 #10
Hej Tommy

Så virker det; jeg bukker og takker mange gange for hjælpen.
Du fik vist dine 100 points allerede ved 1. kommentar.

Hilsen
Kim Koch
Avatar billede bak Forsker
05. august 2003 - 11:45 #11
Velbekomme og tak for points :-)
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
Excel kurser for alle niveauer og behov – find det kursus, der passer til dig

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