Just nu i M3-nätverket
Gå till innehåll

Sök Efter ersätt Med


Jonte Kung

Rekommendera Poster

Jag skulle behöva hjälp med att söka efter tex. AG i vissa arbetsblad och ersätta dessa med tex. AH, så att de pekar på ett nytt ställe.

 

Jag skulle vilja att man får en frågan vad man vill söka efter och vad man sedan vill ersätta den med.

 

Jag vill att man ska ha en knapp som man trycker på när man ska utföra proceduren

 

/Jonte Kung

 

 

[inlägget ändrat 2006-10-24 16:17:39 av Jonte Kung]

Länk till kommentar
Dela på andra webbplatser

Något fel på Excels egna sök&ersätt?

 

fast det är klart - du kan skapa egen dialog för att nyttja denna.

 

Exempelvis:

Hämta värden med två InputBox.

Spela in ett makro där du utför en sök&ersätt med Excels vanliga dialog

Anpassa makrot.

 

Eller sök på Find i VBA-hjälpen

 

Behövs mer hjälp? Kodexempel?

 

 

/T

 

Even when we know we´ll never find the answers, we have to keep on asking questions.

 

Länk till kommentar
Dela på andra webbplatser

Enklast möjliga:

    Dim toReplace As String
   Dim newStr As String

   toReplace = InputBox("Vad vill du ersätta?")
   If toReplace = "" Then Exit Sub
   newStr = InputBox("Vad vill du ersätta """ & toReplace & """ med?")
   ActiveSheet.Cells.Replace What:=toReplace, Replacement:=newStr, LookAt:=xlPart, SearchOrder _
       :=xlByRows, MatchCase:=False

 

Söker och ersätter utan pardon på det blad du startar koden ifrån. Knapp infogar du genom att ta fram VBA-kontrollerna, skapa en knapp därifrån och dubbeklicka på den så kommer du till dess händelseprocedur för klick.

 

Märk väl att när detta utförs, sök&ersätt, via VBA går det EJ att ångra. Om detta istället utförs med Excels sök och ersätta (CTRL+H) går det att ångra.

 

Ett mycket bra argument till att nyttja Excels egna sök&ersätt.

 

 

/T

 

Even when we know we´ll never find the answers, we have to keep on asking questions.

 

Länk till kommentar
Dela på andra webbplatser

Tack så mycket för hjälpen.

 

Men nu byter jag bara ut namnet. Det som är viktigt är att den pekar mot ett annat blad och där länkar till rätt cell, en ny cell.

 

Går det också på något sätt att söka genom ett visst antal blad på en gång. Jag vet i vilka blad som jag måste byta i så dessa kan jag skriva dessa direkt i koden.

 

/Jonte Kung

 

 

 

 

Länk till kommentar
Dela på andra webbplatser

Visst går det att ta med fler blad. Flera metoder finns. Enklast kanske är att adressera dem direkt. Byt ut ActiveSheet mot WorkSheet("BladNamn") i koden ovan.

 

/T

 

Even when we know we´ll never find the answers, we have to keep on asking questions.

 

Länk till kommentar
Dela på andra webbplatser

Hej igen

 

Jag har märkt ett nytt fel i mina blad när jag gör sök och ersätt, så blir det vissa celler som ändras fast jag inte vill det.

 

Min fråga: Finns det något enkelt sett att skriva kod som gör att man bra söker igenom kolumnerna, tex. 3N till 22N, 3O till 22O, 30F till 77F, 30G till 77G i ett bestämt blad.

 

MVH/Jonte Kung

 

Länk till kommentar
Dela på andra webbplatser

Om du tar en titt på koden ovan så adresserar den hela arket genom användandet av Sheet.Cells

 

Givetvis går det här att begränsa vilka celler på arket som ska gås igenom. Två olika anrop kan göras, välj själv vilket som är enklast.

 

Sheet.Range("3N:22N")

eller

Sheet.Ranges(Sheet.Cells(rwIndex, colIndex), Sheet.Cells(rwIndex+rwN, colIndex))

 

Eller, kanske bäst, namnge områdena på bladet som funktionen ska arbeta med. Markera området/områdena på ett blad och skriv in önskat namn i namnlisten (eller gå via menyn Infoga->Namn->Definiera)

 

Låt oss säga att du döpt dina områden till vbTB1, vbTB2, vbTB3.

Så länge namnen är unika kan vi strunta i på vilket blad de ligger men för säkerhetsskull bör du adressera dem med bladnamnet egentligen. Detta för att undvika svårfunna fel i framtiden.

 

For i = 1 To 3
    Range("vbTB" & i).Replace Whate:= ....
Next

 

Börjar du få grepp om detta nu?

Missa inte att besöka XLDennis för inspiration och hjälp:

http://www.xldennis.se

 

/T

 

Even when we know we´ll never find the answers, we have to keep on asking questions.

 

Länk till kommentar
Dela på andra webbplatser

Hej igen min guru.

Jag tycker att bara skriva kod vore perfekt.

skulle du kunna visa mig hur denna kod skulle se ut om jag skrev in mina rader och kolumner jag beskrev i nedanstående formel

 

Worksheets("Int milestones").Cells.replace What:=toReplace, Replacement:=newStr, LookAt:=xlPart, SearchOrder _

:=xlByRows, MatchCase:=False

 

MVH/Jonte_Kung

 

Länk till kommentar
Dela på andra webbplatser

3N till 22N, 3O till 22O, 30F till 77F, 30G till 77G

 

 

 

Busenkelt men kanske går att göra snyggare:

Worksheets("Int milestones").Range('N3:N22").replace What:=toReplace, Replacement:=newStr, LookAt:=xlPart, SearchOrder _

:=xlByRows, MatchCase:=False

Worksheets("Int milestones").Range('N3:N22").replace What:=toReplace, Replacement:=newStr, LookAt:=xlPart, SearchOrder _

:=xlByRows, MatchCase:=False

 

osv

Dvs område för område

 

 

/T

 

Even when we know we´ll never find the answers, we have to keep on asking questions.

 

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...