2.9k Aufrufe
Gefragt in Tabellenkalkulation von
Hallo erst einmal,

ich bitte um Hilfe. Möchte folgendes erreichen:
Wenn in Spalte A:A "Fehler" geschrieben wird, soll Spalte B:B blinken.
Also wenn A1=Fehler, blinkt B1, wenn A2=Fehler, blinkt B2 usw.usw.
Geht das über Excel, oder über einen VBA-Code?
Wie schreibe ich diesen Code? Kann mir bitte jemand helfen?

M.f.G.
Micha

Ps. Ich benutze Excel 201ß

16 Antworten

0 Punkte
Beantwortet von fedjo Experte (2.2k Punkte)
Hallo Micha
einfach mit der Bedingten Formatierung.


Markiere die Zelle B1
Bedingte Formatierung
"Neue Regel" "Formel zur Ermittlung
=A1="Fehler"
Dann gehst du auf "Formatieren..." und wählst aus, wie du die Zelle B1 formatiert haben möchtest. OK

Markiere die Zelle B1, kopieren
Spalte B makieren
Inhalte einfügen
Formate OK

Gruß
fedjo
0 Punkte
Beantwortet von
Hallo fedjo,
vielen Dank für deine rasche Antwort. Mit der bedingten Formatierung habe ich es auch schon vorher probiert, funktioniert aber nur teilweise, da die entsprechenden Zellen in Spalte B nicht blinken. Und die sollen blinken, wenn in Spalte A das Wort "Fehler" steht. Hab ich da was übersehen?

M.f.G.

Micha

Ps. Habe Probleme mit der Registrierung im Supportnet. Bekomme kein Passwort per e-Mail. Gibt es eine Lösung?
0 Punkte
Beantwortet von m-o Profi (22.8k Punkte)
Hallo Micha,

wie wird das Wort "Fehler" in Spalte A erzeugt? Wird es per Hand eingegeben, oder per Formel erzeugt? Und muss es wirklich blinken sein?

Die Registrierung klappt hier leider seit geraumer Zeit nicht mehr: KLICK MICH!

Gruß

M.O.
0 Punkte
Beantwortet von
Hallo M.O. Vielen Dank für deine Nachricht.

Also, das Wort "Fehler" wird über die WENN(ODER-Formel gebildet.
Den Blinker habe ich bereits in VBA.
Option Explicit
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Sub Blinken()
Dim x As Integer
For x = 1 To 10
Cells(x, 2).Interior.ColorIndex = 3
Sleep 500
Cells(x, 2).Interior.ColorIndex = xlNone
Sleep 500
Next

End Sub
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
If [A1] = "Fehler" Then Blinken (<- hier blinkt nur A1)

End Sub

Nun möchte ich aber, dass die Zellen B1:B100 blinken, wenn in A1:A100 das Wort Fehler geschrieben wird. Also wenn
A10= "Fehler", dann blinkt B10, wenn A90="Fehler", blinkt B90, wenn A57= "Fehler", dann blinkt B57 usw, usw. Ich hoffe das du bitte mein Problem lösen kannst. Gern warte ich Antwort. Viele Dank im Voraus.
Mf.G.
Micha
0 Punkte
Beantwortet von m-o Profi (22.8k Punkte)
Hallo Micha,

das habe ich befürchtete ;-).

Ich würde das Worksheet-Change-Ereignis des betreffenden Arbeitsblatts benutzen, um das Makro blinken aufzurufen. Da das allerdings bei Formeln nicht funktioniert, müsstest du die Bedingungen der Formel per VBA prüfen. Die betreffende Zeile kannst du per Public-Variable an das Makro "Blinken" übergeben.

Ohne deine Formel zu kennen, ist speziellere Hilfe leider nicht möglich.

Gruß

M.O.
0 Punkte
Beantwortet von
Hallo M.O.

kann mich erst jetzt wieder melden, da...
Vielen dank für deine Antwort. Ich vergaß mitzuteilen, dass ich absoluter Laie bin. Deinen Vorschlag hab ich daher leider nicht verstanden. Ist es nicht möglich eine Bedingung (Wenn die Zelle A1 den Wert "Fehler", dann soll B1 blinken usw.) in VBA zu schreiben?
Ich müsste (siehe Antwort 4) dem "Blinker" diese Bedingung mitteilen!? Aber wie mache ich das? Wenn du hierfür keine Lösung hast, ist es auch nicht so schlimm. Möchte ja nicht nerven.
Wäre jedoch schön, wenn du mir diesen Code schreiben könntest. Dadurch kann ich nur lernen.
Für deine Bemühungen bedanke ich mich bereits im Voraus.
MfG
Micha
0 Punkte
Beantwortet von m-o Profi (22.8k Punkte)
Hallo Micha,

sicher ist es möglich, die Formel in VBA zu übersetzen. Wenn du die Formel posten würdest, dann könnte man dir auch hierbei helfen. Und auch die Übergabe an das Blinken-Makro sollte kein Problem sein.

Gruß

M.O.
0 Punkte
Beantwortet von
Hallo M.O.

danke für deine Rückmeldung.

Die Formel lautet: =WENN(ODER(A:A="";A:A="TextA");"";"Fehler")
=WENN(ODER(A:A="";A:A="TextB");"";"Fehler")
usw. usw. Jeder Text kann in jeder Zelle stehen.
Wenn falscher Text (z.B "YXZ"), dann soll die Zelle in Spalte A blinken, in der der falsche Text steht.
Die Formeln stehen in Spalte B:B. Ich hoffe das dir mein Problem klar geworden ist. Es ist nicht leicht den Gedanken eines Andreren nachzuvollziehen. Ich selbst bin SPS-Programmier und arbeite mit Codesys. Allerdings nicht strukturiert, sondern in AWL. Daher meine Schwierigkeiten mit der Umsetzung VBA.

M.f.G.
Micha
0 Punkte
Beantwortet von m-o Profi (22.8k Punkte)
Hallo Micha,

die Überwachung mit keiner Eingabe ist nicht so einfach machbar. Da müsste man wissen, ob die Spalte A z.B. gefüllt sein muss, wenn etwas in Spalte C eingegeben wird.

Ersetzte deinen Code im zu überwachenden Tabellenblatt durch den folgenden Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim falsch As Boolean
'nur wenn Eingabe in Spalte erfolgt wird geprüft
If Not Intersect(Target, Range("A:A")) Is Nothing Then
If IsEmpty(Target.Value) = True Then falsch = True
If Target.Value = "Text A" Then falsch = True
If Target.Value = "Text B" Then falsch = True

If falsch = True Then
lngZeile = Target.Row
Call Blinken
End If

End If

End Sub


Deinen Code für Blinken ändere wie folgt (der gehört ein allgemeines Modul):

Public lngZeile As Long

Option Explicit
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Sub Blinken()
Dim x As Integer
Cells(lngZeile, 1).Select
For x = 1 To 10
Cells(lngZeile, 2).Interior.ColorIndex = 3
Sleep 500
Cells(lngZeile, 2).Interior.ColorIndex = xlNone
Sleep 500
Next

End Sub


Das mit der leeren Zelle funktioniert nur, wenn etwas aus Spalte A gelöscht wird.

Gruß

M.O.
0 Punkte
Beantwortet von
Hallo M.O.

Du bist ne Wucht. :-)) Also Hut ab! Toll was du da gezaubert hast. Habe einige Bedingungen geändert, und schon funktioniert es so wie ich es wollte. Bin beeindruckt.
Allerdings hätte ich da noch ein hoffentlich kleines Problem.
Wenn ich mehrere Zellen in Spalte A makiere, um den Inhalt zu löschen oder zu kopieren, kommt der Laufzeitfehler ' 13 ' Typen unverträglich. Lösche ich jede Zelle einzeln, ist alles OK. Kannst du mir bitte noch mitteilen, woran das liegt? Vielen Dank im Vorraus.

Gruß
Micha
...