Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1352to1356
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
Hinweis/Warnmeldung wenn Schriftfarbe rot
14.03.2014 12:11:04
Ingo
Moin zusammen,
in meinem Dienstplan kennzeichne ich mir die Einträge "Urlaub" bzw. "Stunden" o.ä. (also Zellen mit Textinhalt) der Kollegen rot (Schriftfarbe), wenn ich hierfür noch keine Abwesenheitsmeldung erhalten habe. Dies ist leider nicht auffällig genug.
Ich würde gerne eine Art Kontrollinstanz einbauen, die erkennt, wenn Zellen noch in roter Schriftfarbe sind, dass dann eine Art Hinweisfenster erscheint. Am besten wäre so ein Warnfenster, wie es bei der Datenüberprüfung erscheint. Aber kann man dieses auch auf Schriftfarbe beziehen?
Schonmal vielen Dank im Voraus.

15
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Hinweis/Warnmeldung wenn Schriftfarbe rot
14.03.2014 12:31:44
Klaus
Hallo Ingo,
füge folgenden Code in ein Modul in deine Tabelle ein:
Function NochRot(myRng As Range) As String
Application.Volatile
Dim r As Range
NochRot = ""
For Each r In myRng
If r.Font.Color = 255 Then
NochRot = NochRot & WorksheetFunction.Substitute(r.Address, "$", "") & "; "
End If
Next r
If NochRot = "" Then
NochRot = "keine roten Zellen gefunden"
Else
NochRot = NochRot & "noch in rot"
End If
End Function
Wenn du in A1 eine Warnung haben möchtest, dass in B2:B17 noch rote Zellen sind, dann schreibst du in A1 die Formel =nochrot(B2:B17)
Achtung1: Das funktioniert nur bei per Hand rot gefärbten Zellen, und auch nur exakt beim Standard-Rot. Hellrot, Dunkelrot usw. gilt nicht!
Achtung2: Das funktioniert NICHT, wenn die rote Farbe aus einer bedingten Formatierung kommt!
Achtung3: Das ändern der Farbe löst in Excel noch keine Neuberechnung aus. Du müsst F9 drücken oder sonstwie eine Berechnung erzwingen, damit die Farbänderung angenommen wird.
Grüße,
Klaus M.vdT.

Anzeige
AW: Hinweis/Warnmeldung wenn Schriftfarbe rot
14.03.2014 12:46:49
Ingo
Moin,
super, danke, das klappt schon mal gut.
Kann ich nun das Ergebnis dieser Zelle (in diesem Beispiel A1) in die Datenüberprüfung mit integrieren um ein Warnfenster erscheinen zu lassen?

AW: Hinweis/Warnmeldung wenn Schriftfarbe rot
14.03.2014 12:58:58
Klaus
Hallo Ingo,
du musst gar nicht den Umweg über A1 gehen, ich dachte nur es ist schöner wenn du das direkt in deine Tabelle einbauen kannst. Hier mal ein Beispiel für eine Warnfenster-Methode.
Diesmal direkt in den Code von Tabelle1 (oder welcher Tabelle auch immer):
Private Sub Worksheet_Change(ByVal Target As Range)
Call NochRot(Range("B2:B5"))
End Sub
Sub NochRot(myRng As Range)
Dim r As Range
Dim sText As String
sText = ""
For Each r In myRng
If r.Font.Color = 255 Then
sText = sText & WorksheetFunction.Substitute(r.Address, "$", "") & "; "
End If
Next r
If sText = "" Then
'nix
Else
sText = sText & "noch in rot"
MsgBox (sText)
End If
End Sub
Jetzt geht JEDES MAL ein Warnfenster auf, wenn du einen beliebigen Eintrag änderst und in B2:B5 noch eine rote Zelle ist. Ultra nervend, und deine User werden dich aufs Blut hassen.
Natürlich kann man die Prüfung auch wann anders als beim Zellen-ändern stattfinden lassen. Zum Beispiel Before_Print oder Before_Save, oder alle 15 Minuten oder alle 5 Sekunden. Musst sagen was dir passt.
Grüße,
Klaus M.vdT.

Anzeige
AW: Hinweis/Warnmeldung wenn Schriftfarbe rot
17.03.2014 12:08:13
Ingo
Moin,
das geht schon mal absolut in die richtige Richtung.
Die Meldung sollte jedoch nur beim Speichern ausgelöst werden, nicht beim Ändern jeder Zelle (da ich die Pläne selber schreibe macht einen das in der Tat wahnsinnig).
Mit meine marginalen VBA-Kenntnissen krieg ich es leider selbst nicht hin.
Kann mir die Formel NochRot zudem evtl. mit einer Verweisfunktion den Name desjenigen der noch rote Einträge hat anzeigen? Die Namen befinden sich alle in Spalte A?

AW: Hinweis/Warnmeldung wenn Schriftfarbe rot
17.03.2014 14:42:00
Klaus
Hallo Ingo,
erstmal die Lösung "before save" (direkt in "DieseArbeitsmappe"). Tabellennamen und Range natürlich anpassen.
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim myRng As Range
Dim r As Range
Dim sText As String
Set myRng = Sheets("Tabelle1").Range("B2:C5")
sText = ""
For Each r In myRng
If r.Font.Color = 255 Then
sText = sText & WorksheetFunction.Substitute(r.Address, "$", "") & "; "
End If
Next r
If sText = "" Then
'nix
Else
sText = sText & "noch in rot! Trotzdem speichern?"
If MsgBox(sText, vbYesNo) = 6 Then
'speichern
Else
'nicht speichern
Cancel = True
End If
End If
End Sub
Zu der Sache mit den Links: ich bastel mal was, wird aber eine Userform. Hab grad ne Idee :-)
Upload später
Grüße,
Klaus

Anzeige
Mit Userform, Link zur Zelle usw ...
17.03.2014 15:13:47
Klaus
Hallo Ingo,
schau dir mal diese, etwas komplexere, Lösung an:

Die Datei https://www.herber.de/bbs/user/89696.xlsm wurde aus Datenschutzgründen gelöscht


Hinweis: um das unter einem anderem Namen zu speichern, musst du erst in den "Entwurfsmodus" gehen oder einmal ohne Makros starten.
Grüße,
Klaus M.vdT.

AW: Mit Userform, Link zur Zelle usw ...
18.03.2014 08:47:18
Ingo
Wow, das sieht sehr sehr gut aus. Schon mal vielen vielen Dank für die Mühe.
Hm, das Fenster kommt aber auch, wenn alle Zellen schwarz sind. Und dann erscheinen beide Dialoge, dieser und der von Excel, der sich in den Vordergrund legt. Den muss man dann erst abbrechen um den anderen zu bedienen. Kann man das dann evtl. auch abhängig machen vom Schließen der Arbeitsmappe?
Da ich pro KW ein Tabellenblatt habe, muss ich den Code dann auch für jedes Tabellenblatt einfügen?

Anzeige
AW: Mit Userform, Link zur Zelle usw ...
18.03.2014 09:17:56
Ingo
Das mit dem Schließen habe ich selbst noch hingekriegt.
Nur es wäre schön, wenn dies grundsätzlich auf alle Tabellenblätter angewandt wird.

AW: Mit Userform, Link zur Zelle usw ...
18.03.2014 09:26:39
Klaus
Hallo Ingo,
es ist etwas anstrengend, mir dir zu arbeiten, da alles nur Scheibchenweise kommt :-) erst ändert sich mittendrin die Anforderung von "Infofenster" auf "Infofenster mit Hyperlink!", jetzt plötzlich sind es viele Tabellenblätter und nicht mehr nur eins ...
Lade bitte eine Mustertabelle hoch, ich habe keine Lust mehr zu raten was/wo/wie. Den Code selber anpassen kannst du (nach eigener Aussage) ja nicht.
Hm, das Fenster kommt aber auch, wenn alle Zellen schwarz sind.
Das Fenster ersetzt den speichern-Dialog. Bei mir kommt nur die Userform, kein Excelfenster dass sich in den Vordergrund legt. Screenshot, damit ich sehe wovon du redest bitte.
Grüße,
Klaus M.vdT.

Anzeige
AW: Mit Userform, Link zur Zelle usw ...
18.03.2014 09:54:33
Ingo
Hallo Klaus,
sorry, dass ich für soviel Unruhe sorge. Da ich nur marginale Excel- und VBA-Kenntnisse besitze, bin ich fasziniert von den Möglichkeiten, die du in minimaler Zeit zusammenschusterst. Da ich dann erst sehe, was möglich ist, fallen mir während des Prozesses tausend neue Ideen ein. Nochmal sorry, ich werde mich beherrschen.
Hier nun die Datei, um die es geht. Zukünftige Tabellenblätter werden erst erstellt, wenn ich sie benötige, um bei Änderungen nicht immer alle 52 Tabbellenblätter auf einmal zu ändern.
https://www.herber.de/bbs/user/89712.xlsx

Anzeige
AW: Mit Userform, Link zur Zelle usw ...
18.03.2014 10:23:23
Klaus
Hallo Ingo,
warum lädst du denn eine xlsx hoch, wenn du eine Makrolösung möchtest?

Die Datei https://www.herber.de/bbs/user/89713.xlsm wurde aus Datenschutzgründen gelöscht


Hier mal mein Makro, angepasst an deine Musterdatei. Die Userform lädt nur noch, wenn überhaupt rote Zellen vorkommen. Der Prüf-Bereich muss dafür an ZWEI Stellen angepasst werden: In "DieseArbeitsmappe" und direkt im Code der Userform.
Es wird nach roten Zellen in jedem Tabellenblatt geprüft, egal wie viele du anlegst. Click auf die gefundene Zelle in der Liste springt zum dazugehörigen Tabellenblatt in die entsprechende Zelle. Legst du ein Tabellenblatt "Inhalt" oder so an, wird auch das auf rote Zellen überprüft. Das könnte man ausschließen, aber danach hast du nicht gefragt und darum habe ich es nicht eingebaut. Workaround: in einem hypothetischem Tabellenblatt "Inhalt" auf Rot-255 gefärbte Zellen verzichten ...
Es funktioniert TROTZ deiner verbundenen Zellen. Wenn du eine der 3-fach Zellen (Uhrzeiten mit Bindestich) rot färbst, taucht jede Zelle einzeln in der Liste auf. Die Verbundblöcke "Urlaub" je nur einmal. Für die unnötige Verwendung von Verbundzellen bitte einmal in die Ecke stellen und schämen!
Fehlerbehandlung fehlt komplett. Wenn der Code irgendwas nicht schlucken mag, wird er gnadenlos in die Debug-Umgebung springen. In dem Fall kannst du hier ein neues Topic aufmachen ;-) Sensibilisiere blos deine User entsprechend.
Problematisch kann es werden, wenn du spätere KW-Blätter mit anderen Prüfbereichen (mehr Zeilen ...) erstellst. Andererseits, solange in den Bereichen kein Rot vorkommt sind sie ja egal.
Nochmal sorry, ich werde mich beherrschen.
Alles gut. Wenn dir was neues einfällt, frag halt neu. Es ist bloß nervig, wenn sich die Aufgabenstellungen ändern - das demotiviert die Helfer, weil dann viel Arbeit für die Tonne war. Merke: Musterdateien gleich im Ursprungspost bewirken Wunder!
Grüße,
Klaus M.vdT.

Anzeige
AW: Mit Userform, Link zur Zelle usw ...
18.03.2014 11:23:41
Ingo
Hallo Klaus,
super, danke dir.
Click auf die gefundene Zelle in der Liste springt zum dazugehörigen Tabellenblatt in die entsprechende Zelle.
Er listet die Einträge zwar korrekt auf, verweist aber immer auf das aktive Tabellenblatt und springt nicht in das dazugehörige Tabellenblatt.
Für die unnötige Verwendung von Verbundzellen bitte einmal in die Ecke stellen und schämen!
Mach ich! Dies dient auch eher der Optik ;) Was wäre denn eine schönere Alternative?
LG Ingo

Bugfixes
18.03.2014 11:43:00
Klaus
https://www.herber.de/bbs/user/89719.xlsm
Er listet die Einträge zwar korrekt auf, verweist aber immer auf das aktive Tabellenblatt und springt nicht in das dazugehörige Tabellenblatt.
seltsam. Ich hatte ein Worksheet.Activate zum testen drin, damit lief es wunderbar. Habs vor dem Upload rausgeworfen, um das Bildschirmflackern zu verhindern. Seitdem läuft es nur noch in einem Blatt.
Referenzierung habe ich geprüft ... vielleicht geht r.color auch nur auf dem aktivem Blatt? Keine Ahnung. Ich hab jetzt das Activate wieder rein genommen. Schlechter Stil, aber es funktioniert jetzt.
Was wäre denn eine schönere Alternative?
Na ... halt das gleiche, nur ohne verbundene Zellen :-)
Zum horizontal verbinden kannst du stattdessen den Bereich markieren und unter rechtsclick-Format die Ausrichtung "über Auswahl zentrieren" wählen. Das sieht genauso aus wie ein Zellverbund, ist aber Zellenweise ansprech- und auswählbar. Du machst dir mit Verbundzellen im VBA und Formelbereich einfach viele Sachen unnötig kompliziert für minimalen Vorteil, meist eh nur Design!
Horizontal geht der Trick leider nicht. Da sage ich gebetsmühlenartig: Eine Tabelle die horizontal verbundene Zellen benötigt, ist Mist und muss anders aufgebaut werden.
Grüße,
Klaus M.vdT.

Anzeige
AW: Bugfixes
18.03.2014 13:49:44
Ingo
Hallo Klaus,
jetzt klappt´s so wie es soll. Wunderschön.
Nochmal vielen Dank für die Mühe und sorry für das Hickhack.
LG Ingo

Danke für die Rückmeldung! owT.
18.03.2014 14:01:33
Klaus
.

309 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige