Hallo !
Het lukt mij niet om een oplossing te vinden voor het ongewenst omvormen van verwijzingen bij het kopiëren van een Range. Voor de duidelijkheid heb ik de oorspronkelijke code zodanig vereenvoudigd dat alleen de essentie overblijft.
We hebben twee geopende Excelbestanden: Book1.xlsm en Book2.xlsm.
In Book1.xlsm zijn er twee werkbladen: Sheet1 en Sheet2.
In Sheet1 staat een Link naar Cel A1 van Sheet2. De formule daarvan is =Sheet2!A1
In Book2.xlsm zijn er eveneens twee werkbladen: Sheet1 en Sheet2
We kopiëren nu de cel A1 van Sheet1 van Book1 naar de Sheet1 van Book2 met deze code:
Workbooks("Book1.xlsm").Sheets("Sheet1").Range("A1").Copy Workbooks("Book2.xlsm").Sheets("Sheet1").Range("A1")
In de cel A1 van Sheet1 van Book2 verwachtte ik als formule ook =Sheet2!A1 maar dat blijkt niet het geval want er staat =[Book1.xlsm]Sheet2!A1 wat uiteraard een foutief resultaat oplevert!
De vraag is: Kunnen we dergelijke ongewenste omvorming van die formule vermijden?
Ik weet dat men dat achteraf kan herstellen door
maar die oplossing kan ik in de oorspronkelijke code niet toepassen omdat er ongeldige verwijzingen inzitten. Die heeft de gebruiker erin gezet en ik heb niet het recht om daaraan iets te doen.
Even dacht ik het gevonden te hebben door gewoonweg de formule te kopiëren met onderstaande code (die nu wel uit het origineel komt):
Bij de uitvoering van deze code stuit ik soms op een Run-time error, zie bijlage, a.u.b.
Het vervelende is dat deze fout soms wel optreedt en soms niet. Blijkbaar op willekeurige momenten. Ik heb ook al getest met EnableEvents op False en
Calculation op xlManual, maar niets van dat bracht enige zoden aan de dijk.
Heeft misschien iemand een idee?
Bij voorbaat dank,
Grtz,
MDN111.
Het lukt mij niet om een oplossing te vinden voor het ongewenst omvormen van verwijzingen bij het kopiëren van een Range. Voor de duidelijkheid heb ik de oorspronkelijke code zodanig vereenvoudigd dat alleen de essentie overblijft.
We hebben twee geopende Excelbestanden: Book1.xlsm en Book2.xlsm.
In Book1.xlsm zijn er twee werkbladen: Sheet1 en Sheet2.
In Sheet1 staat een Link naar Cel A1 van Sheet2. De formule daarvan is =Sheet2!A1
In Book2.xlsm zijn er eveneens twee werkbladen: Sheet1 en Sheet2
We kopiëren nu de cel A1 van Sheet1 van Book1 naar de Sheet1 van Book2 met deze code:
Workbooks("Book1.xlsm").Sheets("Sheet1").Range("A1").Copy Workbooks("Book2.xlsm").Sheets("Sheet1").Range("A1")
In de cel A1 van Sheet1 van Book2 verwachtte ik als formule ook =Sheet2!A1 maar dat blijkt niet het geval want er staat =[Book1.xlsm]Sheet2!A1 wat uiteraard een foutief resultaat oplevert!
De vraag is: Kunnen we dergelijke ongewenste omvorming van die formule vermijden?
Ik weet dat men dat achteraf kan herstellen door
Code:
Workbooks("Book2.xlsm").ChangeLink Name:="Book1.xlsm", NewName:="Book2.xlsm", Type:=xlExcelLinks
Even dacht ik het gevonden te hebben door gewoonweg de formule te kopiëren met onderstaande code (die nu wel uit het origineel komt):
Code:
For Each myCell In .Range(myRangeAsString).Cells
If myCell.HasFormula Then
If InStr(myCell.Formula, "totaal overzicht") = 0 Then
myCell.Formula = oSheetToClean.Range(myCell.Address).Formula 'Hier loopt het soms fout. Run-time error.
End If
End If
Next
Bij de uitvoering van deze code stuit ik soms op een Run-time error, zie bijlage, a.u.b.
Het vervelende is dat deze fout soms wel optreedt en soms niet. Blijkbaar op willekeurige momenten. Ik heb ook al getest met EnableEvents op False en
Calculation op xlManual, maar niets van dat bracht enige zoden aan de dijk.
Heeft misschien iemand een idee?
Bij voorbaat dank,
Grtz,
MDN111.