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

PNG32 PNG32
PNG32 PNG32
PNG32

Excelforum

PNG32

 
ForumForumDiskussionerDiskussionerVBAVBAHitta Och Ersätt Flera Värden Samtidigt Med VBA-Kod?Hitta Och Ersätt Flera Värden Samtidigt Med VBA-Kod?
Föregående Föregående
 
Nästa Nästa
Nytt inlägg
 2021-10-26 13:32
 

 Hej!

Jag försöker ersätta flera värden med ett macro i VBE, jag använder koden som ni ser nedan. Jag får till det första steget, att markera området som  värdena skall ändras i. Det som krånglar för mig är att den andra popup rutan där man ska ange de värden det skall ändras till inte kommer upp.

Jag har Kutoolsforexcel installerad.

Jag kan inte mycket i excel utan jag läser mig till det som skall göras, jag hoppas att någon kan hjälpa mig.

 

Sub MultiFindNReplace()
'Updateby Extendoffice
Dim Rng As Range
Dim InputRng As Range, ReplaceRng As Range
xTitleId = "KutoolsforExcel"
Set InputRng = Application.Selection
Set InputRng = Application.InputBox("Original Range ", xTitleId, InputRng.Address, Type:=8)
Set ReplaceRng = Application.InputBox("Replace Range :", xTitleId, Type:=8)
Application.ScreenUpdating = False
For Each Rng In ReplaceRng.Columns(1).Cells
    InputRng.Replace what:=Rng.Value, replacement:=Rng.Offset(0, 1).Value
Next
Application.ScreenUpdating = True
End Sub
Nytt inlägg
 2021-10-26 19:10
 

 Hej hej

 

Tips är att alltid ha option explicit längst uppe på kodbladet. Då tvingas du att dimensionera alla dina variabler, vilket kan tyckas vara jobbigt, men det tar ännu längre tid att sitta och leta stavfel, typfel och dyilkt :D

Hittar inga direkta fel i koden, Fick du något felmeddelande?. Fel uppstår om annat än en range följt av klicka ok görs av användaren. Detta kan(och bör) hanteras. Då felhanteringen i vba inte är världsbäst är det bra att undvika den om man kan. Nu hanteras din första inputbox så att användaren kan göra alla möjliga olika fel utan att programmet slinter, detta görs genom att lägga användarens svar i en collection, denna utvärderas sedan för att se om det är ett rangeobjekt eller inte. Oklart om detta löser ditt problem. Vilken excelversion kör du? Har du Mac?

Sub MultiFindNReplace()

'Updateby Extendoffice

Dim Rng As Object

Dim inputrng As Range, ReplaceRng As Range

'Dim xTitleId As String

xTitleId = "Ingen reklam"

Dim mCol As New Collection

 

Set inputrng = Application.Selection

mCol.Add Application.InputBox("Original Range ", xTitleId, inputrng.Address, Type:=8)

If TypeOf mCol(1) Is Range Then

    Set inputrng = mCol(1)

Else

    MsgBox "terminerat av användaren"

    Exit Sub

End If

 

Set ReplaceRng = Application.InputBox("Replace Range :", xTitleId, Type:=8)

Application.ScreenUpdating = False

For Each Rng In ReplaceRng.Columns(1).Cells

    inputrng.Replace what:=Rng.Value, replacement:=Rng.Offset(0, 1).Value

Next

Application.ScreenUpdating = True

End Sub

 

 

 

Nytt inlägg
 2021-10-27 15:29
 
 Ändrad av Benny  på 2021-10-28 13:40:28

 Hej!

Jag har Windows 10 och jag får inga felmeddelanden, office 365.

Jag har testat den koden jag fick av dig, fungerade inte  :(

Nytt inlägg
 2021-10-28 08:23
 
 Ändrad av Christian  på 2021-10-28 08:29:28

 Hej igen

Är din skärmuppdatering på? den sätts inte på om inte koden körs klart. undersök med att skriva i ditt direktfönster: ?application.screenupdating

Fick du Sant så är den påslagen, false så kan du slå på den, skriv application.screenupdating = true i direktfönstret.

Testa även att bortkommentera screenupdating och därefter köra den igen. (när du säkerställt att screenupdating är påslagen.

Sedan kan det vara klokt att även testa om du kan få andra fel att synas. Makrot nedan ska trigga felet div/0

sub triggerdivo()

Dim i as long

i = 1/0

end sub

Sedan kan du även testa att gå in i editorn och sätta en brytpunkt vid din andra inputbox, detta gör du med att klicka i grå marginalen till vänster om raden du vill att koden ska stanna på. När koden stannat så kör du den raden med F8 och tabbar ut till excel för att se om du fick någon inputbox.

/c

 

 

Nytt inlägg
 2021-10-28 14:33
 

 Hej!

På något konstigt sätt så fick jag det till att fungera, vet inte riktigt vad jag gjorde dåck :).

En fråga, ska jag vara inne i VBE när jag skall göra bytet med kommando F5? jag tror det var det jag gjorde för att få det att fungera.

Nytt inlägg
 2021-10-29 04:22
 

 Hej igen

F8 ska du trycka på från VBE ja, det använder man för att felsöka kod. Programmet som sådant ska vara körbart i sin helhet från excel. Misstänker att skärmuppdateringen var avstängd och att det var därför som det inte verkade fungera. 

/c

Föregående Föregående
 
Nästa Nästa
ForumForumDiskussionerDiskussionerVBAVBAHitta Och Ersätt Flera Värden Samtidigt Med VBA-Kod?Hitta Och Ersätt Flera Värden Samtidigt Med VBA-Kod?

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