Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1280to1284
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

Formatierung, Farbwechsel nach Dateneingabe

Formatierung, Farbwechsel nach Dateneingabe
03.10.2012 19:30:42
tekiela
Hallo liebe Excel(ianer)
mich quält seit Tagen 1 Problem, dessen Lösung ich auch über stundenlange Suche
im Bereich VBA und eigener Bastellarbeit nicht zusammenbekommen habe.
Sicher ist es einfach und ich habe ein Brett vor dem/im Kopf.
Das Problem:
In A1 steht DATUM, B1 steht GRUND und in C1 steht NUMMER als Überschrift mit keiner Füllfarbe =weiß.
Sobald mindestens in A2 (gerade) ein Eintrag erfolgt und mit Enter abgeschlossen wird, sollen die Zellen A2,B2 und C2 grau hinterlegt sein und schwarz eingerahmt sein.
Sobald mindestens in A3 (also ungerade)eine Eintragung mit Enter erfolgt, sollen die Zellen A3,B3 und C3 nicht mit einer Farbe gefüllt werden, aber ebenfalls schwarz eingerahmt werden.
Dieser Wechsel soll dann 500 Mal (ich denke A2:C201)erfolgen, könnte aber auch nach unten größer werden.
ICH SUCHE DRINGEND NACH EINER VBA-VARIANTE, DA ICH DIE BEDINGTE FORMATIERUNG FÜR ANDERE FEINHEITEN BENÖTIGE!
Was ich meine, habe ich mal nur grafisch dargestellt angehängt
Vielen Dank für einen Rat oder Hilfe
MFG
teKIELa

19
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Formatierung, Farbwechsel nach Dateneingabe
03.10.2012 19:33:18
Hajo_Zi
benutze die bedingte Formatierung, Formel ist und Rest(Zeile();2)

AW: Formatierung, Farbwechsel nach Dateneingabe
03.10.2012 20:08:56
tekiela
Lieber Hajo,
danke für die Antwort (man bist du ein Urgestein hier!),
aber ich muss die bedingte Formatierung für spätere Variationen zurückhalten!
Darum würde ich das gern über VBA gelöst wissen, auch wenn die bedingte Formatierung der einfachere Weg ist.
Ich will ja keine Auftragsprogrammierung, doch nach meiner stundenlangen, nur teil erfolgreichen und doch nicht zum Ziel führenden Suche habe ich festgestellt, dass sehr viele User an einer VBA-Variante sehr interessiert wären.
MFG teKIELa

Anzeige
AW: Formatierung, Farbwechsel nach Dateneingabe
03.10.2012 20:11:42
Hajo_Zi
Du hast Bestimmt schon eine Tabelle nach Deinen Vorrstellungen erstellt, die man als Grundlage benutzen könnte.
Ich nicht, da keine Zeit mehr.
Gruß Hajo

AW: Formatierung, Farbwechsel nach Dateneingabe
03.10.2012 20:25:01
tekiela
JA, hatte ich eigentlich bei der 1. Anfrage hochgepumpt; egal!
Hier ist noch einmal der link:
https://www.herber.de/bbs/user/81976.xls
Wie gesagt, das ist nur die händische Formatierung wie es aussehen sollte.
Mein VBA-gewurschtel habe ich dabei lieber weggelassen.
LG Leif

Anzeige
AW: Formatierung, Farbwechsel nach Dateneingabe
03.10.2012 20:40:10
Matze,Matthias
Hallo tekiela,
check dies mal, ich bin hiernach weg, eventuell noch ein wenig daran basteln.
2 Makros eins färbt , das andere hebt auf.
Sub ZeilenFärben() Application.ScreenUpdating = False Dim Zeile, ZeilenNr As Integer For Each Zeile In ActiveSheet.UsedRange.Rows 'Zeilen zählen ZeilenNr = ZeilenNr + 1 If ZeilenNr Mod 2 = 0 Then Zeile.Interior.ColorIndex = 15 Zeile.Borders.Weight = xlThin Zeile.Borders.ColorIndex = 1 Else Zeile.Interior.ColorIndex = xlNone Zeile.Borders.ColorIndex = xlNone End If Next Application.ScreenUpdating = True End Sub
Sub ZeilenEntFärben()
Application.ScreenUpdating = False
Dim Zeile, ZeilenNr As Integer
For Each Zeile In ActiveSheet.UsedRange.Rows
ZeilenNr = ZeilenNr + 1
Zeile.Interior.ColorIndex = xlNone
Zeile.Borders.ColorIndex = xlNone
Next
Application.ScreenUpdating = True
End Sub
Matze

Anzeige
AW: Formatierung, Farbwechsel nach Dateneingabe
03.10.2012 21:12:42
tekiela
Hi Matze,
hatte ich auch schon gefunden, aber paßt leider nicht 100%!
Makro soll ja nach Druck auf die Enter-Taste zeilenweise die Formatierungen
in A2:C2 nach unten fortlaufend im grau/weiß-Wechsel(+Rahmen)vornehmen, wenn
ab A2, A3, ff. etwas eingetragen wird.
Danke dir trotzdem!
LG teKIELa

Farbwechsel nach Dateneingabe in Spalte(A)
03.10.2012 20:58:00
Matthias
Hallo
Bei Eingabe in Spalte(A)
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Columns(1)) Is Nothing And Target.Row > 1 And Target.Count = 1 Then
Target.Interior.ColorIndex = IIf(Target.Row Mod 2 = 0 And Target  "", 6, xlNone)
Target.Offset(, 1).Interior.ColorIndex = Target.Interior.ColorIndex
Target.Offset(, 2).Interior.ColorIndex = Target.Interior.ColorIndex
End If
End Sub
Tabelle1

 ABC
1DatumGrundNummer
203.10.2012  
303.10.2012  
403.10.2012  


Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4
Gruß Matthias

Anzeige
AW: Farbwechsel nach Dateneingabe in Spalte(A)
03.10.2012 21:15:54
tekiela
Hi Matthias,
das sieht schon verdammt gut aus!
Muss aber jetzt zur Schicht und werde es morgen testen.
Vielen Dank erst einmal!
teKiela

hier noch mit Rahmen ...
03.10.2012 23:12:16
Matthias
Hallo
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Columns(1)) Is Nothing And Target.Row > 1 And Target.Count = 1 Then
Target.Interior.ColorIndex = IIf(Target.Row Mod 2 = 0 And Target  "", 6, xlNone)
Target.Offset(, 1).Interior.ColorIndex = Target.Interior.ColorIndex
Target.Offset(, 2).Interior.ColorIndex = Target.Interior.ColorIndex
If Target  "" Then
With Range(Target.Address, Target.Offset(, 2).Address)
With .Borders(xlEdgeTop)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With .Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With .Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With .Borders(xlEdgeRight)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
End With
Else
With Range(Target.Address, Target.Offset(, 2).Address)
.Borders(xlEdgeLeft).LineStyle = xlNone
.Borders(xlEdgeTop).LineStyle = xlNone
.Borders(xlEdgeBottom).LineStyle = xlNone
.Borders(xlEdgeRight).LineStyle = xlNone
End With
End If
End If
End Sub
Gruß Matthias

Anzeige
AW: hier noch mit Rahmen ...
04.10.2012 10:45:51
tekiela
Moin Matthias,
vielen Dank für deine Mühe.
Die 1. Version funzt suuper und ich werde damit arbeiten!
Die 2. Variante mit den Rahmen stolpert bei ".TintAndShade = 0" und öffnet den Debugger.
Du musst aber für mich nicht weiter basteln; ich ziehe die Rahmen händisch per Maus ein.
Vielen Dank nochmals für die große Hilfe!
teKIELa

Erst der Debugger, nicht schon die ...
04.10.2012 22:25:20
Luc:-?
…Syntaxprüfung, Tequila?
Diese Zeilen (.TintAndShade = 0) kannst du auch einfach weglassen! Außerdem könnte man für die With .Borders-Zeilen einen Zyklus über 7 bis 10 oder besser 1 bis 4 einrichten, wenn das überhaupt erforderlich wäre → nur With .Borders würde schon reichen und das auch nur 1x! Das Gleiche gilt für den Teil nach Else, wobei die Konstanten xlNone und xlLineStyleNone den gleichen Wert haben (-4142).
Gruß Luc :-?

Anzeige
habs dann mal umgesetzt
04.10.2012 23:04:05
Matthias
Hey Luc
Ich dachte immer ich muss alle Seiten der Zelle ansprechen, Danke für Deinen Hinweis
Nun mach ichs so:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Columns(1)) Is Nothing And Target.Row > 1 And Target.Count = 1 Then
Target.Interior.ColorIndex = IIf(Target.Row Mod 2 = 0 And Target  "", 6, xlNone)
Target.Offset(, 1).Interior.ColorIndex = Target.Interior.ColorIndex
Target.Offset(, 2).Interior.ColorIndex = Target.Interior.ColorIndex
If Target  "" Then
With Range(Target.Address, Target.Offset(, 2).Address).Borders
.Weight = xlThin
End With
Else
With Range(Target.Address, Target.Offset(, 2).Address).Borders
.LineStyle = xlNone
End With
End If
End If
End Sub
oder gehts noch besser?
achso und das ich
Target.Offset(, 1).Interior.ColorIndex = Target.Interior.ColorIndex und
Target.Offset(, 2).Interior.ColorIndex = Target.Interior.ColorIndex
auch zusammenfassen könnte, ist mir bewusst
;-)
Gruß Matthias

Anzeige
Schön, dass du drauf reagiert hast, ...
05.10.2012 00:28:03
Luc:-?
…obwohl frau ja bereits verzichtet hatte, Matti! ;-)
Ja, das mit den Borders ist ganz schön vertrackt und die Wenigsten wissen da wirklich Bescheid. Allerdings ist das hier eher trivialerer Natur, denn das steht auch in der Hilfe. Man kann alle Borders einzeln ansprechen oder einfach alle zusammen. Letzteres geht natürlich nur, wenn sie alle gleich aussehen sollen.
Teste mal mit verschiedenen Farben u/o Liniierungen. Das geht nur einzeln! Und teste mal die beiden Zyklusvorschläge von mir! Du könntest dich ggf wundern. Das Borders-Aufzählungsobjekt hat nämlich genau 6 Members, also Indizes 1-6 in der Rhfolge LRTBDU, während alle Werte >6 (7-12 ⇒ LTBRVH) Kombinationen sind, die mitunter die linke bzw obere Nachbarzelle mit beeinflussen. Es kann also sein, dass 4 keinen Wert hat, obwohl sowohl 9 als auch 3 und 8 der Zelle darunter einen Wert haben. Das folgt genau der Art, wie die Zellrahmen gesetzt wurden, worauf übrigens Xl auch bei Tabellen­aufteilung auf mehrere Druckseiten reagiert. Deshalb fehlt da mitunter ein vermeintl doch gesetzter Rahmen. Ach so, 5 und 6 sind außerdem verkoppelt (nicht mit 11/12 identisch!), d.h., wdn beide verwendet, haben sie stets die gleichen Eigenschaften.
Außerdem existiert noch eine gewisse Verkopplung von Weight und LineStyle, die ähnlich auch in HTML existiert. Dabei ist Letzterer am wichtigsten, denn Ersterer wird oft automatisch gesetzt. Die Farbe ist dann idR nur wichtig, wenn sie nicht xlAutomatic (-4105) ist, kann aber auch, falls gesetzt, bei Fehlen anderer Angaben einen Rahmen mit sonst Standards bewirken. Solche Mechanismen gibt's auch in HTML, sind da aber etwas anders organisiert, so dass es nicht leicht ist, so etwas in einen HTML-Generator einzubauen – hat ja wohl auch keiner der Autoren der 3 in Foren verwendeten Produkte gemacht (und meiner ist noch nicht ganz fertig).
Für Weight + LineStyle habe ich mal 'ne Enum erfunden, die alle relevanten Kombinationen der beiden enthält. Komme da aber zZ nicht ran (← HD-Crash), muss mich leider mit Hardware befassen.
Übrigens, 1-4 fktionieren auch beim FormatConditions-Objekt in gleicher Rhfolge, 7-10 aber nicht! Die wdn durch die Konstanten ohne Edge ersetzt.
Gruß Luc :-?

Anzeige
da gibts Versionsunterschiede
05.10.2012 10:35:57
Matthias
Hey Luc
Hab mich mal damit beschäftigt, musste aber feststellen das es da Unterschiede gibt zwischen
XL2000 und XL2007
Ich kann den Index (nicht die Konstante) der Items in XL2000 nur bis 10 ansprechen, In XL2007 bis 12
Ist also nicht ganz einfach das alles zu verstehen. Ich werds mal versuchen.
Bin aber nun allgemein zu folgendem Ergebnis gekommen:
Range("Bereich").BorderAround , xlThin
Gruß Matthias

AW: da gibts Versionsunterschiede
05.10.2012 11:37:23
tekiela
Hallo Luc und Matthias!
Hätte nicht gedacht, dass ihr mein kleines Formatproblem noch einmal anfasst und auch noch löst.
Natürlich habe ich wenig von Euren letzten Mails verstanden, aber in einem Forum gebietet es für mich der Anstand, sich für eine Hilfe zu bedanken.
Dies möchte ich hiermit tun.
LG von der Waterkant - te KIEL a

Anzeige
Danke für Deine Rückmeldung :o) kwT
05.10.2012 11:59:41
Matthias

AW: Danke für Deine Rückmeldung :o) kwT
07.10.2012 12:38:23
tekiela
Hallo,
leider muss ich noch einmal nerven.
Ich muss meiner Tabelle noch eine 4. Spalte hinzugeben.
Habe versucht das Makro anzupassen und es mit den Rahmen auch hinbekommen.
Leider wird D4, D6, ff. nicht grau eingefärbt.
Habe die Werte bei .TargetOffset mal variiert, aber das brachte auch keinen Erfolg.
Danke für einen Tipp/Hilfe
https://www.herber.de/bbs/user/82014.xls
MfG te KIEL a

habs mal eingepflegt ...
07.10.2012 18:11:34
Matthias
Hallo
Hast Du Zeile(2) nur ausgeblendet, weil Du ohne Farbe beginnen willst ;-)
Habs mal gedreht, dann kannst Zeile 2 auch mit benutzen
Änderungen sind fett markiert.
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Columns(1)) Is Nothing And Target.Row > 1 And Target.Count = 1 Then
Target.Interior.ColorIndex = IIf(Target.Row Mod 2  0 And Target  "", 15, xlNone) _
Target.Offset(, 1).Interior.ColorIndex = Target.Interior.ColorIndex
Target.Offset(, 2).Interior.ColorIndex = Target.Interior.ColorIndex
Target.Offset(, 3).Interior.ColorIndex = Target.Interior.ColorIndex
If Target  "" Then
With Range(Target.Address, Target.Offset(, 3).Address).Borders
.Weight = xlThin
End With
Else
With Range(Target.Address, Target.Offset(, 3).Address).Borders
.LineStyle = xlNone
End With
End If
End If
End Sub
Hier die Datei:
https://www.herber.de/bbs/user/82015.xls
Gruß Matthias

Danke für die Info, ...
05.10.2012 16:44:48
Luc:-?
…Matti;
ist wohl so, weil 11/12 eigentl überflüssig sind, weil es ja 1-4 gibt. Da bekommt man das durch den Unterschied zu 7-10 auch raus. Außerdem ist das jetzt ja eine XML-Oberfläche und da hat MS wohl seine DOM-Erfahrungen verwendet. ;-)
Gruß LUc :-?

302 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige