nun ja, über Anwenderfreundlich, oder nicht, da kann man streiten. Fakt ist, ich liebe VBA! Wenn man eine Datei mit vielen Tabellen hat, spüre ich den Zrkelbezug damit mühelos auf. Ich brauche nicht jedes Sheet einzeln abzusuchen, und kann mir die Zelle anzeigen lassen!
22.12.2023, 19:10 (Dieser Beitrag wurde zuletzt bearbeitet: 22.12.2023, 19:11 von RPP63.)
Moin! Ja, scheint tatsächlich ein kleiner Bug zu sein, denn ActiveSheet.CircularReference.Count (und CircularReferences ist nicht im Angebot) ergibt immer 1 (oder halt 0), egal wie viele ZBs sich auf dem Blatt befinden. Aber im Prinzip ist es ja auch egal: Wenn ich in A1 und B1 ZBs habe, wird mir der erste in der Statusleiste angezeigt. Löse ich ihn auf, wird der zweite angezeigt.
Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
ich weiss nicht, was der RefTreeAnalyser drauf hat?? Aber selbst wir können "Clever" sein! Mit dieser Variante bekommt man wirklich alle Zirkelbezüge in allen Tabellen angezeigt. Einmal als Msgbox, mit Tabelle und Zelle, und diese Zelle ist durch ein "'" Zeichen als roter Text markiert!
mfg Gast 123
Code:
Sub Zirkelbezüge_finden() Dim j As Integer, Txt As String On Error Resume Next For j = 1 To Worksheets.Count With Worksheets(j) neu: Adr = .CircularReference.Address(, 0) If Adr <> "" Then If Txt <> "" Then Txt = Txt & vbLf Txt = Txt & .Name & " / " & Adr .Range(Adr).Value = " ' " & .Range(Adr).FormulaLocal .Range(Adr).Font.ColorIndex = 3 End If End With Next j If Txt = "" Then Txt = "Es liegen keine Zirkelbezüge vor" MsgBox Txt 'Alle Zirkelbezüge anzeigen End Sub
(22.12.2023, 23:21)Gast 123 schrieb: Mit dieser Variante bekommt man wirklich alle Zirkelbezüge in allen Tabellen angezeigt.
Moin! No sir! [wie sich mein Excel 2003 vor 20 Jahren verhalten hat, weiß ich nicht mehr] Es wird der erste ZB pro Tabellenblatt angezeigt. (Dass ein einzelnes Blatt durchaus mal 20 ZBs haben kann, dürfte nicht mittels VBA abgearbeitet werden können)
Und da genau dies das hiesige Thema betrifft, bist Du leicht off topic.
Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
23.12.2023, 16:57 (Dieser Beitrag wurde zuletzt bearbeitet: 23.12.2023, 17:04 von Gast 123.)
Hallo an alle Kollegen
testet bitte noch einmal diese neue Version. Ich will NICHT rechthaberisch sein, es interessiert mich rein technisch ob man Excel legitim austricksen kann. Darin bin ich halt ein sog. "Tüfftelbruder". Ich habe den Code mehrfach getestet. Schliesse aber nicht aus, das er bei den neuen Versionen vielleicht nicht mehr funktioniert.
Ich bin gespannt auf eure Rückmeldung, und wünsche euch ein frohes Weihnachtsfest aus der Ferne.
mfg Gast 123
Code:
Sub Zirkelbezüge_finden() Dim j As Integer, Txt As String On Error Resume Next For j = 1 To Worksheets.Count With Worksheets(j) Do ' Application.Calculate Adr = .CircularReference.Address(, 0) If InStr(Txt, .Name & " / " & Adr) Then Exit Do .Select 'Sheet anzeigen Range(Adr).Select: MsgBox Adr If Txt <> "" Then Txt = Txt & vbLf Txt = Txt & .Name & " / " & Adr .Range(Adr).Value = " ' " & .Range(Adr).FormulaLocal .Range(Adr).Font.ColorIndex = 3 Loop End With Next j If Txt = "" Then Txt = "Es liegen keine Zirkelbezüge vor" MsgBox Txt 'Alle Zirkelbezüge anzeigen End Sub
Nachtrag Anbei meine Testdatei, mit wüsten Daten aus diversen Tests.
erst mal frohe Weihnachten und erholsame Feiertage, wünsche ich euch von ganzem Herzen!
Vielen Dank das ihr den Code getestet habt, und er auch in der neuen Excel Version funktioniert. Ich denke in dieser Form ist er zum schnellen aufspüren von vielen Zirkelbzügen brauchbar. Danke noch mal für eure Bereitschaft ihn zu testen.
24.12.2023, 19:06 (Dieser Beitrag wurde zuletzt bearbeitet: 28.12.2023, 14:54 von Glausius.)
Hallo Gast 123,
auch Dir und allen Lesern ein Frohes Weihnachtsfest 2023 und eine gesunde Zeit zwischen den Jahren!
So brauchbar Dein Code für die Zirkelbezüge auch sein mag, muss ich doch etwas "bemängeln"! Denn wenn Du Deinen Code (wie ich es grundsätzlich mache!) mit "Option Explicit" eingeleitet hättest, wäre er auf einen Fehler hinausgelaufen! Warum? Die Varibale "Adr" hast du nicht definiert! Diese sollte eigentlich im Dim-Befehl mit "Adr As String" nicht vergessen werden!
Trotzallem einen Guten Rutsch ins Jahr 2024 und weiterhin so aktiv hier im Forum!
Gruß Günter aus der Helden-, Messe-, Musik-, Buch-, Universitäts- und Autostadt Leipzig