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

macro selection.replace

Status
Niet open voor verdere reacties.

Havana100

Verenigingslid
Lid geworden
22 jul 2014
Berichten
309
Beste,

iemand een idee waarom onderstaande macro, in de formule :

INDEX('C:\Dropbox\E AO_TOT\[AO_E_tussenfile_2019.xlsx]Blad1'!$A$5:$DZ$3000;VERGELIJKEN($B8;'C:\Dropbox\E AO_TOT\[AO_E_tussenfile_2019.xlsx]Blad1'!$A$5:$A$3000;0);VERGELIJKEN($AD8;'C:\Dropbox\E AO_TOT\[AO_E_tussenfile_2019.xlsx]Blad1'!$A$4:$DZ$4;0))


de " 2019 " niet veranderd in "2018"?

de waarde in cel Sheets("Klant nrs").Range("B1:B1") = 2019 en de waarde in Sheets("Klant nrs").Range("D1:D1") = 2018.

de macro :

Code:
Sub koppeling_aanpassen()
'
' koppeling_aanpassen Macro
'

'


    
    
    Sheets("Berekening").Select
    Range("F1:I2500").Select
    
    Sheets("KLant nrs").Select
    Range("C4:C2504").Select
    Cells.Replace What:=Sheets("Klant nrs").Range("B1:B1"), Replacement:=Sheets("Klant nrs").Range("D1:D1"), LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False, FormulaVersion:=xlReplaceFormula2
    Sheets("Berekening").Select
    Selection.Replace What:=Sheets("Klant nrs").Range("B1:B1"), Replacement:=Sheets("Klant nrs").Range("D1:D1"), LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False, FormulaVersion:=xlReplaceFormula2
End Sub
 
Laatst bewerkt door een moderator:
Mooi man al die smileys. Ik zou nog vaker select gebruiken. Als je in een formule zoekt dan zal je dat ook aan moeten geven.
 
VenA,

Bedankt hoor! zal er aan denken! En dan DE vraag, hoe zoek je ook in formules?
 
Kijk eens naar dit voorbeeld:
Code:
Sub koppeling_aanpassen()
    sCalc = Application.Calculation
    Application.Calculation = xlCalculationManual
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    
    With Sheets("KLant nrs")
        For Each cl In .Range("C4:C2504").SpecialCells(xlCellTypeFormulas)
            cl.Formula = Replace(cl.Formula, .Range("B1"), .Range("D1"))
        Next cl
    End With
        
    Application.Calculation = sCalc
    Application.DisplayAlerts = True
    Application.ScreenUpdating = True
End Sub

Daarnaast, wat VenA zegt.
Vind je de code in mijn bericht niet een stuk leesbaarder?
Zo worden die smileys ook niet getoond.
 
Laatst bewerkt:
edmoor,

Jou code is inderdaad een stuk leesbaarder, absoluut zo. Echter als ik de macro kopieer komen de smileys te voorschijn. Geen idee waarom.

In bijlage heb ik een voorbeeld geplaatst. Ik heb jou macro erbij geplaatst maar lukt me blijkbaar nog niet en ...... en echt geen specialist hoor!!!

sowieso al bedankt !
 

Bijlagen

Wat je zoekt om te vervangen staat alleen in de kolommen F, G en H van het blad Berekening, dan moet je die dus ook opgeven:
Code:
Sub vervangen()
    sCalc = Application.Calculation
    Application.Calculation = xlCalculationManual
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    
    With Sheets("Berekening")
        For Each cl In Sheets("Berekening").Range("F:H").SpecialCells(xlCellTypeFormulas)
            cl.Formula = Replace(cl.Formula, Sheets("KLant nrs").Range("B1"), Sheets("KLant nrs").Range("D1"))
        Next cl
    End With
        
    Application.Calculation = sCalc
    Application.DisplayAlerts = True
    Application.ScreenUpdating = True
End Sub

Plaats altijd een voorbeeld document en zet code in codetags met het # uit het berichten menu.
Klik op de link in de handtekening van VenA voor uitleg.
 
Laatst bewerkt:
Edmoor,

Bedankt hoor, macro werkt perfect !

En tevens bedankt voor de overige uitleg, zo leer je telkens wat bij !!!!
 
Ik vermoed dat het ook zonder lusje gaat.
Code:
Sub vervangen()
Application.Calculation = xlCalculationManual
 Application.DisplayAlerts = False
  With Sheets("klant nrs")
   Sheets("Berekening").columns("F:H").replace .Range("B1"), .Range("D1")
  End With
 Application.Calculation = sCalc
End Sub
 
Harry,

Werkt ook hoor, bedankt maar geen idee waarom maar als ik jou macro gebruik dan gaat in de excel file : bestand/opties/formule/berekeningsopties/werkmap berekenen , de werkmap berekenen van automatisch naar handmatig. ( gewoon ter info)
 
Dat komt omdat er een regeltje mist:
Code:
Sub vervangen()
 [COLOR="#FF0000"]sCalc =Application.Calculation[/COLOR]
 Application.Calculation = xlCalculationManual
 Application.DisplayAlerts = False
  With Sheets("klant nrs")
   Sheets("Berekening").columns("F:H").replace .Range("B1"), .Range("D1")
  End With
 Application.Calculation = sCalc
End Sub
 
Meestal staat het altijd op Automatisch, dan zou ik het zo aanpassen.

Code:
Application.Calculation = xlCalculationAutomatic
Maar goed, het zal wel een ingebouwd zekerheid zijn om niets aan het toeval over te laten.
 
Het zit er in om het altijd terug te zetten naar wat het was voordat het op handmatig werd gezet.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan