Hoe zorg ik ervoor dat Excel niet begint te stuiteren met Replace()

Status
Niet open voor verdere reacties.

Tijger81

Gebruiker
Lid geworden
2 jan 2010
Berichten
397
Hallo, Ik heb nu deze code om meerdere tekens binnen een selectie te vervangen in _.
Echter Excel loopt vast als ik deze macro uitvoer. Of begint te stuiteren. Bij foutopsporing geeft hij bijv: c = Replace(c, "\", "_") als fout aan.

Code:
Sub ReplaceText()
    Dim c As Range
    For Each c In ActiveSheet.UsedRange
        c = Replace(c, " ", "_")
        c = Replace(c, ":", "_")
        c = Replace(c, ";", "_")
        c = Replace(c, "/", "_")
        c = Replace(c, "\", "_")
        c = Replace(c, "-", "_")
        c = Replace(c, "=", "_")
        c = Replace(c, "+", "_")
        c = Replace(c, ",", "_")
    Next
End Sub

Wat is hier aan de hand?
 
Laatst bewerkt door een moderator:
Kun je svp code tags gebruiken ?

je schrijft veel te vaak naar het werkblad:

Code:
Sub ReplaceText()
  application.screenupdating=false

  For Each c In ActiveSheet.UsedRange
     c = Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(c, " ", "_"),":", "_"), ";", "_"),"/", "_"), "\", "_"), "-", "_"), "=", "_"), "+", "_"), ",", "_")
  Next

  application.screenupdating=true
End Sub

of slechts 1 keer :

Code:
sub M_snb()
  sn=activesheet.usedrange

  for j=1 to ubound(sn)
    for jj=1 to ubound(sn,2)
      sn(j,jj)= Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(sn(j,jj), " ", "_"),":", "_"), ";", "_"),"/", "_"), "\", "_"), "-", "_"), "=", "_"), "+", "_"), ",", "_")
    next
  next

 activesheet.usedrange=sn
End Sub
 
Laatst bewerkt:
Er zit ergens iets niet goed in de eerste code, want er veranderd niks.
De verboden tekens blijven staan.
 
Ik heb er al gevonden die werkt:

Code:
Sub Replace()
   Cells.Replace What:="-", Replacement:="_", LookAt:=xlPart, SearchOrder:=xlByRows
   Cells.Replace What:=";", Replacement:="_", LookAt:=xlPart, SearchOrder:=xlByRows
   Cells.Replace What:=":", Replacement:="_", LookAt:=xlPart, SearchOrder:=xlByRows
   Cells.Replace What:=" ", Replacement:="_", LookAt:=xlPart, SearchOrder:=xlByRows
   Cells.Replace What:="/", Replacement:="_", LookAt:=xlPart, SearchOrder:=xlByRows
   Cells.Replace What:="\", Replacement:="_", LookAt:=xlPart, SearchOrder:=xlByRows
   Cells.Replace What:="=", Replacement:="_", LookAt:=xlPart, SearchOrder:=xlByRows
   Cells.Replace What:="+", Replacement:="_", LookAt:=xlPart, SearchOrder:=xlByRows
   Cells.Replace What:="@", Replacement:="_", LookAt:=xlPart, SearchOrder:=xlByRows
End Sub
 
Laatst bewerkt door een moderator:
@Tijger81,

Dit is ook een mooie variant:

Code:
Sub ReplaceText()
Dim aChar() As Variant, i As Integer
aChar = Array("-", ";", ":", " ", "/", "\", "=", "+", "@")
For i = LBound(aChar) To UBound(aChar)
    Cells.Replace What:=aChar(i), Replacement:="_", LookAt:=xlPart, SearchOrder:=xlByRows
Next
End Sub




@snb,

Zou het kunnen dat je tweede optie als volgt moet aangepast worden ?

Code:
sub M_snb()
  sn=activesheet.usedrange

  for j=1 to ubound(sn)
    for jj=1 to ubound(sn,2)
      sn(j,jj)= Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace([COLOR="#FF0000"][B]sn(j,jj)[/B][/COLOR], " ", "_"),":", "_"), ";", "_"),"/", "_"), "\", "_"), "-", "_"), "=", "_"), "+", "_"), ",", "_")
    next
  next

 activesheet.usedrange=sn
End Sub
 
Hoi,

Ja die 2e werkt nu ook. Maar ik gebruik die van mijzelf. is overzichtelijker.
Weet jij toevallig of het mogelijk is of je een NAS van buiten je huis kunt opstarten. Binnenshuis met wifi lukt het.
Nu heb ik ook iets gevonden over Port forwarden, maar dat lukt nog niet. Ik heb in mijn router thuis vervolgens wel een port forwarding ingesteld, maar het werkt nog niet: het opstarten van de nas
 
@MDN111

Natuurlijk heb je gelijk. Ik heb de code aangepast.

@tijger81

Dat is een heel andere vraag, die daarom een aparte draad verdient.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan