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

Replace fungerar inte i Makro i Excel


Tomas7610

Rekommendera Poster

Om jag markerar en hel kolumn i excel och väljer ersätt "-" med ingenting, så försvinner alla "-" tecken som tänkt. OM jag istället spelar in ett makro där jag gör exakt samma sak och sedan spelar upp det maktrot så händer ingenting i kolumnen, alla "-" finns kvar. Se nedan: 

 

Columns("C:C").Select
    Selection.Replace What:="-", Replacement:="", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False

 

Vad är det som är knas? Notera att jag gjort exakt samma sak när jag spelade in makron som när jag gör det manuellt, och då fungerar det. Det fungerar även när jag spelar in, men inte när jag kör senare.

 

Hälsningar,

Tomas

Länk till kommentar
Dela på andra webbplatser

Ove Söderlund

Koden fungerar alldeles utmärkt för mig när jag testar lite snabbt.

Hur startar du makrot? det normala förfarandet är att du antingen kopplar makrot till en knapp i kalkylbladet eller formulär. För att starta makrot manuellt trycker du ALT + F8, väljer makrot i listrutan och därefter klickar på Kör.

 

 

Länk till kommentar
Dela på andra webbplatser

Hej,

 

Vad konstigt. Jag har kopplat det till en knapp, där flera saker händer. Allt annat fungerar förutom själva borttagningen av "-". Jag har även lagt makrot helt själv kopplat till en knapp, men fungerar inte då heller. Totalt är det drygt 14.000 rader och 2 st "-" i varje cell, så 28.000 tecken som ska ersättas. Tänkte att det kanske har med saken att göra. Det fungerar inte i alla fall, övrigt fungerar i makrot.

 

Hälsningar,

Tomas

Länk till kommentar
Dela på andra webbplatser

Ove Söderlund

Testa att koppla följande kod till en knapp i det aktuella bladet:

-- Naturligtvis jobbar du med en kopia av ditt dokument!

 

Vad koden gör är att loopa igenom de första 25 cellerna i C-kolumnen och utför en Sök och Ersätt på resp. cell.

 

Sub test()

    Dim Counter As Long
    
    For Counter = 1 To 25
    
        Cells(Counter, 3).Replace _
            What:="-", Replacement:="", LookAt:=xlPart, SearchOrder:=xlByRows, _
            MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
        
    Next Counter
        
End Sub

 

 

Länk till kommentar
Dela på andra webbplatser

Hej,

 

Tack för att du tar dig tid, det uppskattas. Jag klistrade in nedan och körde både via knapp och via altF8, händer inte ett smack tyvärr. Fattar inte varför.....

 

MVH

Tomas

Länk till kommentar
Dela på andra webbplatser

Efter kört makro så är angivet område markerat, men ingen ersättning har skett, så man kan se att makrot i alla fall körts men inget ändrats.

 

//T

Länk till kommentar
Dela på andra webbplatser

Ove Söderlund

Om det inte är alltför hemliga data så önskar jag att du kan posta ett utdrag av kolumn c här så får jag möjlighet titta på rådata för att om möjligt avgöra vad som knasar.

 

Annars så börjar jag få lite slut på idéerna och börjar misstänka att det kanske är något knas med just arbetsboken eller så. Det kodexempel jag postade fungerar klockrent på min exempeldokument. Jag bifogar det även här så kan du själv kika på det. Eftersom eForum inte tillåter makroaktiverade filer så har jag zippat den så får du sedan packa upp den.

 

test181025.zip

 

 

Länk till kommentar
Dela på andra webbplatser

Tack Ove, datan är lite för känslig tyvärr. Ja, tecknen finns på riktigt, det fungerar att ersäta "-" med inget när jag gör det manuellt, men när jag lägger in koden i ett makro så fungerera det inte. 

 

MH, ja tecknen finns på riktigt, hämtat från Hogia. Det är inte bara visningsformatet tyvärr, det hade varit strålande och gått att lösa. 

Länk till kommentar
Dela på andra webbplatser

Hej,

 

Jag spelade in ett makro där jag bytte x mot y, det fungerade perfekt! Jäkligt konstigt, gör jag nytt makro där - ska bytas mot inget, så fungerar det åter igen inte.....

 

//Toams

Länk till kommentar
Dela på andra webbplatser

Testat flera gånger nu. Om man ersätter X med Y så fungerar det manuellt och i ett maktro. Om jag ersätter - med ingenting så fungerar det manuellt men inte i maktro. Helknasigt....

Länk till kommentar
Dela på andra webbplatser

Vad händer om du ersätter - med £ (eller något annat tecken) i ett makro?

Bara för att se om det är - eller ingenting som felar.

Länk till kommentar
Dela på andra webbplatser

Ove Söderlund

Testa gärna om denna kod fungerar för dig. I stort som mitt föregående kodexempel men med en lite annorlunda stränghantering.

Sub test()

    Dim OriginalText As String, CorrectedText As String
    Dim Counter As Long
    
    For Counter = 1 To 25
    
        OriginalText = Cells(Counter, 3).Value
        CorrectedText = Replace(OriginalText, "-", "")
        Cells(Counter, 3).Value = CorrectedText
        
    Next Counter

End Sub

 

 

Länk till kommentar
Dela på andra webbplatser

Nu har jag testat följande:

Byta ut "-" mot ingenting då det bara finns "-" i cellen. Fungerar

Byta ut "£" mot ingenting då det bara finns "-" i cellen. Fungerar

Byta ut alla "-" i celler med innehåll t ex "2018-10-31" i cellen. Fungerar manuellt och ger "20181031" men inte i makro.

 

Tittar på excelpelfil, återkommer inom kort.

Länk till kommentar
Dela på andra webbplatser

Fil där jag lagt in makrot. Ersätt fungerade utmärkt när jag gjorde manuellt, inte i makrot. Har sparat ursprungsdatan i kolumner till höger för att kunna återskapa, det är nu kolumn B som makrot går mot.

 

 

testbyte.zip

Länk till kommentar
Dela på andra webbplatser

Stort tack för att ni tar er tid, håller på bli galen av en så simpel uppgift, men viktigt i mitt flöde. Tack.

Länk till kommentar
Dela på andra webbplatser

Testade att spela in

Sub Makro2()
'
' Makro2 Makro
'

'
    Cells.Replace What:="-", Replacement:="£", LookAt:=xlPart, SearchOrder _
        :=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
    Cells.Replace What:="£", Replacement:="", LookAt:=xlPart, SearchOrder:= _
        xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
End Sub

Vilket tycks fungera...

Edit: Går väl att snygga till antar jag, men att byta ut - mot £ och sedan £ mot ingenting verkar alltså fungera.

 

Tillägg: Men inte i din fil... ?

Länk till kommentar
Dela på andra webbplatser

Gäller detta alltid datumet eller har du använt ett datum 2018-10-30 för att illustrera problemet med just - ?

Om alltid datum kanske:

Sub Makro3()
'
' Makro3 Makro
'

'
    Columns("B:B").Select
    Selection.NumberFormat = "yyyymmdd"
End Sub

 

Länk till kommentar
Dela på andra webbplatser

Skumt om det fungerar i din fil men inte i min, jättekonstigt. Kan det vara olika versioner eller vad, aldrig sprungit på tidigare och bytte jobb för 4 veckor sedan, får det inte att fungera alls här.

 

Det är alltid datum, men även om jag väljer formatet så ligger ursprungsdatan kvar "2018-10-30" bara att det visas som "20181030". Löser tyvärr inte mitt problem heller. Datumen kommer från extern källa...

 

 

Länk till kommentar
Dela på andra webbplatser

Det som skiljer är att jag i mitt test/min fil inte markerar några celler.

Fast ändå skumt att just - till ingenting inte fungerade för mig.

En sak som jag inte kan verifiera är att när jag testade "min lösning" i din fil och valde att stega makrot så fungerade det.

Men lyckades alltså inte nästa gång..

Länk till kommentar
Dela på andra webbplatser

Mycket konstigt, jag ska försöka göra om min ODBC fråga och nya makron för att se om det hjälper, men räknar inte med det tyvärr. Mycket buggigt...

Länk till kommentar
Dela på andra webbplatser

Ove Söderlund

När jag testar att köra sök och ersätt med vba och du har datumformat så skiter det sig. Cellerna med datumformat visas fel (brädstaket i cellen) men andra celler med annat innehåll konverteras rätt med att bindestreck tas bort.

 

Jag uppdaterade min exempelkod med att definiera cellformat till Text och nu kan jag även med vba ta bort bindestrecken för datum.

 

Min kod ser ut som följer:

Sub test()

    Dim OriginalText As String, CorrectedText As String
    Dim Counter As Long

    For Counter = 1 To 25

        OriginalText = CStr(Cells(Counter, 3).Value)
        CorrectedText = Replace(OriginalText, "-", "")
        Cells(Counter, 3).NumberFormat = "@"
        Cells(Counter, 3).Value = CorrectedText

    Next Counter

End Sub

 

Bifogar även fil med exempeldata jag använder mig av samt koden här ovan.

test181030.zip

 

 

Länk till kommentar
Dela på andra webbplatser

Hej.

Jag ska pröva detta, dock osäker på om jag förstår, för dålig kunskap i VBA. Ska pröva i min fil...

 

//T

Länk till kommentar
Dela på andra webbplatser

Hej,

 

Även om jag ändrar till ÅÅÅÅMMDD så fungerar det inte, det har jag prövat. Det ser då ut som 20181030 men ställer jag mig i cellen så ser man 2018-10-30.

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...