HERBERS Excel-Forum - das Archiv

Thema: Formeländerung durch Wechsel von Excel 2021 auf 2019

Formeländerung durch Wechsel von Excel 2021 auf 2019
Niels
Hallo Forum,
ich habe ein Problem bei der gleichzeitigen Nutzung einer Excelarbeitsmappe mit Excel 2021 und früheren Versionen (<=2019).

- Die Arbeitsmappe wurde mit Excel 2021 erstellt.
- Die Mappe enthält VBA Funktionen, die in den Zellen als Arbeitsblattfunktionen eingesetzt werden.
- Die Formelanzeige in Excel 2021 sieht dann z.B. so aus '=getGUID()'
- Öffne ich die gleiche Arbeitsmappe mit Excel 2019, 2016 oder 2010 so steht in der gleichen Zelle '{=getGUID()}'. Die Formel ist also mit geschweiften Klammern umschlossen. Dies ist normalerweise die Darstellung von Matrixfunktionen.

Die Funktion der Formel selbst ist nicht eingeschränkt. Der Versuch diese Formel via VBA und Range().PasteSpecial zu kopieren liefert aber den VBA Fehler "Teile einer Matrix können nicht geändert werden".

Nun meine Frage:
- gibt es einen Weg diese Änderung der Formeln zu vermeiden
- hat jemand eine Idee, wie ich via Makro aus den "MatrixFormeln" wieder normale Formeln machen kann? (das würde nur ein paar Tabellenbereiche betreffen, weil nur diese für die Kopieraktionen verwendet werden).
- oder hätte jemand einen anderen Ansatz, wie ich es hinbekomme, dass die Mappe auf beiden Excel-Versionen ausführbar ist?

Danke im Voraus für Lösungshinweise.
Niels
AW: Formeländerung durch Wechsel von Excel 2021 auf 2019
{Boris}
Hi,

dazu muss man die Funktion =getGUID() kennen.
Poste doch mal den Code.

Grundsätzlich gibt es halt seit xl365 das Spill-Prinzip, was es vorher noch nicht gab. Da musste vorher die Arraygröße festgelegt und dann die entsprechenden Ergebnisse dort eingetragen werden - als zusammenhängende Matrixformel. Und die kann man dann nur ganz oder gar nicht bearbeiten. Für den Versuch einer Teilbearbeitung kommt es dann zu der von Dir genannten Fehlermeldung.

VG, Boris
AW: Formeländerung durch Wechsel von Excel 2021 auf 2019
Niels
Hallo Boris, hallo Onur,
danke für die Rückmeldungen.
@Boris: Das Problem tritt bei allen eigenen VBA-Formeln auf, die als Arbeitsmappenfunktionen eingesetzt werden. getGUID() ist nur ein Beispiel für eine meiner Funktionen die ich an den unterschiedlichsten Stellen einsetze. Der Code in der Funktion selbst ist egal, es geht um den Kopiervorgang
@Onur: Der Fehler tritt beim simpelsten
range("a1").copy

range("b1").PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, SkipBlanks:=False, Transpose:=False

auf.
Ich bin mir allerdings nicht sicher, ob das Kopieren der Formel selbst den Fehler auslöst oder die Tatsache, dass die Zielposition bereits eine solche Formel enthält.

Ich habe mal folgende Sub geschrieben. Das Makro bearbeitet auf meinem Arbeitsblatt (KopierVorlage) in einem Bereich alle Zellen mit Formeleingaben. Auch wenn dabei nur die Formel gelesen und wieder gesetzt wird, scheint dies das Problem zu beheben.

Das Problem schein damit gelöst.
Herzlichen Dank
Niels



Public Sub makeNormaleFormel()
Dim ws As Worksheet, Zelle As Range
Dim Zeile As Integer, Spalte As Integer, FormelText As String
Set ws = Worksheets("KopierVorlage")
Application.EnableEvents = False
Application.Calculation = xlCalculationManual
For Spalte = 10 To 20
For Zeile = 12 To 60
Set Zelle = Cells(Zeile, Spalte)
If InStr(1, Zelle.Formula, "=") = 1 Then
FormelText = Zelle.Formula
Zelle.ClearContents
Zelle.Formula = FormelText
End If
Next
Next
Application.EnableEvents = True
Application.Calculation = xlCalculationAutomatic
End Sub
AW: Formeländerung durch Wechsel von Excel 2021 auf 2019
Onur
Offenbar hast du unbeabsichtigt Funktionen erschaffen, die Spill-Ergebnisse ausgeben. Ich vermute, es liegt doch an den UDFs.
AW: Formeländerung durch Wechsel von Excel 2021 auf 2019
Onur
"Der Versuch diese Formel via VBA und Range().PasteSpecial zu kopieren liefert aber den VBA Fehler "Teile einer Matrix können nicht geändert werden". " ??
Und WIE GENAU versuchst du das Kopieren?