PNG32 PNG32 PNG32 PNG32
PNG32
Forum Excel, VBA, VSTO, Exceltips, Excelhj�lp PNG32 drivs av Excelspecialisten    Logga in     English
PNG32
PNG32 PNG32
PNG32

Logga in

PNG32

Du är inte inloggad. Logga in eller registrera dig för att skriva inlägg eller svara på inlägg.

För frågor om forumet, kontakta oss på webmaster@excelforum.se

Du är inte inloggad. Logga in eller registrera dig för att skriva inlägg eller svara på inlägg.

För frågor om forumet, kontakta oss på webmaster@excelforum.se

PNG32 PNG32
PNG32 PNG32
PNG32

Excelforum

PNG32

 
ForumForumDiskussionerDiskussionerVBAVBAAnvända Replace i macroAnvända Replace i macro
Föregående Föregående
 
Nästa Nästa
Nytt inlägg
 2009-01-14 14:30
 

Har spelat in ett macro, där jag kopierar data i en cell och sedan ska ersätta ett specifikt ord med denna data. Får allt att funka, utom att det blir samma data hela tiden.

Range("A1").Select
Selection.End(xlToRight).Select
Selection.Copy
Range(Selection, Selection.End(xlDown)).Select
Selection.Replace What:="VSPEC", Replacement:="1234", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
ActiveWindow.LargeScroll Down:=-3
Range("A1").Select
Application.CutCopyMode = False
End Sub

Det är alltså där det står 1234 som blir fel, jag vill ju inte ha datan från när jag gjorde macrot, utan det som finns i Selection.Copy.

Tack på förhand
/Peter

Nytt inlägg
 2009-01-14 14:45
 

Hej Peter!

Ja, det är ett vanligt problem när man spelar in makron. Ett bra sätt för att förenkla problem är att undvika "Select" och "Selection". Du kan till exempel skriva om

Range("A1").Select
Selection.End(xlToRight).Select
Selection.Copy

Till

Range("A1").End(xlToRight).Copy

Det gör koden lite mindre och smidigare. Sen är det också så att "Copy" kopierar själva cellen, och det är inte rätt i det här fallet. Istället får man ta innehållet och lägga det i en variabel. (Vilket man skapar med Dim x As String).

Jag skulle då skriva om din kod som:

Public Sub ReplaceVSPEC()
    Dim x As String
    x = Range("A1").End(xlToRight)
    Range(Range("A1").End(xlToRight), Range("A1").End(xlToRight).End(xlDown)).Replace _
        What:="VSPEC", Replacement:=x, LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False 
End Sub

Notera 'Replacement:=x' istället för din tidigare 'Replacement:="1234"'

Mvh

Niklas

Nytt inlägg
 2009-01-14 15:08
 

Funkar helt perfekt.

Tack så mycket för den snabba hjälpen

/Peter

Föregående Föregående
 
Nästa Nästa
ForumForumDiskussionerDiskussionerVBAVBAAnvända Replace i macroAnvända Replace i macro

PNG32 PNG32
Excelforum drivs av Excelspecialisten som bedriver utbildning i Excel och VBA, tillhandahåller support och hjälp med Excel, utvecklar program i Excel. Är ni i behov av en konsult inom Excel, VBA eller VSTO, eller söker en excelkurs, kontakta oss.
Copyright 2013 ExcelSpecialisten XLS AB   Användarvillkor  Personliga uppgifter