Tipps "n" Tricks
Anwender-Software - Excel

Zirkelbezüge automatisch auflisten

Thema:

Excel 97/2000/2002   

Vor allem in komplexen Kalkulationsmodellen kann es schnell passieren, dass Excel plötzlich eine Fehlermeldung über nicht auflösbare Zirkelbezüge anzeigt. Bei einem Zirkelbezug hängt die Berechnung einer Formel direkt oder indirekt vom Ergebnis der Zelle ab, in die Sie die Formel eingetragen haben, so dass eine normale Berechnung nicht möglich ist. So erzeugen Sie beispielsweise einen Zirkelbezug, wenn Sie die folgende Formel in Zelle B20 eintragen:

=B20*2

In diesem Fall lässt sich die Ursache des Problems auf den ersten Blick erkennen, aber es gibt Modelle, in denen der Fehler nicht so eindeutig zu finden ist. Ausserdem kommt ein Zirkelbezug selten allein, so dass die in der Statuszeile oder der Symbolleiste "Zirkelbezug" angezeigte Zelle wenig hilfreich ist. In dem folgenden Listing finden Sie daher eine VBA-Prozedur, die eine wertvolle Hilfe bei der Fehlersuche in umfangreichen Kalkulationsmodellen sein wird:

Sub ZirkelbezuegeAuflisten()

  Set AktBlatt = ActiveSheet
  Sheets.Add
  Set NeuesBlatt = ActiveSheet

  Zielbereich = ActiveCell.Address
  AktBlatt.Activate

  Zeilenzähler = 0

  On Error GoTo MakroNeuAufnehmen

  For Each Zelle In AktBlatt.UsedRange
    If Left(Zelle.Formula, 1) = "=" Then
    Ergebnis = Intersect(AktBlatt.Range(Zelle.Address), _
    AktBlatt.Range(Zelle.Precedents.Address))

    NeuesBlatt.Range(Zielbereich).Offset(Zeilenzähler, _
    0).Value = Zelle.Address(False, False)

    NeuesBlatt.Range(Zielbereich).Offset(Zeilenzähler, _
    1).Value = " " & Zelle.Formula

    Zeilenzähler = Zeilenzähler + 1

Weiter:
    End If
  Next
Exit Sub

MakroNeuAufnehmen:
  Resume Weiter
End Sub

Nachdem Sie auf eine beliebige Zelle innerhalb der entsprechenden Tabelle geklickt und das Makro gestartet haben, wird automatisch ein neues Arbeitsblatt erzeugt, in dem alle Zellen mit Zirkelbezügen sowie den entsprechenden Formeln aufgeführt sind.

Die Funktionsweise des Makros ist schnell erklärt: In einer For-Each-Schleife wird jede Zelle des aktiven Bereiches (UsedRange) daraufhin überprüft, ob sie eine Formel enthält oder nicht. Sollte das der Fall stellt das Makro mit Hilfe der Intersect-Methode fest, ob es einen Schnittpunkt zwischen den Vorgängerzellen (Precedents) und dem aktuellen Bezug gibt. Wenn diese Konstellation eintritt, liegt ein Zirkelbezug vor und der Bezug sowie die Formel werden in das neue Arbeitsblatt eingetragen. Ist kein Schnittpunkt vorhanden, wäre das Ergebnis von "Intersect" normalerweise eine Fehlermeldung, aber in unserem Fall wird der Fehler mit Hilfe von "On Error Goto" auf eine Fehlerbehandlungsroutine gelenkt, die den nächsten Schleifendurchlauf startet.

 

Tipps "n" Tricks
Anwender-Software - Excel