• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

Replace formules niet volledig #naam?

Status
Niet open voor verdere reacties.

Symphysodon

Gebruiker
Lid geworden
14 dec 2012
Berichten
468
Beste forummers,

Ik heb een code die werkbladen kopieert en ze vervolgens aanpast naar de goeie format.
Voor de aanpassingen gebruik ik de functie Find en Replace. Dit gaat voor de meeste dingen goed behalve bij formules.
Het gene wat vervangen moet worden bestaat uit tekst en getallen, bijvoorbeeld: 'test el 123.45'
Als ik de code gebruik maakt vba van de formule: test el '123.45' met als gevolg dat de formule in de desbetreffende cel niet meer werkt en met de foutmelding: #NAAM? komt.

Code:
    Dim n as String
    Set r = Cells.Find("Element", ActiveCell, xlFormulas, xlPart, , , False, False)
    If Not r Is Nothing Then
      startadres = r.Address
      Debug.Print startadres
      Do
        Application.DisplayAlerts = False 'bevestigingsvragen vermijden
        r.Replace "Element", n, xlPart, xlByRows, False, False, False
        Application.DisplayAlerts = True
        Set r = Cells.FindNext(r)
      Loop Until r Is Nothing
    End If

In de code is n dan gelijk aan bijvoorbeeld het gegeven voorbeeld

Het gaat om verwijzingen naar andere tabbladen. Als ik de verwijzing handmatig in de sheet uitvoer gaat het wel goed
 
Als er #NAAM? komt te staan is het resultaat een formule met een naam die Excel niet kent.
 
Dank je voor de toelichting maar dat is geen antwoord op mijn vraag. Het gaat erom dat vba quotjes om de cijfers zet, terwijl als ik met mijn muis in de editor boven n ga staan er netjes in een tekstbalon de tekst: "'test el 123.45" komt te staan zonder quots rond de cijfers.
 
Je kreeg een simpel antwoord omdat er zonder je document niet veel meer over te zeggen is.
 
Ik heb een poging gewaagd om een document te maken die dezelfde foutmelding geeft.
 

Bijlagen

Laatst bewerkt:
Wat wil je in het document waar precies vervangen?
Ik zie wel dat je bladnaam test el 123.45 gevolgd wordt door een spatie.

Zorg dat de naam van het blad klopt, dus zonder die spatie er achter en wijzig n eens in dit:
n = "'test el 123.45'"
 
Laatst bewerkt:
In kolom en [c] staan achter de aanduidingen formules waarin de werkbladnaamverwijzing aangepast moet worden.

In het 'echte' programma kan de bladnaam niet mis gaan omdat de naam vanuit vba gekopieerd wordt. In het voorbeeld heb ik het resultaat van n gepost, eigenlijk is n:

n = .Cells(i, k)
 
Controleer of de bladnaam exact overeenkomt met de naam die je in het andere blad opgeeft. Zonodig Specsavers inschakelen.
 
Denk ook aan de enkele qoute.

Code:
n = "'test el 123.45 '"
 
haha ik heb inderdaad sinds kort een bril en kan er nog niet echt aan wennen. Met de bladnaam kan het niet mis gaan omdat het blad gemaakt wordt vanuit een cel in het blad "rd"

In de bijlage het aangepaste bestand zonder spatie
 

Bijlagen

Wat is het probleem ?

Code:
Sub M_snb()
   Columns(3).Replace "Element!", "'test el 123.45'!"
End Sub
 
Als je de code in mijn laatste post test zie je dat het resultaat niet goed is: =ALS(test el '123.45'!C13="","",test el '123.45'!C13)
ipv: =ALS(test el 123.45!C13="","",test el 123.45!C13)

In de code moet iets komen te staan die de quotes weer weghalen
 
Nee.
Je moet de enkele quotes om de bladnaam heen fabriceren.
Als deze er niet omheen staan zet Excel zelf enkele quotes om het numerieke gedeelte van die bladnaam in de formule om er zeker van te zijn dat het uiteindelijk een string is.

De variabele n moet dus zo worden gezet, wat ik al eerder zei en snb ook:
n = "'" & .Cells(i, k) & "'"

N.B.:
Haal wel die Debug.Print eruit.
Deze veroorzaakt op die plek een fout zodra r geen waarde meer heeft (Nothing).
 
Laatst bewerkt:
Dat kan inderdaad maar die extra variabele is overbodig.
Ik had net #14 aangevuld.
 
Edmoor bedankt voor je hulp, alle andere ook bedankt voor het meedenken.
In de bijlage het aangepaste werkende bestand
 

Bijlagen

Ik snap niet dat je mijn suggestie in #12 niet gebruikt.
 
Precies. Dan kan die hele loop achterwege blijven.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan