Anzeige
Archiv - Navigation
1040to1044
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

if then interiorcolor

if then interiorcolor
21.01.2009 22:45:00
serge
Hallo Leute
ich möchte dass wenn die angeklicke Zelle Rot ist mein Makro ablauft (es können verschiedene Zellen sein.
Ich habe es mit:

Private Sub Worksheet_selectionChange(ByVal Target As Range)
If Target.Interior.ColorIndex = 3 Then
"mein makro"
End If
End Sub


unter anderem probiert und komme nicht auf das gewünschte Ziel!
Wo klemmt es
Danke
Serge

14
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: if then interiorcolor
21.01.2009 22:57:00
Ramses
Hallo
Grundsätzlich korrekt.
Wie heisst denn dein Makro ?
Gruss Rainer
AW: if then interiorcolor
21.01.2009 23:01:13
serge
Hallo Rainer
das ganze ist so

Private Sub Worksheet_selectionChange(ByVal Target As Range)
If Target.Interior.ColorIndex = 3 Then
Application.Goto Reference:="neu"
Selection.Copy
Application.Goto Reference:="alt"
ActiveSheet.Paste
Application.Goto Reference:="neu"
Application.CutCopyMode = False
End If
End Sub


Serge

AW: if then interiorcolor
21.01.2009 23:10:00
Ramses
Hallo
Dann wähle im VB-Editor die Zeile mit "if Target..." aus und drücke die Taste F9
Dann taucht auf der linken Seite ein roter Punkt auf.
Wähle dann in der Tabelle eine Zelle mit der roten Markierung aus
Dann wechselst du automatisch in den VB-Editor und diese Zeile ist markiert.
Drücke dann F8 und du gehst im Einzelschritt durch den Code.
Anschliessend sagst du WAS dann nicht funktioniert
Gruss Rainer
Anzeige
AW: if then interiorcolor
21.01.2009 23:14:35
serge
Rainer
er springt direkt auf End if!
Serge
AW: if then interiorcolor
21.01.2009 23:17:00
Ramses
Hallo
Dann ist die Zelle nicht mit der entsprechenden Farbe markiert
Schreib in die erste Zeile mal
Option Explicit

Private Sub Worksheet_selectionChange(ByVal Target As Range)
MsgBox Target.Interior.ColorIndex
If Target.Interior.ColorIndex = 3 Then
MsgBox "Zelle hat die rote Farbe"
End If
End Sub


Dann solltest du eine MsgBox mit einer Zahl erhalten
Gruss Rainer

AW: if then interiorcolor
21.01.2009 23:17:05
serge
Rainer
er springt direkt auf End if!
Aber jetzt geht mir ein Licht auf: meine Farbe ist eine bedingt Formatierung!
das geht wahrscheinlich nicht oder?
Serge
Anzeige
AW: if then interiorcolor
21.01.2009 23:21:25
Ramses
Hallo
Markierung mit einer Bedingten Formatierung ist extrem schwierig und aufwändig auszulesen.
Unter E2007 noch mehr, weil dort wesentlich mehr Bedingungen möglich sind.
Am besten bildest du dann im VBA-Code diese Bedingung nach. Das ist am einfachsten:
If Target.Value = Entsprechend_deiner_bedingten_Formatierung then
Gruss Rainer
AW: if then interiorcolor
21.01.2009 23:59:00
serge
Ich komme nicht darauf!
z.B : in A7 heisst es "wenn Zellwert ungleich Zellwert e7 dann Füllfarbe Rot(Colorindex 3).
Wenn ich jetzt A7 anklicke soll es erkenne ob das bedingte Format stimmt und danach das Makro ablaufen lassen.
Also es soll nicht A7 erkennen sondern das bedingt Format,weil das ganze auf verschiedenen Zellen ablaufen soll. Der Abstand der bedingt Formatierung ist immer gleich, also die vierte Zelle rechts auf der selben Zeile.
Serge
Anzeige
AW: if then interiorcolor
22.01.2009 00:21:31
Ramses
Hallo
Das auslesen der bedingten Formatierung unter E2003 ist schon schwierig, ich habe das unter E2007 noch nicht probiert.
Ich werde mich hier ausklinken, da es jetzt schon sehr spät ist.
Wenn du die Zellen eindeutig identifizieren kannst, z.B. alle Zellen im Bereich A5:A10 dann wäre das so möglich
Rechte Maustaste auf den Tabellenreiter
Code anzeigen
Diesen Code dort reinkopieren
Option Explicit

Private Sub Worksheet_selectionChange(ByVal Target As Range)
    'Wenn es nur wenige Zellen sind, die überwacht werden sollen
    Select Case Target.Address(0, 0)
        Case "A5", "A6", "A7"
            If Target.Offset(0, 4) <> Target Then
                'Dein Makro Code
                MsgBox "Bedingung müsste zutreffen und die Zelle rot sein"
            End If
    End Select
End Sub

Private Sub Worksheet_selectionChange(ByVal Target As Range)
    'Wenn es grössere Bereiche sind
    Dim chkRange As Range
    Set chkRange = Range("A5:A10")
    If Not Intersect(Target, chkRange) Is Nothing Then
        If Target.Offset(0, 4) <> Target Then
            'Dein Makro Code
            MsgBox "Bedingung müsste zutreffen und die Zelle rot sein"
        End If
    End If
End Sub

Aber nur EINEN der beiden Code's verwenden
Gruss Rainer
Anzeige
AW: if then interiorcolor
22.01.2009 11:01:56
serge
Guten Morgen Rainer
Dein Vorschlag scheint gut!
Bei :
If Target.Offset(0, 4) Target Then
gibt er mir die Meldung Laufzeîtfehler '13': Typen unverträglich
Ich nehme an da fehlt nicht viel?
Serge
AW: if then interiorcolor
22.01.2009 11:52:00
Ramses
Hallo
Keine Erklärung dafür.
Ich habe das gerade nochmal unter XP getestet und es funktioniert
Hast du in dem Bereich verbundene Zellen ?
Gruss Rainer
Nein!
22.01.2009 12:54:00
serge
Hallo Rainer
ich hänge mal meine Datei an: https://www.herber.de/bbs/user/58686.xls
vieleicht kommst so besser darauf
Danke
Serge
Anzeige
AW: Nein!
22.01.2009 13:57:00
Ramses
Hallo
Durch das "Application.Goto" wird das "SelectionChange" Ereignis neu ausgelöst, weil dann aber ein Bereich markiert ist knallt es.
ich habe das ganze noch etwas verkürzt und jetzt tut es.
Option Explicit

Private Sub Worksheet_selectionChange(ByVal Target As Range)
    Dim chkRange As Range
    Set chkRange = Range("A7:D9")
    On Error GoTo exitCode
    If Not Intersect(Target, chkRange) Is Nothing Then
        Application.EnableEvents = False
        If Target.Offset(0, 4).Value <> Target.Value Then
            Range("neu").Copy Range("alt")
            Application.CutCopyMode = False
            MsgBox "Bedingung müsste zutreffen und die Zelle rot sein"
        End If
    End If
    exitCode:
    On Error GoTo 0
    Application.EnableEvents = True
End Sub

Gruss Rainer
Anzeige
Danke!!!
22.01.2009 14:14:42
serge
Danke Rainer es klapp hervorragend!
Nochmals Danke und ein Gruss aus dem sonnigen aber windigem Elsass!
Serge

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige