Registriert seit: 15.09.2022
Version(en): Home and Business 2016
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!
Registriert seit: 26.09.2022
Version(en): 2019
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
Registriert seit: 21.12.2017
Version(en): MS 365 Family (6 User x 5 Geräte für jeden) Insider-Beta
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.
Folgende(r) 1 Nutzer sagt Danke an LCohen für diesen Beitrag:1 Nutzer sagt Danke an LCohen für diesen Beitrag 28
• derHoepp
Registriert seit: 11.04.2014
Version(en): Office 365
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
Registriert seit: 15.09.2022
Version(en): Home and Business 2016
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.
Registriert seit: 15.09.2022
Version(en): Home and Business 2016
Der Code hilft mir schon weiter.
Ich glaube damit komme ich an mein Ziel.
Danke!
Registriert seit: 26.09.2022
Version(en): 2019
27.09.2022, 14:33
(Dieser Beitrag wurde zuletzt bearbeitet: 27.09.2022, 14:35 von derHoepp.
Bearbeitungsgrund: Tippfehler gefunden
)
(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