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

Zellen & Bereich bedingt formatieren

Zellen & Bereich bedingt formatieren
15.12.2014 14:49:05
Beat
Liebe Helfer,
Vorerst noch Danke an Patrik, der mich bei einer Frage (Archiv 1387985) unterstützt hatte. ich konnte darauf nicht mehr reagieren... sorry.
nun stehe ich bei einem Code für ne bedingte Formatierung an.
Wahrscheinlich eine recht einfache Sache - für euch - ich aber kriege aufgrund der in der Suche gefundenen Resultate nix brauchbares hin.
Ich möchte mittels Code:
a) die Zellen im Bereich H7-S2500 gelb einfärben, wenn der Wert in derselben Zelle höher als 100 ist.
b) je Zeile der Wert in Spalte V prüfen. Ist dieser >=3, dann sollten die Zellen A-Z dieser Zeile auch gelb eingefärbt werden.
Mit Ausnahme der Spalten Y und Z (sind für Kommentare) sind alle Zellen geschützt und mit einer Sicherung (via Code) versehen: Private Sub Worksheet_Change(ByVal Target As Range) Application.EnableEvents = False If Target.Locked = True Then Application.Undo MsgBox ("Keine Dateneingabezelle!") End If Application.EnableEvents = True End Sub
Der Makro-Recorder gibt mir für Fall a)folgendes zurück:
Sub bedFormata()
'
' bedFormata Makro
'
Range("H7:S2500").Select
Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlGreaterEqual _
, Formula1:="=100"
Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
With Selection.FormatConditions(1).Interior
.PatternColorIndex = xlAutomatic
.Color = 65535
.TintAndShade = 0
End With
Selection.FormatConditions(1).StopIfTrue = False
End Sub
und für Fall b):
Sub BedFormat3()
'
' BedFormat3 Makro
'
Range("A10:X10").Select
Selection.FormatConditions.Add Type:=xlExpression, Formula1:="=$V10=3"
Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
With Selection.FormatConditions(1).Interior
.PatternColorIndex = xlAutomatic
.Color = 65535
.TintAndShade = 0
End With
Selection.FormatConditions(1).StopIfTrue = False
End Sub
Nun hab ich mich damit versucht (im Archiv gefunden und umgebaut...):
Private Sub Worksheet_Change(ByVal Target As Range)
Dim RaBereich As
Dim RaZelle As Range
Set RaBereich = Range("L22:M39, O21:O26")
For Each RaZelle In RaBereich
With RaZelle
Case >"3"
.Interior.Color = 65535
End Select
End With
Next RaZelle
End If
Set RaBereich = Nothing                 ' Variable leeren
End Sub
Hätte das geklappt, dann hätte ich noch versucht, a) und den Schutz reinzubringen. Die Sache läuft nicht, auch wenn ich am obigen Code Sachen verändere, die mir der Debugger anzeigt.
ich wäre sehr dankbar wenn mich jemand von euch unterstützen würde. Schon mal herzlichen Dank!!
Viele Grüsse Beat

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

Betreff
Datum
Anwender
Anzeige
AW: Zellen & Bereich bedingt formatieren
16.12.2014 00:31:10
Matthias
Hallo
Zitat:
Hätte das geklappt, dann hätte ich noch versucht ...
Das kann doch nicht klappen!
Der 1.Fehler
Dim RaBereich As 'und weiter?
Der 2.Fehler
With RaZelle
Case >"3"
.Interior.Color = 65535
End Select
End With
Du kannst doch nicht ohne Select Case
eine Case-Auswertung starten.
In die erste Zeile des Makro gehört: Option Explicit
Das zwingt Dich schon Mal die Variablen zu deklarieren.
Das kann man auch unter

  • Extras-Optionen

  • Variablendeklaration erforderlich


im VB-Editor einstellen
Gruß Matthias

Anzeige
AW: Zellen & Bereich bedingt formatieren
16.12.2014 12:05:15
Beat
Lieber Matthias
Vielen Dank für deine Rückmeldung. meine VBA-Kenntnisse sind bescheiden und autodidaktisch durch zusammensuchen von Lösungen zu eine bestimmen Problemstellung entstanden. Es fehlt mir also am nötigen 'Basiswissen', wie sowas grundsätzlich strukturiert werden muss. Da ich 'von der alten Garde' bin, helfen mir Bücher in der Regel mehr als das Internet (aber eine 'gescheites' Buch habe ich leider noch nicht gefunden (bin also für Tipps empfänglich). In einer Lösung habe ich gesehen, dass die bedingten Formatierungen auch im Code der Tabelle eingetragen werden können, so dass ich dafür jeweils kein Makro starten muss. Die 'Abfrage' mittels Case versuche ich zum ersten Mal.
Ich werde mal versuchen, deine Hilfestellungen umzusetzen und schauen, ob es zum Erfolg führt.
Nochmals Danke für deine Hilfe.
Viele Grüsse Beat

Anzeige
AW: Zellen & Bereich bedingt formatieren
16.12.2014 23:15:08
Matthias
Hallo
Also mit Buchtipps, kann ich Dir nicht dienen.
Um Dir Basiswissen anzueignen sind ExcelForen wie .z.B Herber.de genau richtig.
Übrigens, auch ich lerne nur autodidaktisch (ohne Buch)
Mitlesen - Nachbauen - Probieren
Hier nun eine BspDatei.
Solltest Du es nicht alleine schaffen, schau rein.
 ABCDEFGHIJKLMNOPQRSTUVWX
6                        
7                        
8       100100100100100100100100100100100100     
9                        
10        100            3  
11        100               
12        100               
13        100               
14        100   100           
15        100               
16        100               


Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4


https://www.herber.de/bbs/user/94454.xlsm
Gruß Matthias

Anzeige
AW: Zellen & Bereich bedingt formatieren
17.12.2014 11:14:39
Beat
Lieber Matthias
Herzlichen Dank für deine Idee zur Lösung. Mittels einem Befehlbutton kriege ich die Problemstellung je Tabelle tatsächlich fast gelöst. Muss jetzt noch herausfinden, wie ich das 'BedFormat3()' auch auf die Zeilen 7-2500 ausdehnen kann.
Da ich dies in einer Vielzahl von Tabellen machen muss (aber eben leider nicht in allen - nur in denen, dessen Tabellenehmen mit '... Personal' enden), möchte ich noch versuchen, die Sache in den 'Tabellencode' zu schreiben - oder wie man das genau bezeichnen muss (rechte Maustaste auf Tabellennamen - Code anzeigen). So müsste ich kein Makro starten, welches auch noch die Tabellennamen abfragt (das übersteigt dann momentan definitiv meine VBA-Fähigkeiten). So würde die Prüfung automatisch erfolgen. Im Forum habe ich was gefunden mit 'Case', aber das Einlesen und Ausprobieren braucht etwas mehr Zeit als geplant ;-).
Ich wäre da sehr dankbar für eine Lösung - auch wenn ich parallel dazu selber probiere... mit der Befürchtung, dass es dann schlussendlich mit meiner Variante doch nicht klappen wird ;-)
Viele Grüsse Beat

Anzeige
AW: Zellen & Bereich bedingt formatieren
17.12.2014 11:14:54
Beat
Lieber Matthias
Herzlichen Dank für deine Idee zur Lösung. Mittels einem Befehlbutton kriege ich die Problemstellung je Tabelle tatsächlich fast gelöst. Muss jetzt noch herausfinden, wie ich das 'BedFormat3()' auch auf die Zeilen 7-2500 ausdehnen kann.
Da ich dies in einer Vielzahl von Tabellen machen muss (aber eben leider nicht in allen - nur in denen, dessen Tabellenehmen mit '... Personal' enden), möchte ich noch versuchen, die Sache in den 'Tabellencode' zu schreiben - oder wie man das genau bezeichnen muss (rechte Maustaste auf Tabellennamen - Code anzeigen). So müsste ich kein Makro starten, welches auch noch die Tabellennamen abfragt (das übersteigt dann momentan definitiv meine VBA-Fähigkeiten). So würde die Prüfung automatisch erfolgen. Im Forum habe ich was gefunden mit 'Case', aber das Einlesen und Ausprobieren braucht etwas mehr Zeit als geplant ;-).
Ich wäre da sehr dankbar für eine Lösung - auch wenn ich parallel dazu selber probiere... mit der Befürchtung, dass es dann schlussendlich mit meiner Variante doch nicht klappen wird ;-)
Viele Grüsse Beat

Anzeige
Registernamen abfragen ...
18.12.2014 10:59:48
Matthias
Hallo
Sub BedFormat3()
Dim Wks As Worksheet
For Each Wks In ThisWorkbook.Worksheets
If Right(Wks.Name, 8) = "Personal" Then
With Wks.Range("A10:X10")
.FormatConditions.Add Type:=xlExpression, Formula1:="=$V$10=3"
.FormatConditions(.FormatConditions.Count).SetFirstPriority
With .FormatConditions(1).Interior
.PatternColorIndex = xlAutomatic
.Color = 65535
.TintAndShade = 0
End With
.FormatConditions(1).StopIfTrue = False
End With
End If
Next
End Sub
Gruß Matthias

AW: Registernamen abfragen ...
22.12.2014 17:41:45
Beat
Lieber Matthias
Mit deinen Tipps und einigen Stunden Arbeit und Suchen hab ich's hingekriegt. So funktionieren die beiden Teile, wo deine Inputs vearbeitet sind. Herzlichen Dank nochmals !!!
Gruss Beat
Sub Prep01()
' Prep01 Makro
' bereitet Tabellen vor zum Einfügen der neuen Daten
' sucht Tabellen mit Endung 'Personal'
Dim Wks As Worksheet
For Each Wks In ThisWorkbook.Worksheets
If Right(Wks.Name, 8) = "Personal" Then
' formatiert alle Zellen als unprotected
Sheets(Wks.Name).Select
With Cells.Select
Selection.Locked = False
Selection.FormulaHidden = False
Range("A1").Select
' kopiert Spalten A-G und Y-Z in neutralen Bereich AE-AM (Datenbasis für die Übernahme der  _
Kommentare)
With Columns("A:G").Select
Selection.Copy
Range("AE1").Select
ActiveSheet.Paste
Columns("Y:Z").Select
Application.CutCopyMode = False
Selection.Copy
Range("AL1").Select
ActiveSheet.Paste
Range("A1").Select
Application.CutCopyMode = False
End With
End With
End If
Next
' zurück zur Tabelle Cockpit
Sheets("Cockpit").Select
Range("A11").Select
End Sub

Sub Fine01()
' Fine01 Makro
' überträgt Kommentare, markiert Zellen, schützt Zellen vor Eingabe
Dim Zelle As Range
Dim intIndex As Integer
Dim rng As Range
Dim RaBereich As Range
Dim RaZelle As Range
' sucht Tabellen mit Endung 'Personal'
Dim Wks As Worksheet
For Each Wks In ThisWorkbook.Worksheets
If Right(Wks.Name, 8) = "Personal" Then
'Verketten Nr und Art für Sverweis-Suche
Sheets(Wks.Name).Select
LRL = [a999999].End(xlUp).Row
LRR = [AE999999].End(xlUp).Row
Range("AC7").Select
ActiveCell.FormulaR1C1 = "=CONCATENATE(RC[-28],RC[-22])"
Range("AC7").Select
Application.CutCopyMode = False
Selection.Copy
RG1 = "AC8:AC" & LRL - 1
Range(RG1).Select
ActiveSheet.Paste
Range("AD7").Select
ActiveCell.FormulaR1C1 = "=CONCATENATE(RC[1],RC[7])"
Range("AD7").Select
Application.CutCopyMode = False
Selection.Copy
RG2 = "AD8:AD" & LRR - 1
Range(RG2).Select
ActiveSheet.Paste
Range("AD7").Select
Application.CutCopyMode = False
' kopiert Formel für die Übernahme der Kommentare in Spalte Y
Range("y7").Select
ActiveCell.FormulaR1C1 = "=IFERROR(IF(VLOOKUP(RC[4],C30:C39,9,FALSE)="""","""", _
VLOOKUP(RC[4],C30:C39,9,FALSE)),"""")"
Range("y7").Select
Application.CutCopyMode = False
Selection.Copy
RG3 = "y8:y" & LRL - 1
Range(RG3).Select
ActiveSheet.Paste
Range("y7").Select
Application.CutCopyMode = False
' kopiert Formel für die Übernahme der Kommentare in Spalte Z
Range("z7").Select
ActiveCell.FormulaR1C1 = "=IFERROR(IF(VLOOKUP(RC[4],C30:C39,10,FALSE)="""","""", _
VLOOKUP(RC[4],C30:C39,10,FALSE)),"""")"
Range("z7").Select
Application.CutCopyMode = False
Selection.Copy
RG4 = "z8:z" & LRL - 1
Range(RG4).Select
ActiveSheet.Paste
Range("z7").Select
Application.CutCopyMode = False
' fixiert Kommentare - löscht Datenbasis ab Spalte AC
Columns("Y:Z").Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
Columns("AC:AO").Select
Selection.Delete Shift:=xlToLeft
' färbt Zellen in den Spalten H-S gelb (Color = 65535) ein, wenn Wert >=100
RG5 = "h7:s" & LRL - 1
Set RaBereich = Range(RG5)
For Each RaZelle In RaBereich
With RaZelle
If RaZelle > 99.999999 Then
.Interior.Color = 65535
End If
End With
Next RaZelle
' färbt Zellen A-Z gelb (Color = 65535) ein, wenn Wert in Spalte V >=3
RG6 = "a7:z" & LRL - 1
Set Bereich = Range(RG6)
RG7 = "V7:V" & LRL - 1
Set rng = Intersect(Bereich, Range(RG7))
If rng Is Nothing Then GoTo NexteSeite
For Each Zelle In rng
With Zelle.Value
If Zelle.Value > 2.99 Then
Bereich.Rows(Zelle.Row - 6).Interior.Color = 65535
End If
End With
Next
' Schützt Zellen - ohne Spalten Y, Z
Cells.Select
Selection.Locked = True
Selection.FormulaHidden = False
Columns("Y:Z").Select
Range("Z1").Activate
Selection.Locked = False
Selection.FormulaHidden = False
Range("A1").Select
End If
NexteSeite:
Next
' zurück zur Tabelle Cockpit
Sheets("Cockpit").Select
Range("C11").Select
End Sub

Anzeige

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige