drbulla
Goto Top

Excel Zellwert in einem bestimmten Bereich per Klick (Doppelklick) um 1 erhöhen

Hi Folks,

ich hab ne Excelmappe, da wird für die Kassenabrechnung unseres Vereins der Verzehr eingetragen.

-Datum - Name - Betrag - Cola - Wasser - Bier - Snickers - Stück Kreide - etc.

-14.04. - Peters - 10,00 - 10

Bei Cola wurde ne 10 eingetragen,

Ich würde gerne per VBA, dass bei Klick auf der Zelle sich der Wert erhöht um 1 ..
sprich beim nächsten Klick oder Doppelklick? dort ne 11 steht ..

Die Lösungen die ich dazu gefunden habe (leider kann ich selber nicht programmieren) sind leider nicht so gut gewesen, da passierten dann Dinge wie: Auch bei "Enter" wurde die aktive Zelle erhöht, egal wo. Oder, bei jedem Klick (also auch in Bereichen wo nix war oder bei Datum ...) wurden erschienen einsen ...

Vielleicht ist es günstiger oder sicherer per Doppelklick das zu verwirklichen - was dann aber stört, ich rufe den Bearbeitungsmodus auf, sprich der Cursor blinkt dann in der Zelle ... das soll eigentlich auch nicht ....


Mag mir einer helfen .. ich weiß doch, für'n echten Programmierer n 2 -Zeilen und n Kinderspiel obendrein ;)))

Danke ..

Marco

Content-ID: 184182

Url: https://administrator.de/contentid/184182

Ausgedruckt am: 22.11.2024 um 19:11 Uhr

mak-xxl
mak-xxl 26.04.2012 um 18:10:48 Uhr
Goto Top
Moin Marco,

im VBA-Editor für das entsprechende Tabellenblatt bitte das folgende Makro eintragen, dann passiert das Inkrementieren bei jedem Doppelklick:

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    If Target.Address = "$D$2" Then Target.Value = Target.Value + 1  
    Target.Offset(1, 0).Select
End Sub

Die Angabe '$D$2' (Zelle 'D2') ist eventuell noch an die genaue Zelladresse anzupassen. Die Zeile 3 des Codes aktiviert nach dem Doppelklick die Zeile darunter, wenn andere Zeile/Spalte gewünscht - anpassen. Wenn die gleiche Zelle (also 'D2') aktiv bleiben soll, ersetzt Du die Zeile 3 des Codes durch

Cancel = True

Das Ganze für den Rechtsklick:

Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
    If Target.Address = "$D$2" Then Target.Value = Target.Value + 1  
    Cancel = True
End Sub

Rest wie oben. Wenn Doppel- und Rechtsklick den Colaverbrauch steigern sollen, dann einfach beide Makros stehen lassen.

BTW:
Zitat von @DrBulla:
... unseres Vereins der Verzehr eingetragen.
-Datum - Name - Betrag - Cola - Wasser - Bier - Snickers - Stück Kreide - etc.

Macht geschmeidige Stimmen ... face-wink

Freundliche Grüße und Prost von der Insel - Mario
DrBulla
DrBulla 26.04.2012 um 21:30:29 Uhr
Goto Top
Hi Mario.

Danke dir!!! Mir ist aufgefallen, dass ich die "Aufgabe" nicht präzise genug formuliert habe. Das ganze sollte natürlich für den Bereich gültig sein, indem die Zahlen erfasst werden. Also eher d2:h20 ... Ich bin gerade nicht am Rechner und kann es nicht ausprobieren, vermute aber, es nicht einfach mit dem absoluten D2 Bezug aus dem Code tauschen zu können...?


"n Stück Kreide"
Tja, was für ein Verein sind wir wohl face-smile
Kleiner Tipp: kein Chor face-wink

Ciao, Marco
mak-xxl
mak-xxl 26.04.2012 um 22:08:18 Uhr
Goto Top
Moin Marko,

kannst Du innerhalb des jeweils gewünschten Makros statt Zeile 2+3 so schreiben:

    If Application.Intersect(Target, Range("D2:H20")) Is Nothing Then Exit Sub  
    Target.Value = Target.Value + 1
    Cancel = True

Den Bereich auch wieder anpassen.

Freundliche Grüße von der Insel - Mario
DrBulla
DrBulla 26.04.2012 um 23:08:46 Uhr
Goto Top
Dankeeee ..

auf welche Insel darf ich dann ein leckeres Getränk rüberschicken?

Das funktioniert hervorragend!

Danke!
76109
76109 27.04.2012 um 10:32:25 Uhr
Goto Top
Hallo @all!

Für den Fall, dass es auch vorkommen kann, dass ein Mitglied wegfällt/hinzukommt oder sich das Angebot an Getränken und sonstigen Utensilien ändert, wäre es eventuell sinnvoll, wenn sich der Doppelklick-Bereich automatisch anpasstface-wink

Das wäre Anhand von Marios Codebeispiels z.B. so möglich:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    Dim RangeArea As Range
    
    With Range("A1").CurrentRegion  
        Set RangeArea = Cells(2, 4).Resize(.Rows.Count - 1, .Columns.Count - 3)
    End With
    
    If Not Application.Intersect(RangeArea, Target) Is Nothing Then
        Target = Target + 1:   Cancel = True
    End If
End Sub

Gruß Dieter
Biber
Biber 27.04.2012 um 13:52:33 Uhr
Goto Top
[OT]
Zitat von @76109:
Für den Fall, dass es auch vorkommen kann, dass ein Mitglied wegfällt/hinzukommt....
Die Wahrscheinlichkeit des Nach-hinten-Wegfallens eines Mitglieds steigt natürlich proportional zum Verzehr von alkoholischen Getränken.

...wäre es eventuell sinnvoll, wenn sich der Doppelklick-Bereich automatisch anpasst
Insbesondere sollte sich die Spaltenbreite oder noch besser der Zoomfaktor des angezeigten Arbeitsblattes an der konsumierten Alk-Menge orientieren.

Merke: Mit fortschreitendem Getränke-Konsum nähert sich die Schriftart automatisch WingDings SansSerif an...

Grüße und schönes Wochenende
[/OT]
76109
76109 27.04.2012 um 14:53:55 Uhr
Goto Top
[OT]
Hallo Biber!

Insbesondere sollte sich die Spaltenbreite oder noch besser der Zoomfaktor des angezeigten Arbeitsblattes
an der konsumierten Alk-Menge orientieren.
Das ich daran nicht gedacht habeface-smile

Wäre dann noch die Frage offen, ab welcher Alk-Menge der Zoomfaktor angepasst werden sollface-wink

Grüße Dieter und ebenfalls ein schönes Wochende
[/OT]