Anzeige
Archiv - Navigation
1252to1256
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
Inhaltsverzeichnis

Makro nach Zelländerung ausführen

Makro nach Zelländerung ausführen
Florian
Hallo,
ich habe folgendes Problem und hoffe, dass mir jemand von euch helfen kann:
Ich habe einen Zellbereich mit 5 Spalten (E8:I33), in dem pro Zeile nur ein Wert in einer der 5 Spalten eingegeben werden darf. Die anderen 4 Zeilen sollen leer bleiben, ansonsten sollen die anderen Zellen fablich rot angezeigt werden.
Praktisches Beispiel:
Die 5 Spalten sind mit jeweils einer Arbeitsschicht beschriftet. Wenn ich z. B. in der 2. Spalte im definierten Bereich ein "X" eintrage, dann soll geprüft werden, ob sich in den anderen 4 übrigen Spalten (hier die 1., 3., 4. und 5. Spalte) ein Wert befindet, falls ja, soll die Zelle, in dem sich der Wert befindet rot hinerlegt angezeigt werden. Die aktuell eingegebenen Zelle soll aber nicht rot hinterlegt angezeigt werden.
Falls der Fall eingetreten ist, dass eine Zelle per Makro rot markiert wurde, werde ich zur roten Zelle gehen und diesen Wert löschen, damit die Zelle die rote Markierung wieder verliert.
Geht so was überhaupt?
Über eine Bedingte Formatierung geht sowas meiner Meinung nach leider nicht, oder doch?
Bitte um euer Hilfe.
Schöne Grüße
Florian

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Makro nach Zelländerung ausführen
14.03.2012 11:31:20
Matthias
Hallo Florian
Zum Einen kannst Du doch schon im Vorfeld Mehrfacheinträge verhindern, in dem Du eine Gültigkeit festlegst.
Bereich markieren ...
& benutzerdef.Formel eintragen =ANZAHL2($E8:$I8)=1

Bedingte Formatierung evtl. so:
Bereich markieren und bed. Format eintragen als Formel:
=UND(E8"x";E8"";ANZAHL2($E8:$I8)>1)
Hier das Bsp:
https://www.herber.de/bbs/user/79366.xls
Gruß Matthias
AW: Makro nach Zelländerung ausführen
14.03.2012 12:56:54
Florian
Hallo Matthias,
die Idee mit der Gültigkeit ist super, aber für mich nicht praktikabel (siehe folgenden praktsichen Ablauf).
Ich habe z. B. in der 2. Spalte bereits ein "x" eingetragen und gebe nun in der 3. Spate ein weiteres "x" ein. In deiner Tabelle funktioniert das nur mit "x" in Kombination mit Zahlen.
Ich möchte aber im ersten Schritt sehen, was die "vorherige" Schicht war, bis ich den alten Wert manuell herauslösche. Der aktuell eingebene Wert soll vorerst im Vergleich zum alten Wert ersichtlich sein.
Kann mann die Bedingte Formatierung so umbauen, dass das funktioniert oder braucht man dazu einen VBA-Code?
Vielen Dank für die bisherige Hilfe.
Gruß
Florian
Anzeige
AW: Makro nach Zelländerung ausführen
15.03.2012 09:59:10
Matthias
Hallo
So richtig habe ich Dich anscheinend nicht verstanden.
Lad doch bitte mal ein aussagekräftiges Beispiel hoch.
Gruß Matthias
AW: Makro nach Zelländerung ausführen
16.03.2012 09:01:18
Florian
Hallo Matthias,
hier ist meine Excel-Datei: https://www.herber.de/bbs/user/79395.xlsx
Ich möchte die aktuelle Schicht per "X" in den Spalten (E:I) angeben.
Ich übernehme die Daten von der Vorwoche. Dann trage ich die andere Schicht ein, dabei soll die alte Schicht (aus der Vorwoche mit "X" markiert) rot hinterlegt werden.
Ich möchte bei der Planung sehen, was ist alte und was ist neue Eingabe.
Ich muss ja einen bestimmten Rhytymus beim Wechsel der Schichten einhalten. Ich habe gerade bei der Planung die neue Schicht eingetragen und dann kommt z. B. ein Anruf dazwischen und ich weiß dann nicht mehr, was war jetzt der ursprüngliche und was die neue Schicht. Darum wäre es so praktisch, wenn die anderen Werte, außer dem zuletzt eingegebenen Wert, z. B. rot hinterlegt werden.
Ich hoffe, du hast mich jetzt verstanden.
Gruß
Florian
Anzeige
Zelle Hintergrundfarbe ...
17.03.2012 12:13:44
Matthias
Hallo
Zitat
... dann kommt z. B. ein Anruf dazwischen und ich weiß dann nicht mehr ...
Das ist dann ein Fall für den Arzt ;o)
Zum Thema:
Du hast ja Dein ganzes Projekt hochgeladen, das war so nicht gemeint.
Hier ein minimiertes Beispiel:
https://www.herber.de/bbs/user/79416.xls
Das sehe dann so aus:
 DEFGHI
6MA1 x   
7MA2  x  
8MA3x    
9MA4   x 
10MA5    x
11MA6x    
12MA7 x   
13MA8  x  
14MA9 x x 
15MA10    x


Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4
E6:I15 ist als BereichsName definiert!
Der Code:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim X&
If Not Intersect(Target, Range("Bereich")) Is Nothing And Target.Count = 1 Then
If Target.Value  "" Then
Target.Interior.ColorIndex = xlNone
For X = 5 To 9
If Target.Column  X Then
If Cells(Target.Row, X).Value  "" Then
Cells(Target.Row, X).Interior.ColorIndex = 6
Else
Cells(Target.Row, X).Interior.ColorIndex = xlNone
End If
End If
Next X
End If
End If
End Sub
Im Moment ist es so, das wenn Du ein "x" setzt obwohl schon eins vorhanden ist die bereits belegte Zelle gefärbt wird.
Wenn Du abgelenkt warst, so weißt Du nun was die "letzte Schicht" war.
Entfernst Du das neu gesetzte "x" wieder bleibt die alte Schicht trotzdem noch markiert!
Ich würde aber mit Daten Gültigkeit die max. Einträge des Zeilenbereichs auf 2 setzen!
Warum?
Wenn Du 2 mal ein "x" setzt wird die erste Zelle auch gefärbt!
Dann weißt Du wieder nichts (sollte nochmal ein Anruf dazwischen kommen) ;o)
Gruß Matthias
Anzeige
AW: Zelle Hintergrundfarbe ...
20.03.2012 08:01:00
Florian
Hallo Matthias,
deine Lösung ist super!
Ich hätte da nur einen Änderungswunsch: Wenn ich z. B. versehentlich ein zweites "x" eingegeben habe, dann wird ja der bereits vorher andere gespeicherte Wert farblich hinterlegt. Wenn ich dann das zuletzt falsch eingegebene "x" wiede herausnehme, dann bleibt das richtige "x" immer noch fablich markiert.
Kann man dies so lösen, dass wenn nur ein Wert pro Zeile eingegeben ist, die Zelle dann immer neutral bleibt?
Vielen Dank nochmal für die bisherige Hilfe.
Gruß
Florian
wenn nur ein Wert pro Zeilenbereich, keine Färbung
20.03.2012 08:33:28
Matthias
Hallo Florian
https://www.herber.de/bbs/user/79448.xls


Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim X&
If Not Intersect(Target, Range("Bereich")) Is Nothing And Target.Count = 1 Then
If WorksheetFunction.CountA(Range(Cells(Target.Row, 5), Cells(Target.Row, 9))) = 1 Then
Range(Cells(Target.Row, 5), Cells(Target.Row, 9)).Interior.ColorIndex = xlNone
Exit Sub
End If
If Target.Value  "" Then
Target.Interior.ColorIndex = xlNone
For X = 5 To 9
If Target.Column  X Then
If Cells(Target.Row, X).Value  "" Then
Cells(Target.Row, X).Interior.ColorIndex = 6
Else
Cells(Target.Row, X).Interior.ColorIndex = xlNone
End If
End If
Next X
End If
End If
End Sub
Gruß Matthias
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige