Microsoft Excel

Herbers Excel/VBA-Archiv

Used Range Beschränken


Betrifft: Used Range Beschränken
von: Didi
Geschrieben am: 19.11.2019 13:18:08

Hallo liebes Forum,
ich beschäftige mich wieder mit VBA und habe gemerkt, dass meine Kenntnisse gravierend eingestaubt sind.
Ich habe eine Tabelle wo je nach Fälle die Felder in eine Farbe makiert werden, das funktioniert auch alles wunderbar.
Sobald ich aber das Feld lösche, verschwindet auch die Farbe, das ist auch so beabsichtigt.
Mein Problem ist nun, dass Felder die unabhängig von den Fällen sind auch wieder ihre Farbe verlieren.
Das Problem hängt mit der used.range zusammen, kann man diese einschränken?
Es wären bestimmte Zeilen die nicht mit einbezogen werden sollen wie z.B. A1:Z1 F1: Z6.

Option Explicit


Public Sub ColourChange1()
Dim itm As Range

Application.ScreenUpdating = False
Sheets("Test").Offset(1).Interior.ColorIndex = xlColorIndexNone

For Each itm In Sheets("Test").UsedRange.Offset(1)
If Not IsError(itm) Then
With itm
Select Case .Value2


Gruß Didi

  

Betrifft: AW: Used Range Beschränken
von: Werner
Geschrieben am: 19.11.2019 13:28:55

Hallo,

was bitte soll das hier darstellen?

Sheets("Test").Offset(1).Interior.ColorIndex = xlColorIndexNone
Ich denke mal es wäre besser, wenn du eine Beispielmappe hochladen würdest in der du aufzeigst was du willst.

Gruß Werner


  

Betrifft: AW: Used Range Beschränken
von: Didi
Geschrieben am: 19.11.2019 13:37:43

Option Explicit
Public Sub ColourChange1()
Dim itm As Range



Application.ScreenUpdating = False
Sheets("Test").UsedRange.Offset(1).Interior.ColorIndex = xlColorIndexNone

For Each itm In Sheets("Test").UsedRange.Offset(1)
If Not IsError(itm) Then
With itm
Select Case .Value2
'Klasse
Case "Klasse-1", "Klasse-2", "Klasse-3"
.Interior.Color = RGB(218, 150, 148)
itm.Offset(0, 1).Interior.Color = RGB(218, 150, 148) 
itm.Offset(0, 2).Interior.Color = RGB(218, 150, 148) 
itm.Offset(0, 3).Interior.Color = RGB(218, 150, 148) 
                        
'Stufe
 Case "Stufe"
.Interior.Color = RGB(146, 205, 220)
itm.Offset(0, 1).Interior.Color = RGB(146, 205, 220)
itm.Offset(0, 2).Interior.Color = RGB(146, 205, 220)
itm.Offset(0, 3).Interior.Color = RGB(146, 205, 220)

               
End Select
End With
End If
Next
Application.ScreenUpdating = True
End Sub

Das ist der ganze Code, man gibt ein Wort in bestimmte Felder ein und das Feld und die nachfolgenden Felder werden eingefärbt.

Die Datei könnte ich heute Abend hochladen. Das funktioniert auch alles wunderbar.

Meine Überschriften färbe ich manuell ein und sobald ich z.B. Klasse-1 eingebe, werden die jeweiligen Felder eingefärbt aber sobald ich Klasse-1 lösche, nimmt das Makro mir die Farben aus der Überschrift wieder weg.