Home Office-Hilfe.com - Wir lösen Ihr Problem mit Microsoft Excel, Word, Outlook, PowerPoint, Access gratis Forum Impressum

  [Excel2k] Ampelschaltung mit einer Eingabe
Neues Thema eröffnenNeue Antwort erstellen
Autor Nachricht
magic59
Newbie
Newbie


Anmeldedatum: 05.03.2008
Beiträge: 16

BeitragVerfasst am: 03.04.2008, 10:31 Nach oben

Huhu, ich schon wieder und meine Wünsche werden komplizierter.

Ich habe in diversen Excel-Tabellen eine Art Statusampel mit den Farben rot, gelb und grün. Aufgebaut ist sie aus 3 nebeneinanderliegenden Zellen, die jeweils mit 1 auf die jeweilige Farbe geschaltet werden und mit 0 wieder auf weiss. D.h. ein Statuswechsel bedingt zwei Eingaben, nämlich einmal die 1 auf den neuen Status sowie die 0, um den alten Status wieder weiss zu machen. Nun würde ich das gerne automatisieren.
Die Eingabe der 1 in einem der drei Zellen soll die andere Zellen automatisch auf weiss setzen. Mit der bedingten Formatierung komme ich nicht so recht weiter, da ich da ja nicht die Farbe anderer Zellen ändern kann, als die jeweils aktive.

Vielleicht noch mal in Pseudocode:

Code:

     IF Feld A1 = 1 THEN Feld A2=0 AND A3 = 0
ELSE IF Feld A2 = 1 THEN Feld A1=0 AND A3 = 0
ELSE IF Feld A3 = 1 THEN Feld A1=0 AND A1 = 0
FI
Benutzer-Profile anzeigenPrivate Nachricht senden
magic59
Newbie
Newbie


Anmeldedatum: 05.03.2008
Beiträge: 16

BeitragVerfasst am: 03.04.2008, 11:17 Nach oben

Ich habe es alleine hinbekommen, aber um die zahlreichen Experten hier trotzdem anzuzapfen, würde mich interessieren, ob ich den Code nicht deutlich schlanker bekomme:

So sieht mein Code momentan aus:

Teil 1:
Code:

Private Sub Worksheet_Change(ByVal Target As Range)

    ' Variablendeklaration
    Dim Bereich As Range, ampelBereich As Range, Zelle As Range

    ' Abschalten der Excel-Events
    Application.EnableEvents = False

    ' Definition des jeweils betreffenden Bereiches
    ' und Aufruf der Umwandelfunktion
    Set Bereich = Range("C8:C47")
    Call toUppercase(Bereich, Target)
   
    Set ampelBereich = Range("I8:K47")
    Call schalteAmpel(ampelBereich, Target)
   
    ' Wiedereinschalten der Excel-Events
    Application.EnableEvents = True

End Sub


Teil 2 (Ampelschaltung):
Code:

Private Sub schalteAmpel(Bereich As Range, Target As Range)
   
    Dim bereichGruen As Range, bereichGelb As Range, bereichRot As Range
   
    Set bereichGruen = Range("I8:I48")
    Set bereichOrange = Range("J8:J48")
    Set bereichRot = Range("K8:K48")

    If Not Intersect(Target, Bereich) Is Nothing Then
        If Not Intersect(Target, bereichGruen) Is Nothing Then
            Select Case (Target.Value)
                Case "1":
                    Target.Cells.Interior.ColorIndex = 4 'gruen
                    Target.Cells.Font.ColorIndex = 4
                    Target.Offset(0, 1).Cells.Interior.ColorIndex = 2
                    Target.Offset(0, 1).Font.ColorIndex = 2
                    Target.Offset(0, 2).Cells.Interior.ColorIndex = 2
                    Target.Offset(0, 2).Font.ColorIndex = 2
            End Select
        End If
       
        If Not Intersect(Target, bereichOrange) Is Nothing Then
            Select Case (Target.Value)
                Case "1":
                    Target.Cells.Interior.ColorIndex = 45 'orange
                    Target.Cells.Font.ColorIndex = 45
                    Target.Offset(0, -1).Cells.Interior.ColorIndex = 2
                    Target.Offset(0, -1).Font.ColorIndex = 2
                    Target.Offset(0, 1).Cells.Interior.ColorIndex = 2
                    Target.Offset(0, 1).Font.ColorIndex = 2
            End Select
        End If
       
        If Not Intersect(Target, bereichRot) Is Nothing Then
            Select Case (Target.Value)
                Case "1":
                    Target.Cells.Interior.ColorIndex = 3 'rot
                    Target.Cells.Font.ColorIndex = 3
                    Target.Offset(0, -1).Cells.Interior.ColorIndex = 2
                    Target.Offset(0, -1).Font.ColorIndex = 2
                    Target.Offset(0, -2).Cells.Interior.ColorIndex = 2
                    Target.Offset(0, -2).Font.ColorIndex = 2
            End Select
        End If
    End If

End Sub
Benutzer-Profile anzeigenPrivate Nachricht senden
schatzi
Moderator
Moderator


Anmeldedatum: 09.12.2006
Beiträge: 5715

BeitragVerfasst am: 03.04.2008, 11:21 Nach oben

Hallo!
Zitat:
Mit der bedingten Formatierung komme ich nicht so recht weiter, da ich da ja nicht die Farbe anderer Zellen ändern kann, als die jeweils aktive.

Das ist nicht richtig!

Markiere A2 und gib bei der bedingten Formatierung dies ein:
Formel ist: =A1=1
(Format: grün)

Nun färbt sich A2 grün, wenn in A1 eine Eins steht.

_________________

Viele Grüße vom Schatzi

------------------------
Ich bin nur noch sporadisch erreichbar!
Bitte hofft nicht auf eine schnelle Beantwortung einer Rückfrage meinerseits!
Jeder andere Helfer darf Rückfragen gerne übernehmen!
Benutzer-Profile anzeigenPrivate Nachricht senden
magic59
Newbie
Newbie


Anmeldedatum: 05.03.2008
Beiträge: 16

BeitragVerfasst am: 03.04.2008, 11:24 Nach oben

Hmm, ich breche mir hier mit meinen rudimentären VBA-Kenntnissen einen ab, dabei ist es so einfach.

Eigentlich müsste ich nun wieder die ASCII-Rosen bringen, aber ich belasse es mal bei einem fetten Danke!
Benutzer-Profile anzeigenPrivate Nachricht senden
Beiträge der letzten Zeit anzeigen:      
Neues Thema eröffnenNeue Antwort erstellen


Ähnliche Beiträge
Thema Autor Forum Antworten Verfasst am
Keine neuen Beiträge PageControl auf Seite einer "Mut... miriki Microsoft Access Hilfe 0 15.10.2008, 11:19 Letzten Beitrag anzeigen
Keine neuen Beiträge Problem beim Speichern einer Datei ub... dobby110 Microsoft Excel Hilfe 1 07.10.2008, 10:51 Letzten Beitrag anzeigen
Keine neuen Beiträge VBA - Zellinhalt löschen,wenn in eine... Mightymagic Microsoft Excel Hilfe 2 06.10.2008, 23:06 Letzten Beitrag anzeigen
Keine neuen Beiträge Mehrere Summen in einer Zeitachse dar... AndreasBelow Microsoft Excel Hilfe 0 06.10.2008, 14:37 Letzten Beitrag anzeigen
Keine neuen Beiträge In einer Textzeile Mittig und Rechtsb... SChreibnase Microsoft Word Hilfe 4 28.09.2008, 19:28 Letzten Beitrag anzeigen


 Gehe zu:   



Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen

Haftungsausschluss/Disclaimer


SMS kostenlos versenden | Battle-Dream | Tuning Forum | Join the YoungGeneration | krankenversicherungsvergleich | Kalorienarme Rezepte!
Versicherungsvergleich | Bürobedarf | Papier | Betten

Ranking-Hits



Powered by phpBB © 2001, 2002 phpBB Group :: FI Theme :: Alle Zeiten sind GMT + 1 Stunde
Deutsche Übersetzung von phpBB.de