Ändern der Farbe bei Klick
#1
Hallo,

eine Zelle (Beispielhaft A1) soll bei einem Linksklick darauf "=B1-20" ausführen.
Zudem soll sich bei einem Klick die Farbe der Zelle ändern.

Bei einem Rechtsklick soll die Operation rückgängig gemacht werden und die alte Farbe wiederhergestellt werden.


Könnt ihr mir einen Vorschlag für einen Code machen?

Vielen Dank in voraus!
Antworten Top
#2
Hallo Oegli,

"problematisch" ist, dass ein Linksklick auf eine Zelle kein gesondert abfangbares Ereignis auslöst. Einzig die Änderung der Zellauswahl lässt sich überwachen. Das geschieht allerdings nicht nur durch Linksklick, sondern auch durch die Entertaste, die Tabtaste, Strg+A, Pfeiltasten, Pos 1, Ende, Bild auf und ab.

Insgesamt stellt sich bei solchen Anfragen aber immer die Frage: "was soll das überhaupt werden"? Warum soll die Zelle nicht einfach von Anfang an "B1-20" rechnen? Oder möchtest du den Bestand in Zelle B1 um 20 reduzieren, wenn irgendwo hin geklickt wird? Dafür ließe sich beispielsweise ein Button nutzen. Aber auch das ist meist nicht sehr sinnvoll. Denn Bestände sind fast immer definiert durch die Summe der Bewegungen. Statt also von einem Bestand 20 abzuziehen solltest du lieber mehrere Bewegungen erfassen, so dass der Bestand nur noch die Liste der Bewegungen auswertet.

Alles in allem ist ein wenig Hintergrundinformation also sicherlich hilfreich beim Helfen.

Viele Grüße
derHöpp
Antworten Top
#3
Sei gegrüßt, derHoepp! Toll, dass die Leistungsträger von OL hier herüberwechseln.

OT: Wir spielen bestimmt wieder das WM-Spiel (also: Ergebnisse wetten), oder? Mal schauen, ob sich hier auch Mitspieler finden.
WIN/MSO schicken angeblich alle 5 Sekunden Deinen Screen heim zu Papa (recall-Klausel). 
[-] Folgende(r) 1 Nutzer sagt Danke an LCohen für diesen Beitrag:
  • derHoepp
Antworten Top
#4
Hallo Oegli,

mit diesem Quelltext im Modul des Tabellenblattes* geht das:

Code:
Option Explicit

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim isect As Range
    Set isect = Application.Intersect(Target, Columns(1))
    If Not isect Is Nothing Then
        If Target = 0 Then
            Target = Cells(Target.Row, 2) - 20
            Target.Interior.Color = 255
        Else: Target = 0
            Target.Interior.Color = xlNone
        End If
    End If
End Sub

*) Wenn du mit der rechten Maustaste auf den Tabellenblattreiter klickst und dort Code anzeigen auswählst, kommst du in das richtige Modul. Das der Linksklick kein Ereignis auslöst, hat dir derHöpp bereits mitgeteilt. Das habe ich nun so gelöst, dass ein Mausklick auf eine leere Zelle die Berechnung auslöst. Wenn es in der Zelle einen Inhalt <> 0 gibt, wird der Zellinhalt und die Farge wieder gelöscht. Bitte testen, wenn du das in deine Datei nicht eingebaut bekommst, lade ich eine Beispieldatei hoch.
Viele Grüße
Klaus-Dieter
Der Erfolg hat viele Väter, 
der Misserfolg ist ein Waisenkind
Richard Cobden
Antworten Top
#5
Ein einfacher Button der die Zelle um 20 reduziert würde notfalls auch reichen.

Ich hätte halt gerne, dass man auch erkennen kann ob er an diesem Tag schon gedrückt wurde.
Es muss einmal am Tag von der Zelle "A1" -20 abgerechnet werden.

Wenn der Button beim Drücken die Farbe ändern würde hätte man Gewissheit das bereits jemand reduziert hat.
Antworten Top
#6
Der Code hilft mir schon weiter.

Ich glaube damit komme ich an mein Ziel.

Danke!
Antworten Top
#7
(27.09.2022, 13:28)Oegli schrieb: Es muss einmal am Tag von der Zelle "A1" -20 abgerechnet werden.
Dann empfehle ich dringend, einfach eine Datenliste zu erstellen, in der du die Spalten Datum und Abzugswert vorhältst. Da muss dann nur einmal täglich das Datum und -20 eingetragen werden. Dann siehst du auch sofort, an welchem Datum ein Eintrag fehlt. Mit Hilfe einer einfachen bedingten Formatierung lässt sich dann auch darstellen, ob ein Abgang schon erfasst wurde. Alternativ kann die Datengültigkeit dazu verwendet werden.

Bei mehr als 1 Mio möglicher Datenzeilen ist es sinnlos, Informationen in einer einzigen Zelle so zu verdichten, dass die Basisinformationen verloren gehen.

Viele Grüße
derHöpp
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 2 Gast/Gäste