Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1528to1532
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

VBA

VBA
08.12.2016 09:01:17
Daniel
Lieber Forum-Teilnehmer
Ich stehe gerade etwas auf dem Schlauch, vielleicht könnt ihr mir da helfen.
Mein Ziel: Ich möchte, dass in einem Tabellenblatt eine MsgBox erscheint, wenn die SUMME von G72:H72 bei manueller Eingabe den Wert von K72 überschreitet. K72 nimmt den Wert via Formel aus D55.
Die Prüfung soll so ablaufen, dass die MsgBox mit Knopfdruck auf einen OK-Button ausgeblendet werden kann, dann aber wieder erscheint, sobald G72:H72 bei anderer/neuer Eingabe wieder den Wert von K72 überschreitet. Mithin soll die Prüfung gewissermassen dauernd im Hintergrund mitlaufen, denn die (manuelle!) Eingabe bei G72:H72 kann sich verändern (Eingabe/Löschen der dortigen Zahlen).
Ich habe es mal zu programmieren versucht, stehe jedoch an (erst Anfänger-Kenntnisse in VBA). Ein Problem habe ich insbesondere mit der Zuweisung der Zellen (Range(Sum("G72:H72")) und der Setzung in Relation zu K72.
Was rät Ihr mir bzw. hat jemand einen Code-Vorschlag?

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA
08.12.2016 09:19:08
Max2
Hallo vielleicht so:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim g, h, k
g = Cells(72, 7).Value
h = Cells(72, 8).Value
k = Cells(72, 11).Value
If k > (g + h) Then
k = Cells(55, 4).Value
Cells(72, 11).Value = k
End If
End Sub

Das kommt dann in den Code des Besagten Tabellenblattes.
Zur Erklärung: du gibst den Variablen Werte aus den Zellen um die es geht und rechnest dass dann im Code aus, Worksheet_Change(..) ist wichtig da dadurch bei jedem eintippen einer Zahl der Code ausgeführt wird
Ist nicht getestet!
AW: VBA
08.12.2016 09:22:30
UweD
Hallo
das ginge so...
- Rechtsclick auf den Tabellenblattreiter
- Code anzeigen
- Diesen Code dort reinkopieren
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Range("G72: H72"), Target) Is Nothing Then
        If WorksheetFunction.Sum(Range("G72: H72")) > Range("K72") Then
            MsgBox "Summe zu hoch"
        End If
    End If
End Sub

LG UweD
Anzeige
AW: VBA
08.12.2016 10:06:32
Daniel
Hallo UweD
Herzlichen Dank! Ich habe den Code im VBA-Projektordner in das entsprechende Tabellenblatt reinkopiert, jedoch erscheint die MsgBox nicht. Dasselbe Problem hat ich auch mit vorhergehenden Versuchen.
Hast du eine Idee, woran das liegen könnte? (Da es momentan noch eine vertrauliche Tabelle ist, darf ich sie eben nicht hochladen)
AW: Funktioniert doch ...
08.12.2016 10:21:13
Dieter(Drummer)
Hallo Daniel,
hier eine Testdatei für dich, die einwandfrei mir dem Makro funktioniert, natürlich kommt die MsgBox nur, wenn G72 + H72 eine Summe hat, die größer als K72 ist:
https://www.herber.de/bbs/user/109920.xlsm
Gruß, Dieter(Drummer)
Anzeige
AW: VBA
08.12.2016 10:09:45
Daniel
Hi
das kannst du einfacher ohne VBA erreichen.
Bspw durch diese Formel in einer Nachbarzelle:
=Wenn(Summe(G72:H72)>K72;"Überschreitung";"")
Das hat den Vorteil, dass die Meldung solange stehen bleibt, bis die Werte korrekt eingetragen wurden.
Wenn es gar nicht möglich sein, soll, eine größere Summe einzugeben, dann gehe so vor:
- markiere die Zellen G72:H72
- klicke DATEN - DATENTOOLS - DATENÜBERPRÜFUNG und richte die Datenüberprüfung mit diesen Vorgaben ein:
- Einstellungen - Zulassen: Benutzerdefiniert
- Einstellungen - Formeln: =Summe(G72:H72) - Fehlermeldung - Fehlermeldung: Dein Hinweistext (falls erforderlich)
hierbei wird schon die Eingabe verhindert.
(hätte aber zur Folge, dass man die zulässige Kombination "Wert größer K72 + Negativer Wert" nur dann eingeben kann, wenn man den negativen Wert zuerst eingibt.)
Gruß Daniel
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige