Farbe in aktiver Zelle ändern ???

Dieses Thema im Forum "MS Excel" wurde erstellt von Weserspucker, 29 November 2001.

  1. Weserspucker

    Weserspucker
    Expand Collapse
    Guest

    Hallo, in einem Excel-Formular möchte ich die Farbe der gerade aktiven Zelle ändern. Nach dem Verlassen der Zelle soll dann wieder die ursprüngliche Farbe erscheinen.
    Beispiel:
    Die Zelle "A3" ist "hellgrün" und wird zur Eingabe angesprungen. Jetzt soll sich die Farbe in "dunkelgrün" ändern und nach dem Verlassen der Zelle nach "A9" soll wieder die ursprüngliche Farbe "hellgrün" in "A3" sein und die Zelle "A9" dann in "dunkelgrün" erscheinen.

    Wie kann ich das bewerkstelligen ???
     
  2. Schmitti

    Schmitti
    Expand Collapse
    <font color="#FF0000">S-Moderator</font><br><img s

    Registriert seit:
    17 Februar 2001
    Beiträge:
    3.953
    Zustimmungen:
    0
    Hallo,

    vorab:
    Es reicht, wenn Du Fragen hier schreibst,
    diese mir aber zusätzlich per Mail zu schicken
    finde ich weniger schön.


    Diesen Code in die entsprechende Tabelle
    im VBA-Editor ein:


    Code:
    [blau]
    Dim Merk, Farbe
    
    Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
        If Merk <> "" Then Range(Merk).Interior.ColorIndex = Farbe
        Merk = Target.Address
        Farbe = Target.Interior.ColorIndex
        Target.Interior.ColorIndex = 4
    End Sub
    [/blau]
     
  3. Weserspucker

    Weserspucker
    Expand Collapse
    Guest

    Re: Farbe in aktiver Zelle

    Vielen Dank für die schnelle Antwort und Hilfe.

    Hatte die Mail leider schon geschrieben bevor ich hier dieses Forum erblickte. Da war ich leider etwas vorschnell.
    Werde mich bessern!

    Das die Antwort so schnell hier steht ist dann umso schöner.

    :))) petnen
     
  4. Gruenrock

    Gruenrock
    Expand Collapse
    Guest

    Nachfrage zu Vorstehendem

    Guten Tag,
    da mich als VBA-Anfänger diese Routine auch sehr interessiert, habe ich dazu noch ein Frage.
    Wenn ich den angegebenen VBA-Code eingebe, dann ändert sich in meinem Formular nichts. Die Zellfarbe bleibt wie vorgegeben.
    Muss ich den Code noch irgendwo abändern?
    Irgendwie ist mir das nicht ganz verständlich, denn eigentlich müsste ich doch irgendwo die von mir gewünschte Farbe angeben. Wie gesagt, ich bin absoluter Anfänger. Vielleicht kann mir das aber doch einer verständlich erklären.
    Ich habe mein Formular geladen, den VBA-Editor aufgerufen "F7" gedrückt und den Code wie vorgegeben eingegeben.

    Irgendwo mache ich aber wohl etwas falsch.
     
  5. Schmitti

    Schmitti
    Expand Collapse
    <font color="#FF0000">S-Moderator</font><br><img s

    Registriert seit:
    17 Februar 2001
    Beiträge:
    3.953
    Zustimmungen:
    0
    Hi Gruenrock,

    entscheidend bei diesem Code ist es,
    daß er auf keinem Fall in ein Modul stehen darf.

    Eine Aktion soll ausgeführt werden,
    wenn die aktive Zelle verändert wird.

    In diesem Fall muss man also im VBA-Explorer
    die entsprechende Tabelle auswählen
    und F7 drücken.
    Vermutlich befindet sich der Code bei Dir
    unter "DieseArbeitsmappe" !?

    Die Farbe änderst Du mittels Target.Interior.ColorIndex = 4

    Um die gewünschte Farbnummer herauszufinden,
    empfiehlt es sich, einfach ein Makro auzuzeichnen,
    welches die Farbe auf eine Zelle anwendet.
    Somit kommt man schnell zur gewünschten Farbnummer.

    Im Anhang eine Beispieldatei
     

    Anhänge:

  6. Grünrock

    Grünrock
    Expand Collapse
    Guest

    Re: Farbe in aktiver Zelle ändern

    Guten Tag, habe es mit Deiner Hilfe zum Laufen bekommen.
    Leider funktioniert es nur, wenn kein Blattschutz aktiviert ist.
    Der ist jedoch in meinem Formular notwendig, damit nicht in allen Zellen geschrieben werden kann.
    Bei aktiviertem Blattschutz erfolgt eine "Laufzeitfehler-Meldung 1004 - Die Colorindex-Eigenschaft des Intercolor-Objektes kann nicht festgelegt werden"

    Kannst Du mir da weiter helfen?
     
  7. Schmitti

    Schmitti
    Expand Collapse
    <font color="#FF0000">S-Moderator</font><br><img s

    Registriert seit:
    17 Februar 2001
    Beiträge:
    3.953
    Zustimmungen:
    0
    Hallo,

    da hilft dann leider nur die Erweiterung der Routine.
    Der Schutz wird aufgehoben, die Farbe geändert
    und anschließend wird der Schutz wieder gesetzt:

    Code:
    [blau]
    Dim Merk, Farbe
    
    Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
        [b]ActiveSheet.Unprotect[/b]
        If Merk <> "" Then Range(Merk).Interior.ColorIndex = Farbe
        Merk = Target.Address
        Farbe = Target.Interior.ColorIndex
        Target.Interior.ColorIndex = 4
        [b]ActiveSheet.Protect[/b]
    End Sub
    [/blau]
     
  8. Grünrock

    Grünrock
    Expand Collapse
    Guest

    Dank

    Hallo,
    vielen Dank für die Überarbeitung der Routine. Nun funktioniert es auch in meinem Arbeitsblatt.
    Wirklich toll, dass hier auch absoluten Anfängern wie mir schnell geholfen wird.

    Noch einmal meinen herzlichen Dank!

    Werde dieses Brett weiter empfehlen und natürlich selber auch regelmässig reinschauen.
     
  9. Grünrock

    Grünrock
    Expand Collapse
    Guest

    Weiteres Problem

    Hallo, habe mich da wohl zu früh gefreut. Leider funktioniert es doch noch nicht so richtig, da jetzt bei jedem Zellenwechsel nach dem "Passwort" gefragt wird. Das ist natürlich nicht gewollt, da es denn Anwendern des Formblatts nicht bekannt ist.

    Gibt es da eine "einfache" Lösung für ??
     
  10. petnen

    petnen
    Expand Collapse
    Guest

    Re: Weiteres Problem

    Hallo Grünrock,
    da hast Du praktisch 2 Möglichkeiten:

    1. Du lässt den Blatt-PW-Schutz innerhalb des Arbeitsblattes
    ganz weg. Der wird dann aktiviert, wenn Du den ersten Zellenwechsel gemacht hast (durch den VBA-Code oben).

    2. Du aktivierst den Blattschutz O H N E ein PW zu vergeben und bestätigst die PW-Abfrage einfach nur mit "ENTER".
     
  11. Schmitti

    Schmitti
    Expand Collapse
    <font color="#FF0000">S-Moderator</font><br><img s

    Registriert seit:
    17 Februar 2001
    Beiträge:
    3.953
    Zustimmungen:
    0
    Hallo,

    nein, auch ein Passwort stellt kein Hinderniss dar:


    Code:
    [blau]
    Dim Merk, Farbe
    
    Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
        ActiveSheet.Unprotect [b]Password:="test"[/b]
        If Merk <> "" Then Range(Merk).Interior.ColorIndex = Farbe
        Merk = Target.Address
        Farbe = Target.Interior.ColorIndex
        Target.Interior.ColorIndex = 4
        ActiveSheet.Protect [b]Password:="test"[/b]
    End Sub
    [/blau]
     
  12. Grünrock

    Grünrock
    Expand Collapse
    Guest

    Problem, Probleme.....

    Hallo,
    ich hangel mich hier scheinbar von Problem zu Problem.

    Wie ich jetzt feststelle, funktioniert das mit der Farbübergabe doch nicht so wie erforderlich !

    Nach dem ABSPEICHERN des Formulars und einem erneuten Laden, hat die letzte aktivierte Zelle immer die Farbe der Aktivzelle übernommen. Wenn wir von obigem Beispiel ausgehen, dann bleibt immer die Zelle in "dunkelgrün (Farbcode 4)", in der sich der Cursor beim Abspeichern des Formulars befand, sie müsste jedoch nach Formularvorgabe in "hellgrün (Farbcode 40)" erscheinen.
    Dieses ist besonders fatal, wenn der Benutzer durch irgendeinen Umstand eine Zelle (in einer anderen Farbe) angeklickt hat, die
    eigentlich geschützt ist und dann abspeichert. Mein Formular muss in unregelmässigen Abständen gespeichert werden, da per SVERWEIS auf einen aktualisierbaren Datenbestand in einem anderen Arbeitsblatt zugegriffen wird.

    Wie kann ich das Problem lösen ?
     
  13. Grünrock

    Grünrock
    Expand Collapse
    Guest

    Nachfrage: Farbe in aktiver zelle ändern

    Hallo Schmitti,
    gibt es für mein geschildertes Problem keine Lösung ?

    Habe schon alles hinundher geblättert und ausprobiert; finde aber keine Lösung asl VB-Anfänger.

    Kannst Du mir (oder jemand anderes) noch einmal weiter helfen??
     
  14. Schmitti

    Schmitti
    Expand Collapse
    <font color="#FF0000">S-Moderator</font><br><img s

    Registriert seit:
    17 Februar 2001
    Beiträge:
    3.953
    Zustimmungen:
    0
    Hallo Grünrock,

    habe es mir nochmal angesehen:

    Unter "DieseArbeitsmappe" füge diesen Code ein:

    Code:
    [blau]
    Private Sub Workbook_BeforeClose(Cancel As Boolean)
        If Merk <> "" Then
            ActiveSheet.Unprotect Password:=Passwort
            Range(Merk).Interior.ColorIndex = Farbe
            ActiveSheet.Protect Password:=Passwort
        End If
    End Sub
    [/blau]
    Füge ein neues Modul ein, mit diesem Code:

    Code:
    [blau]
    Public Merk, Farbe
    Public Const Passwort = "test"
    [/blau]

    Der Tabellencode:

    Code:
    [blau]
    Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
        ActiveSheet.Unprotect Password:=Passwort
        If Merk <> "" Then Range(Merk).Interior.ColorIndex = Farbe
        Merk = Target.Address
        Farbe = Target.Interior.ColorIndex
        Target.Interior.ColorIndex = 4
        ActiveSheet.Protect Password:=Passwort
    End Sub
    [/blau]
    Ich hänge Dir die Datei sicherheitshalber nochmal mit an.
     

    Anhänge:

Die Seite wird geladen...

Diese Seite empfehlen