Herbers Excel-Forum - das Archiv

Worksheet_Change auf Spalten beschränken

Bild

Betrifft: Worksheet_Change auf Spalten beschränken
von: topdog

Geschrieben am: 10.03.2008 19:19:21


Hallo da draussen...
Nochmal ein kleines Problem

Private Sub Worksheet_Change(ByVal lRange As Range)
Call Check(ThisWorkbook.ActiveSheet.Name)
End Sub


mit diesem Code rufe ich ein Modul in VBA auf, das mir mehrere Bedingte Formatierungen als 3 erlaubt. Jetzt isses ja immo so,
das bei jeder Änderung in dem Sheet das Modul aufgerufen und durchlaufen wird.
Da dieses Modul nicht gerade klein ist, dauert es immer eine kleine Ewigkeit, bis es durchlaufen ist.
Gibt es ne möglichkeit, das dieses Modul nur dann aufgerufen wird, wenn in Spalte M,N,Q,oder R eine Änderung
vorgenommen wird?
Wenn ja wie?
Oder gibt es vllt ne Möglichkeit diesen "Brocken" von Modul zu "verkürzen"?
Sub Check(ByVal strSheet As String)
Dim lR As Integer, lC As Integer
lC = 12 'Zwölfte Spalte, Spalte in der die bedingte Formatierung angelegt werden soll
With ThisWorkbook.Worksheets(strSheet)
For lR = 8 To 3000 'Zeile 8 bis 3000 'Zeilen in den die bedingte Formatierung angelegt werden soll
With Cells(lR, lC) 'Zelle auswählen
If (.Value = "Beim Prüfen") Then ' Wenn der Wert "Beim Prüfen" ist, dann mach....
.Interior.Pattern = xlGray50 'legt die "Dichte" des Musters fest
.Interior.PatternColorIndex = 46 'legt die Farbe des Musters fest
.Interior.ColorIndex = xlAutomatic 'legt die Hintergrundfarbe fest
.Font.ColorIndex = xlAutomatic ' legt die Schriftfarbe fest
.Font.Bold = True 'Schriftart "Fett"
.Font.Italic = False 'Schriftart "Kursiv"
.Font.Underline = False 'Schriftart "Untersrichen"
.HorizontalAlignment = xlCenter 'Schriftart "Zentriert"
.VerticalAlignment = xlCenter 'Schriftart "vertikal Zentriert"
ElseIf (.Value = "0") Then 'Wenn der Wert "Prüfung überfällig" ist dann mach....
.Interior.Pattern = xlGray50 'legt die "Dichte" des Musters fest
.Interior.PatternColorIndex = 2 'legt die Farbe des Musters fest
.Interior.ColorIndex = 2 'legt die Hintergrundfarbe fest
.Font.ColorIndex = 2 ' legt die Schriftfarbe fest
.Font.Bold = True 'Schriftart "Fett"
.Font.Italic = False 'Schriftart "Kursiv"
.Font.Underline = False 'Schriftart "Untersrichen"
.HorizontalAlignment = xlCenter 'Schriftart "Zentriert"
.VerticalAlignment = xlCenter 'Schriftart "vertikal Zentriert"
ElseIf (.Value = "Prüfung überfällig") Then 'Wenn der Wert "Prüfung überfällig" ist dann mach....
.Interior.Pattern = xlGray50 'legt die "Dichte" des Musters fest
.Interior.PatternColorIndex = 3 'legt die Farbe des Musters fest
.Interior.ColorIndex = xlAutomatic 'legt die Hintergrundfarbe fest
.Font.ColorIndex = xlAutomatic ' legt die Schriftfarbe fest
.Font.Bold = True 'Schriftart "Fett"
.Font.Italic = False 'Schriftart "Kursiv"
.Font.Underline = False 'Schriftart "Untersrichen"
.HorizontalAlignment = xlCenter 'Schriftart "Zentriert"
.VerticalAlignment = xlCenter 'Schriftart "vertikal Zentriert"
ElseIf (.Value = "Prüfung fällig") Then ' Wenn der Wert "Prüfung fällig" ist, dann mach....
.Interior.Pattern = xlGray50 'legt die "Dichte" des Musters fest
.Interior.PatternColorIndex = 6 'legt die Farbe des Musters fest
.Interior.ColorIndex = xlAutomatic 'legt die Hintergrundfarbe fest
.Font.ColorIndex = xlAutomatic ' legt die Schriftfarbe fest
.Font.Bold = True 'Schriftart "Fett"
.Font.Italic = False 'Schriftart "Kursiv"
.Font.Underline = False 'Schriftart "Untersrichen"
.HorizontalAlignment = xlCenter 'Schriftart "Zentriert"
.VerticalAlignment = xlCenter 'Schriftart "vertikal Zentriert"
ElseIf (.Value = "i.O.") Then ' Wenn der Wert "i.O." ist, dann mach....
.Interior.Pattern = xlGray50 'legt die "Dichte" des Musters fest
.Interior.PatternColorIndex = 4 'legt die Farbe des Musters fest
.Interior.ColorIndex = xlAutomatic 'legt die Hintergrundfarbe fest
.Font.ColorIndex = xlAutomatic ' legt die Schriftfarbe fest
.Font.Bold = True 'Schriftart "Fett"
.Font.Italic = False 'Schriftart "Kursiv"
.Font.Underline = False 'Schriftart "Untersrichen"
.HorizontalAlignment = xlCenter 'Schriftart "Zentriert"
.VerticalAlignment = xlCenter 'Schriftart "vertikal Zentriert"
ElseIf (.Value = "Versandvorbereitung") Then ' Wenn der Wert "Versandvorbereitung" ist, dann mach....
.Interior.Pattern = xlGray50 'legt die "Dichte" des Musters fest
.Interior.PatternColorIndex = 15 'legt die Farbe des Musters fest
.Interior.ColorIndex = xlAutomatic 'legt die Hintergrundfarbe fest
.Font.ColorIndex = xlAutomatic ' legt die Schriftfarbe fest
.Font.Bold = True 'Schriftart "Fett"
.Font.Italic = False 'Schriftart "Kursiv"
.Font.Underline = False 'Schriftart "Untersrichen"
.HorizontalAlignment = xlCenter 'Schriftart "Zentriert"
.VerticalAlignment = xlCenter 'Schriftart "vertikal Zentriert"
ElseIf (.Value = "INAKTIV!!!") Then ' Wenn der Wert "Versandvorbereitung" ist, dann mach....
.Interior.Pattern = xlNone 'legt die "Dichte" des Musters fest
.Interior.PatternColorIndex = xlNone 'legt die Farbe des Musters fest
.Interior.ColorIndex = xlAutomatic 'legt die Hintergrundfarbe fest
.Font.ColorIndex = 3 ' legt die Schriftfarbe fest
.Font.Bold = True 'Schriftart "Fett"
.Font.Italic = False 'Schriftart "Kursiv"
.Font.Underline = False 'Schriftart "Untersrichen"
.HorizontalAlignment = xlCenter 'Schriftart "Zentriert"
.VerticalAlignment = xlCenter 'Schriftart "vertikal Zentriert"
Else 'Wenn er nich von alle dem ist dann mach....
.Interior.ColorIndex = xlNone
.Font.ColorIndex = xlAutomatic
'*****************
End If 'Ende Schleife
End With 'Ende Zelle
Next lR ' Nächste Zelle ankucken
End With
End Sub


LG TopDog

Bild

Betrifft: AW: Worksheet_Change auf Spalten beschränken
von: Hajo_Zi
Geschrieben am: 10.03.2008 19:23:45
Hallo Nick,
vielleicht ist dies ein Ansatz. http://hajo-excel.de/vba_format.htm

Bild

Betrifft: AW: Worksheet_Change auf Spalten beschränken
von: Beverly

Geschrieben am: 10.03.2008 19:37:19
Hi,

Private Sub Worksheet_Change(ByVal lRange As Range)
If Intersect(lRange, Union(Columns("M:N"), Columns("Q:R"))) Is Nothing Then Exit Sub
Call Check(ThisWorkbook.ActiveSheet.Name)
End Sub




Bild

Betrifft: AW: Worksheet_Change auf Spalten beschränken
von: topdog
Geschrieben am: 10.03.2008 20:30:33
THX!!!
Danke Hajo für die Seite...sehr nützlich!!!!
Beverly auch dir Danke für den Lösungsvorschlag!!! Funktioniert einwandfrei
LG TopDog

 Bild
Excel-Beispiele zum Thema "Worksheet_Change auf Spalten beschränken"
Vorkommen von Zahlenreihen in Spalten Funktion ANZAHL2 ohne ausgeblendete Spalten
Spaltenbreite anpassen Spalten einer Mehrbereichsauswahl ausblenden.
Spaltennamen bestimmen Spalten/Zeilen aus- und einblenden
Zeilen und Spalten über ein Drehfeld ein- und ausblenden In einem Dialog ausgewählte Spalten drucken
Spalten bedingt summieren und Zellen formatieren Abfrage der markierten Spalten