Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Fester Wert abziehen
#1
Hallo zusammen,

ich möchte in einer Spalte einen Wert eintragen. Dieser Wert soll dann direkt mit einer anderen Zahl subtrahiert werden. Wie funktioniert das am besten??

Beispiel: Ich gebe in Spalte F12 2000 ein und dieser Wert wird direkt minus 116 gerechnet. Sprich wenn ich in der Spalte 2000 eingebe erscheint in der Spalte direkt 1884
Antworten Top
#2
Hi,

das wird wohl, wenn überhaupt, nur mit einem Makro zu lösen sein.

Aber wieso trägst du dann nicht gleich den richtigen Wert ein?
Gruß Günter
Jeder Fehler erscheint unglaublich dumm, wenn andere ihn begehen.
angebl. von Georg Christoph Lichtenberg (1742-1799)
Antworten Top
#3
Das war ja wie gesagt nur ein Beispiel.

Ich möchte nicht extra jedesmal rechnen, desewegen die Frage. Ich könnte das zwar auch lösen indem ich in einer extra Spalte sage "F12= Zahl-116" aber ich dachte man kann das auch direkt eingeben.
Antworten Top
#4
Das solltest du auch tun. Nur so könntest du eventuelle Tippfehler per se feststellen.
Gruß Günter
Jeder Fehler erscheint unglaublich dumm, wenn andere ihn begehen.
angebl. von Georg Christoph Lichtenberg (1742-1799)
Antworten Top
#5
Hallo,

keine Ahnung wo ich diesen Code gefunden habe.

Der Code gehört in das Modul des entsprechenden Tabellenblatts.

Code:
Private Sub Worksheet_Change(ByVal Target As Range)

'Hier den Bereich anpassen
    Set Target = Application.Intersect(Target, Range("A1:C10"))

    'Wenn nicht innerhalb des Bereiches wird die Prozedur verlassen
    If Target Is Nothing Then Exit Sub

    'Errorhandling aktivieren, um im Falle eines Fehlers die Ereignisse
    'am Ende wieder zu aktivieren
    On Error GoTo ErrorHandler

    'Ereignisse ausschalten, um das Change-Ereignis nicht erneut auszulösen
    Application.EnableEvents = False

    'Eine Range-Variable deklarieren
    Dim rngZelle As Range

    'jede Zelle innerhalb des Target-Bereiches durchlaufen
    For Each rngZelle In Target

  
    'Dein Code zur Bearbeitung der Zelle
    Target.Value = Target.Value - 0.3

    Next rngZelle
ErrorHandler:
    Application.EnableEvents = True   'Ereignisse wieder einschalten
End Sub

Der Code überwacht den Bereich von A1 bis C10 und zieht, in diesem Fall, immer den Wert von 0,3 ab.

Diese Werte müsstest du entsprechend anpassen.

Du kannst aber, wie bereits angemerkt, nicht so einfach die gemachten Eingaben nachvollziehen und man könnte Tippfehler schnell übersehen.
Gruß
Peter
Antworten Top
#6
Erst mal danke für die Hilfe aber leider funktioniert das nicht!!??

Muss ich beim speichern etc. noch auf irgendetwas achten??
Antworten Top
#7
Hallo,

doch, das funktioniert wie du an der angehängten Beispielsdatei sehen kannst.

Ich habe jetzt den Bereich der überwacht wird auf A1 bis A100 eingegrenzt und den von der gewünschten Betrag der abgezogen werden soll (116) berücksichtigt.


Angehängte Dateien
.xlsm   CEF_1.xlsm (Größe: 16,37 KB / Downloads: 2)
Gruß
Peter
Antworten Top
#8
Hat geklappt, vielen vielen Dank!!!

Ich hab aber direkt das nächste Problem Huh . Wenn ich für eine andere Spalte neue Abziehmasse eintrage bzw. ein Neues Makro erstellen möchte. Ich hab jetzt probiert das vorhandene zu kopieren und einfach Spalte und Maß abgeändert. Funktioniert aber nicht. Was kann ich da denn machen???
Antworten Top
#9
Hallöchen,

Worksheet_Change gibt es pro Blatt nur 1x. Einfach kopieren wird da also für ein Blatt nix. Entweder Du kopierst es auf ein anderes Blatt, oder der Code braucht eine Fallunterscheidung. Das könnte man unter Beibehaltung des Funktionsprinzips in etwa so lösen:

Code:
...
    Set Target = Application.Intersect(Target, Range("A1:C10"))

    'Wenn nicht innerhalb des Bereiches wird die Prozedur verlassen
    '--> noch nicht - erst mal in den anderen Bereich schauen! 
   If Target Is Nothing Then
            Set Target = Application.Intersect(Target, Range("D1:F10"))
            'und wenn im anderen Bereich auch nichts ist, dann verlassen
            If Target Is Nothing Then  Exit Sub
            '... Code für D1:F10
     Else
            '... Code für A1:C10
    End IF
...
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top


Gehe zu:


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