Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Anzeige
Inhaltsverzeichnis

'zelle.HasArrayFormula' produziert Fehlercode 438

Forumthread: 'zelle.HasArrayFormula' produziert Fehlercode 438

'zelle.HasArrayFormula' produziert Fehlercode 438
23.05.2025 11:42:53
Ploenlx
Hallo liebe Community,

ich hänge schon seit ein paar Stunden mit KI unterstütztem Debugging an folgendem Problem. Vorausgeschickt: Ich habe kaum Ahnung von VBA. Der Code stammt von Gemini 2.5.

Das Problem tritt bei mir schon in einer sehr einfachen Testumgebung auf:

Frisches Excel-Blatt. A1=10, B1=0, C1=A1/B1

Zelle C1 wird markiert und dann folgender VBA-Code ausgeführt:

Sub TestNurHasArrayFormulaEigenschaft()

Dim testZelle As Range
Dim bHatArrayFormel As Boolean
Dim sFormel As String
Dim bHatFormel As Boolean

On Error GoTo FehlerTratAuf

If TypeName(Selection) > "Range" Then
MsgBox "Bitte markieren Sie eine einzelne Zelle.", vbInformation
Exit Sub
End If

If Selection.Cells.CountLarge > 1 Then
MsgBox "Bitte markieren Sie nur EINE einzelne Zelle.", vbInformation
Exit Sub
End If

Set testZelle = Selection.Cells(1)

MsgBox "Teste Zelle: " & testZelle.Address, vbInformation

' Schritt 1: .HasFormula testen
bHatFormel = testZelle.HasFormula
MsgBox "Ergebnis für .HasFormula: " & bHatFormel, vbInformation
If Not bHatFormel Then
MsgBox "Die Zelle enthält laut .HasFormula keine Formel. Test wird hier abgebrochen.", vbExclamation
Exit Sub
End If

' Schritt 2: .Formula lesen
sFormel = testZelle.Formula
MsgBox "Ergebnis für .Formula: " & sFormel, vbInformation

' Schritt 3: .HasArrayFormula testen (hier trat der Fehler 438 zuletzt auf)
MsgBox "Versuche jetzt .HasArrayFormula abzufragen...", vbInformation
bHatArrayFormel = testZelle.HasArrayFormula ' DIE KRITISCHE ZEILE

MsgBox "Abfrage von .HasArrayFormula erfolgreich. Ergebnis: " & bHatArrayFormel, vbInformation
Exit Sub

FehlerTratAuf:
MsgBox "Ein VBA-Fehler ist aufgetreten während 'TestNurHasArrayFormulaEigenschaft':" & vbCrLf & vbCrLf & _
"Fehlernummer: " & Err.Number & vbCrLf & _
"Beschreibung: " & Err.Description & vbCrLf & _
"Fehler vermutlich beim Testen von Zelle: " & testZelle.Address, vbCritical
End Sub



Es wird deutlich, dass die Abfrage der Zeile .HasArrayFormula den Fehler 438 verursacht. Der genaue Text ist: "Ein VBA-Fehler ist aufgetreten während 'TestNurHasArrayFormulaEigenschaft': Fehlernimmer: 438 Beschreibung: Objekt unterstützt diese Eigenschaft oder Methode nicht. Fehler vermutlich beim Testen von Zelle: $C$1"

Das gleiche Problem taucht auch in meinem ursprünglichen VBA-Code auf. Ich habe das ganze auf einem anderen PC getestet. Auf beiden Rechnern lauft Windows 11, version 24H2 mit Excel Version 2504 (Build 18730.20168).

Gemini ist am Ende und rät zu einer Neuinstallation von MS 365. Ich glaube aber nicht, dass das das Problem lösen wird. Ich wäre für Ratschläge dankbar.
Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: 'zelle.HasArrayFormula' produziert Fehlercode 438
23.05.2025 12:09:00
Beverly
Hi,

weshalb nicht einfach nach diesem Prinzip:

    Dim varArray

varArray = ActiveCell.HasArray
If varArray Then MsgBox "Zelle hat Arrayformel"


Bis später
Karin

Link zur Homepage: https://excel-inn.de/
Anzeige
AW: 'zelle.HasArrayFormula' produziert Fehlercode 438
23.05.2025 12:09:45
BoskoBiati
Hi,

wenn Du den Teil ".HasArrayFormula" löschst und neu eingibst, zeigt Dir die Vorschau diese Syntax nicht an. Es gibt nur HasArray und HasFormula!

Gruß

Edgar
AW: 'zelle.HasArrayFormula' produziert Fehlercode 438
23.05.2025 12:14:20
Yal
Hallo Gemini,

das Objekt Range hat die Eigenschaften "HasArray", "HasFormula" aber keine "HasArrayFormula".
Wenn Du in VBA das letzte Wort nach dem Punkt löscht und Strg+Leertaste drückst, bekommst Du eine Liste Eigenschaften und Methode eines Objektes. HasArrayFormula ist eben nicht dabei.

AI ist gut, wird dich aber nicht von der Notwendigkeit befreien, Kompetenz aufzubauen. Wenn Du nicht in der Lage bist, die Ausgabe von AI zu bewerten, wird ein Forum nur in einem begrenztem Umfang für Dich übernehmen.

Aber immerhin machst Du dich auf Weg.

VG
Yal

Anzeige
AW: 'zelle.HasArrayFormula' produziert Fehlercode 438
23.05.2025 18:24:14
daniel
Hi
um was geht es denn konkret?

mit .HasArray kann man abfragen, ob eine Zelle ein Teil einer ArrayFormel ist, dh einer Formel die mehrere Werte ausgibt.
das mit dem .HasArray funktioniert aber nur für eine "altmodische" Array-Formel, dh bei der Eingabe hat der Anwender alle benötigten Zellen markiert und die Eingabe mit STRG+SHIFT+ENTER abgeschlossen.

seit Excel 2022 (und damit auch in Excel 365) wurde dieses Prinzip der Array-Formel durch das sogenannte Spilling abgelöst. Dh der Anwender muss nicht mehr fest vorgeben, welche Zellen seine Arrayformeln belegen sollen, sondern das passiert ganz automatisch, die Formelergebnisse werden automatisch in die angrenzenden Zellen geschrieben, wenn dies erforderlich und die Zellen frei sind, ohne das der Anwender das explizit angeben muss.
eine Formel, die dieses Spill-Prinzip verwendet und mehrere Zellen belegt, wirst du mit der Funktion .HasArray nicht ermitteln können.

um zu ermitteln, ob so ein Spilling vorliegt, gibt es die Funktionen .SpillingToRange und .SpillParent (und vielleicht noch weitere, die ich auf die schnelle nicht gefunden habe)

Gruß Daniel
Anzeige
AW: 'zelle.HasArrayFormula' produziert Fehlercode 438
23.05.2025 12:20:04
Yal
Nun ja, ein bischen konstruktiver könnte ich doch sein:

ob eine Zelle eine Array-Formel hat, ergibt sich aus der Kombination, dass es eine Formel hat ("HasFormula") und dass es ein Array hat ("HasArray").

Sub test()

With Range("C4")
MsgBox "Zelle " & .Address & vbCr _
& "hat eine Formel: " & .HasFormula & vbCr _
& "hat eine Array: " & .HasArray & vbCr _
& "ist demetensprechend eine ArrayFormel: " & (.HasArray And .HasFormula)
End With
End Sub
Anzeige
AW: 'zelle.HasArrayFormula' produziert Fehlercode 438
23.05.2025 13:09:40
Ploenlx
Ich habe die Antwort "das Objekt Range hat die Eigenschaften "HasArray", "HasFormula" aber keine "HasArrayFormula"." als Grundlage genommen, einen anderen Befehl zu verwenden. Der bekommt zwar Probleme, wenn er auf Array-Formeln stößt, aber das sollte in meinem Anwendungsfall eigentlich nicht passieren.

Vielen Dank für das ganze, schnelle Feedback.
Anzeige

Forumthreads zu verwandten Themen

Anzeige
Anzeige