AW: Interior.Color
26.11.2006 18:33:31
Daniel
Hallo
Der Code geht wahrscheinlich deshalb nicht, weil er nicht in einem Allgemeinen Modul steht, sondern im Modul des Sheets "Eingabe".
Normalerweise müssen Zellen im Code immer mit "Sheets().Range()" oder "Sheets().Cells()" angesprochen werden.
würde der Code in einem Allgemeinen Modul stehen (und davon bin ich ausgegangen), kann die Angabe von "Sheets()." für die Zellen im gerade aktiven Sheet entfallen. Da nach dem Kopieren das neue Sheet aktiv ist, wäre daher die Eingabe von "Sheets()" unnötig.
Du hast aber den Code im Modul des Sheets("Eingabe") stehen. In diesem Fall ist es so, daß die Angabe von "Sheets()" nur für Zellen entfallen kann, die auch in diesem Sheet(Eingabe") stehen. Für alle anderen Zellen muss "Sheets()." immer mit angeben werden, unabhängig davon, ob das Sheet aktiv ist oder nicht.
daher muß dein Code so aussehen:
Private Sub cmdTEST_Click()
Dim Zelle As Range
Sheets("Eingabe").Copy After:=Sheets("Eingabe")
ActiveSheet.Range("A1:Z1800").Interior.ColorIndex = xlNone
For Each Zelle In ActiveSheet.Range(.Cells(1, 4), ActiveSheet.Cells(65000, 4).End(xlUp))
Select Case Zelle.Resize(1, 3).MergeCells
Case True
Select Case Zelle.Value
Case 1, 2, 3, 4, 5
ActiveSheet.Range(Zelle, ActiveSheet.Cells(Zelle.Row, 15)).Interior.ColorIndex = 3
Case Else
End Select
Case Else
End Select
Next
End Sub
Dabei kann man sich noch Schreibarbeit sparen, wenn man die With-Klammer verwendent.
Dann wird anstelle des mit WiTH beschriebenen Objekts (in diesem Fall das Activesheet) im folgenden Code nur noch ein "." geschrieben.
Diese Mehtode verkürzt den Code, erleichtert das Korregieren und Überarbeiten und ist angeblich auch schneller
Private Sub cmdTEST_Click()
Dim Zelle As Range
Sheets("Eingabe").Copy After:=Sheets("Eingabe")
With ActiveSheet
.Range("A1:Z1800").Interior.ColorIndex = xlNone
For Each Zelle In .Range(.Cells(1, 4), .Cells(65000, 4).End(xlUp))
Select Case Zelle.Resize(1, 3).MergeCells
Case True
Select Case Zelle.Value
Case 1, 2, 3, 4, 5
.Range(Zelle, .Cells(Zelle.Row, 15)).Interior.ColorIndex = 3
Case Else
End Select
Case Else
End Select
Next
End With
End Sub
Gruß, Daniel