Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1944to1948
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Spillbereich einer Formel in VBA ermitteln
25.09.2023 15:50:41
daniel
Hi
wenn ich in Excel 365 eine Formel mit Matrixausgabe habe, wie kann ich dann per VBA auf den Spill-Bereich dieser Formel referenzieren (bspw, um die Formel durch Werte zu ersetzen)

also beispielweise: in C1 steht =Eindeutig(A1:A99)
und ich möchte die Zellen referenzieren, die von der Formel in C1 belegt werden, wie geht das mit VBA?

für klassische Matrixformeln mit STRG+SHIFT+ENTER gabs dafür die Funktion .CurrentArray, aber die funktioniert hier nicht.
gibt es hier eine spezielle Funktion oder muss man sich behelfen (End(xldown), CurrentRegion))?

Gruß Daniel

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Spillbereich einer Formel in VBA ermitteln
25.09.2023 16:28:40
Yal
Hallo Daniel,

es ist nicht ganz einfach, die Excel-Formelwelt mit VBA zu vermischen, wenn die Formeln keine vordefinierte Rückgabebereich haben.

Man kann aber ganz einfach die Function Eindeutig in VBA nachbauen:
Public Function Eindeutig(ByVal Target As Range) As Variant()

Dim Dic
Dim Z

Set Dic = CreateObject("Scripting.Dictionary")
For Each Z In Target.Cells
Dic(Z.Value) = 1
Next
Eindeutig = Dic.keys
End Function

Sub test()
Dim Erg
Dim Elt

Erg = Eindeutig(Worksheets(1).Range("A1:A99"))
Debug.Print "Anzahl Elt: " & UBound(Erg) + 1
For Each Elt In Erg
Debug.Print Elt
Next
End Sub


(nicht geeignet für die Verwendung als UDF)

VG
Yal
Anzeige
AW: Spillbereich einer Formel in VBA ermitteln
25.09.2023 17:00:12
RPP63
Moin!
Wenn Du den Spillbereich der Formel einer beliebigen Zelle aus dem Spillbereich ermitteln willst:
Sub Melde_Spillbereich()

With Range("C2")
If .HasSpill Then
Debug.Print .SpillParent.SpillingToRange.Address
End If
End With
End Sub

Kennst Du die Formelzelle, wird es einfacher:
Sub Spillzelle_bekannt1()

Debug.Print Range("C1").SpillingToRange.Address
End Sub

Hier funktioniert auch das Doppelkreuz (analog zu Excel):
Sub Spillzelle_bekannt2()

Debug.Print Range("C1#").Address
End Sub

Gruß Ralf
Anzeige
AW: Spillbereich einer Formel in VBA ermitteln
25.09.2023 17:06:03
daniel
Perfekt. Danke Ralf

ich meine, dass ich das mit dem Range + # sogar probiert habe und es nicht funktioniert hat, aber da muss ich wohl was anderes falsch gemacht haben.

Gruß Daniel
AW: Spillbereich einer Formel in VBA ermitteln
25.09.2023 16:35:57
daniel
Hi Yal.
ja, das ist klar.
Ist aber nicht Sinn der Sache.
Das mit dem EINDEUTIG war ja nur ein Beispiel. Die Formel kann schon komplexer sein.
Daher grundsätzlich die Frage, ob es die Möglichkeit gibt, den Spill-Bereich einer Formel konkret abzufragen oder ob man sich mit Workarounds behelfen muss.
Gruß Daniel
Anzeige

64 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige