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

bedingte Formatierung nach VBA

bedingte Formatierung nach VBA
Dirk
Hallo zusammen
Ich finde einfach kein Ansatz…, immer nur dasselbe.
Ich möchte weg von der bedingten Formatierung
Ich habe bisher ca 20 Blatt in jedem von A34 – AB200 diese Formel stehen. (es soll Blockweise eingefärbt werden, richtet sich nach dem Datum, was in Spalt B steht)
Also A34 und dann in jede Zelle kopiert
=REST(SUMME(N($B$33:$B33$B$34:$B34));2)
Aber dadurch wird die Datei sehr groß.
Ist es irgendwie möglich das ganze unter VBA zu realisieren?
Mein Ansatz:
wenn ich etwas in spalte N schreibe, wird in Spalt B das Datum eingetragen, danach soll automatisch Formatiert werden. Das Datum Funktioniert schon...

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim bereich As Range
Dim zelle As Range
Set bereich = ActiveSheet.Range("n34:n200")
For Each zelle In bereich
If Not IsEmpty(zelle) And IsEmpty(zelle.Offset(0, -12)) Then
zelle.Offset(0, -12).Value = Date
End If
Next
If Not Intersect(Target, [B34:B200]) Is Nothing And Target.Count = 1 Then
With Target
Select Case Target
End Select
End With
End If
End Sub

Dirk

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: bedingte Formatierung nach VBA
25.08.2012 14:50:41
Ramses
Hallo
Mal eine Rückfrage meinerseits
"...Ich möchte weg von der bedingten Formatierung..:"
Wie hast du das denn mit der bedingten Formatierung gelöst ?
Mit der Formel, die du da zeigst, ist mir das schleierhaft.
Allenfalls mal eine Beispieldatei hochladen
Gruss Rainer

AW: bedingte Formatierung nach VBA
25.08.2012 15:07:28
Dirk
hier das Beispiel
https://www.herber.de/bbs/user/81577.xls
wenn in spalte B das Datum eingetragen wird, färbt sich die entsprechende Zeile.
In meinenm VBA soll aber in Spalte N was eingetragen werden, dadurch wird in Spalte B das aktuelle Datum eingetragen. Soll aber auch noch die zeile gefärbt werden
Dirk

Anzeige
AW: bedingte Formatierung nach VBA
25.08.2012 17:04:28
Dirk
Ich habe mal noch was eingebaut...
https://www.herber.de/bbs/user/81580.xls
Hier wird schon mal die Schrift eingefärbt, je nachdem, was ich für ein Wert in Spalte P eintragen wird.
wenn ich das selbe für Spalte B nutzen würde, bräuchte ich 31 Farben - sieht dann aber nicht so toll aus.
Dirk

AW: bedingte Formatierung nach VBA
25.08.2012 18:19:01
Ramses
Hallo
Probier mal das Makro
Private Sub Worksheet_Change(ByVal Target As Range)
Dim startCol As Long, endCol As Long, startRow As Long
Dim f1 As Long, fCheck As Boolean
Dim datX As Variant
Dim i As Long
'f1 = Farbe festlegen
'255 = Rot
f1 = 255
'Beginn Daten
startCol = 1
endCol = 28
startRow = 34
'Formatierungszeile starten
x = startRow
'Farbencheck einschalten
fCheck = False
'Tabellen Ereignisse abschalten
Application.EnableEvents = False
'Eingabespalte ungleich AB
'ODER Eingabezeile kleiner als der letzte Eintrag
If Target.Column  Range("AB1").Column Or _
Target.Row  Cells(i, startCol + 1) Then
'Formatieren des Bereiches
With Range(Cells(x, startCol), Cells(i, endCol))
'Farbwechsel schalten
If fCheck = False Then
.Interior.Pattern = 1
.Interior.Color = f1
fCheck = True
Else
.Interior.Pattern = xlNone
fCheck = False
End If
End With
'Neue Formatierungszeile merken
x = x + (i - x)
End If
Next i
'Ereignissteuerung wieder einschalten
Application.EnableEvents = True
End Sub
Gruss Rainer

Anzeige
Korrektur---
25.08.2012 18:26:06
Ramses
Hallo
Sorry,... die Ereignissteurung muss natürlich auch beim Abbruch wieder eingeschaltet werden
Private Sub Worksheet_Change(ByVal Target As Range)
Dim startCol As Long, endCol As Long, startRow As Long
Dim f1 As Long, fCheck As Boolean
Dim datX As Variant
Dim i As Long
'f1 = Farbe festlegen
'255 = Rot
f1 = 255
'Beginn Daten
startCol = 1
endCol = 28
startRow = 34
'Formatierungszeile starten
x = startRow
'Farbencheck einschalten
fCheck = False
'Tabellen Ereignisse abschalten
Application.EnableEvents = False
'Eingabespalte ungleich AB
'ODER Eingabezeile kleiner als der letzte Eintrag
If Target.Column  Range("AB1").Column Or _
Target.Row  Cells(i, startCol + 1) Then
'Formatieren des Bereiches
With Range(Cells(x, startCol), Cells(i, endCol))
'Farbwechsel schalten
If fCheck = False Then
.Interior.Pattern = 1
.Interior.Color = f1
fCheck = True
Else
.Interior.Pattern = xlNone
fCheck = False
End If
End With
'Neue Formatierungszeile merken
x = x + (i - x)
End If
Next i
'Ereignissteuerung wieder einschalten
Application.EnableEvents = True
End Sub
Gruss Rainer

Anzeige
AW: Korrektur---
25.08.2012 18:58:22
Dirk
ich bin auch gerade am basteln, ist aber sehr langsam :-(
bei deinem Makro erhalte ich immer Fehlermeldung - Variable nicht definiert ( bei x = startRow ) ... (weil ich noch 2003 nutze?)
Dirk
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Zelle, Bereich As Range
Dim Farbe As Double
Dim Zeile As Integer
Set Bereich = Range("B34: B" & ActiveSheet.UsedRange.Rows.Count + 1)
With Application
.EnableEvents = False      'Ereignisse ausschalten
.ScreenUpdating = False    'Bildschirmaktualisierung ausschalten
.Cursor = xlWait           'Cursor "ruhigstellen"
End With
For Each Zelle In Bereich
If Zelle.Value = "" Then
Zelle.EntireRow.Interior.ColorIndex = -4142
GoTo Nächste
End If
Farbe = Zelle.Offset(-1, 0).Interior.ColorIndex
Zeile = Zelle.Row
If Zelle.Value  Zelle.Offset(-1, 0).Value Then
If Zelle.Offset(-1, 0).Interior.ColorIndex = 44 Then
Range("A" & Zeile & ":AB" & Zeile).Interior.ColorIndex = -4142
Else
Range("A" & Zeile & ":AB" & Zeile).Interior.ColorIndex = 44
End If
Else
Range("A" & Zeile & ":AB" & Zeile).Interior.ColorIndex = Farbe
End If
Nächste:
Next Zelle
Target.Activate
With Application
.EnableEvents = True     'Ereignisse einschalten
.ScreenUpdating = True   'Bildschirmaktualisierung einschalten
.Cursor = xlDefault
End With
End Sub

Anzeige
AW: Korrektur---
25.08.2012 19:11:21
Dirk
wenn ich bei dir
Dim x As Long
einbaue, passiert bei mir nichts....
Dirk

308 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige