Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Anzeige
Inhaltsverzeichnis

Autoberechnung bei bestimmten Wert

Forumthread: Autoberechnung bei bestimmten Wert

Autoberechnung bei bestimmten Wert
04.02.2025 09:35:11
kruemel
Hallo Liebe Excel Profis,
bräuchte mal etwas Hilfe. Ich habe mir ein Makro gebaut welches bei erreichen eines Wertes größer 0 automatisch auslösen soll
um eine weitere Berechnung (VBA) auszuführen. Nur irgendwo klemmt da was. Denn es löst bei jedem klick überall aus, obwohl ich
den Bereich begrenzt habe. Und ab und zu kommt auch ein Debugfehler.



Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim Zelle As Range
Dim rng As Range

Set rng = Sheets("üNr").Range("J5:J213")


Application.EnableEvents = False

For Each Zelle In rng
If Zelle > 0 Then Urlaubstag 'das SUB Urlaubstag soll starten

Next
Application.EnableEvents = True

End Sub


Vielen Dank schon mal
schöne Grüße
Kruemel
Anzeige

18
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Autoberechnung bei bestimmten Wert
04.02.2025 09:56:23
Onur
"obwohl ich den Bereich begrenzt habe" ?
Und womit glaubst du das getan zu haben ?
AW: Autoberechnung bei bestimmten Wert
04.02.2025 10:07:45
Onur
Du solltest dich mal mit der "Gebrauchsanweisung" beschäftigen, bevor du darauflosprogrammierst. :)
SelectionChange wird immer ausgelöst, sobald du die Auswhl änderst (z.B. eine andere Zelle anklickst).
Was du aber willst, dass es ausgelöst wird, sobald die Zelle in dem Bereich grösser als Null wird.
Wenn das manuell passiert (durch DEINE Eingabe in dem Bereich), dann ist das WorkSheet_Change-Event das Richtige. Da musst du aber sicherstellen, dass die Änderung wirklich die Zellen des Bereiches betrafen.
Wenn das aber per Formel geändert wird, kannst du nur das Worksheet_Calculate-Event benutzen, das immer ausgelöst wird, sobald etwas durch deine Änderung neu berechnet wurde.

Anzeige
AW: Autoberechnung bei bestimmten Wert
04.02.2025 11:09:47
kruemel
Hallo Onur,
ja Du hast wohl wieder recht. Nicht ausreichend schlau gemacht.
Ich probiere halt gerne rum, auch wenn ich nicht immer genau weiß wie alles zusammenspielt (siehe aktuelles Thema).
Das ist leider das Manko für Leute wie mich die keine Ahnung haben. Tut mir Leid dafür.
AW: Autoberechnung bei bestimmten Wert
04.02.2025 10:11:57
GerdL
Hallo,

du hast im Code den Auswahlbereich (Target) nicht eingeschränkt.

Dein weiteres Makro Urlaubstag startet bei jedem Zellenwert über 1 in J5:J213 wiederholt.
Ist dies beabsichtigt?

Wodurch ändern sich Werte in J5:J213? Per Eingabe oder per Formel?

Ggf. wäre es sinnvoller die Worksheet_Change - Prozedur oder die Worksheet_BeforeDoubleClick-Prozedur zu verwenden.


Gruß Gerd
Anzeige
AW: Autoberechnung bei bestimmten Wert
04.02.2025 10:56:52
kruemel
Moin Gerd,
ok und wie kann ich das Target begrenzen?
Naja es soll immer ausgelöst werden sofern der Zellenwert 1 erreicht, was durch eine Formel ausgegeben wird.
Gruß Kruemel
Ereignisse und Variablen
04.02.2025 11:33:06
{Boris}
Hi,

ok und wie kann ich das Target begrenzen?

Mal ein wenig Grundlage. Schau Dir mal den Prozedurrumpf an:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)


End Sub


Sobald eine Selektion geändert wird, "merkt" Excel das und löst das SelectionChange-Ereignis aus. Gleichzeitig übergibt Excel diesem Ereignis den auslösenden Bereich - und zwar mit der Range-Variablen Target (ByVal Target As Range)

Wenn also z.B. Zelle D1 selektiert wurde, dann enthält die Variable Target den Bereich D1. Wird der Bereich E1:F5 selektiert, dann enthält die Variable Target den Bereich E1:F5 usw. usw.
Und auf Basis dieser Information kann man dann mit verschiedenen Abfragen reagieren:

If Target.Address(0, 0) = "D1" Then

MsgBox "Es wurde Zelle D1 selektiert"
End If


oder

If Not Intersect(Target, Range("D1:D100")) Is Nothing Then

MsgBox "Die Auswahl beinhaltet irgendeine Zelle im Bereich D1:D100"
End If


Um nur mal 2 Beispiele zu nennen.

VG, Boris
Anzeige
AW: Ereignisse und Variablen
04.02.2025 19:51:23
kruemel
Hallo Boris,
vielen dank für die Infos und deine Erklärung ;-)
und wieder was für die Zukunft gelernt.

Danke und schöne Grüße
Kruemel
AW: Autoberechnung bei bestimmten Wert
04.02.2025 10:37:29
UweD
Hallo

a) Wenn es Formeln sind, die in dem Bereich zu 0 werden können, dann solltest du entweder den "Auslösebereich" begrenzen oder das Calculate-Event nutzen
Hier mal beide Möglichkeiten
Private Sub Worksheet_SelectionChange(ByVal Target As Range)

Dim Zelle As Range
Dim rng As Range, AlRng As Range
On Error GoTo Fehler
Const APPNAME = "SelectionChange"

Set rng = Sheets("üNr").Range("J5:J213")
Set AlRng = Sheets("üNr").Range("A5:C213") 'Auslösebereich

If Not Intersect(Target, AlRng) Is Nothing Then

For Each Zelle In rng
If Zelle > 0 Then
Application.EnableEvents = False
urlaubstag 'das SUB Urlaubstag soll starten
End If
Next
End If
'*** Fehlerbehandlung
Err.Clear
Fehler:
Application.EnableEvents = True
If Err.Number > 0 Then MsgBox "Fehler in Sub """ & APPNAME & """" & vbCrLf _
& "Fehlernummer: " & Err.Number & vbLf & Err.Description: Err.Clear
End Sub


!!oder !!

Private Sub Worksheet_Calculate()


Dim Zelle As Range
Dim rng As Range
On Error GoTo Fehler
Const APPNAME = "Calculate"

Set rng = Sheets("üNr").Range("J5:J213")
For Each Zelle In rng.SpecialCells(xlCellTypeFormulas, 23) 'nur Zellen mit Formel
If Zelle > 0 Then
Application.EnableEvents = False
urlaubstag 'das SUB Urlaubstag soll starten
End If
Next
'*** Fehlerbehandlung
Err.Clear
Fehler:
Application.EnableEvents = True
If Err.Number > 0 Then MsgBox "Fehler in Sub """ & APPNAME & """" & vbCrLf _
& "Fehlernummer: " & Err.Number & vbLf & Err.Description: Err.Clear
End Sub




b) sind es nur Eingabewerte, dann sofort das Change-Event nutzen und den Auslösebereich auf RNG festlegen

Auch kannst du den Rechenbereich auf "Nur Zellen mit Formel" reduzieren


Noch ein Tipp: schaltest du EnableEvents aus, solltest du eine Fehlerbehandlung verwenden, so dass im Fehlerfall immer wieder eingeschaltet wird.

LG UweD
Anzeige
AW: Autoberechnung bei bestimmten Wert
04.02.2025 11:04:05
kruemel
Moin Uwe,
danke erstmal für die Code´s.
Ich muss den zweiten benutzen da der Wert durch eine Formel ausgegeben wird.
Urlaubstag wird nicht ausgelöst, es kommt nur eine Fehlermeldung das eine Variable
oder eine Prozedur erwartet wird und kein Modul?
Habe "Call Urlaubstag" versucht, geht auch nicht.

gruß Kruemel
Anzeige
AW: Autoberechnung bei bestimmten Wert
04.02.2025 12:16:03
UweD
Hallo


Wenn ich mir deine hochgeladene Datei ansehe...

Du hast den Modulnamen und die Sub gleich benannt.

Da kommt Excel so nicht mit klar.
Benenne eins von Beiden um oder du musst Urlaubstag.Urlaubstag aufrufen.


LG UweD
AW: Autoberechnung bei bestimmten Wert
04.02.2025 20:00:14
kruemel
Hallo Uwe,
ja Danke für deinen Tipp. Das war mir so gar nicht bewusst.
Habe eins nun umbenannt, und es läuft alles so wie gewünscht.

Eine Frage hätte ich noch.
In den Spalten M:AF wird ja nach Auslösung von Urlaubstag was eingetragen.
Es wird immer die letzte freie Spalte gesucht und dort weiter eingetragen. Gibt es eine
Möglichkeit das in dem Bereich nach freien Zellen in der Reihe gesucht wird und dort dann was eingetragen wird?
Also nicht die erste oder letzte, sondern auch eine mittendrin, wenn eine frei ist.

schöne Grüße
Kruemel
Anzeige
AW: Autoberechnung bei bestimmten Wert
04.02.2025 11:08:42
GerdL
Moin,

probier mal den Code von Uwe Worksheet_Calculate im Modul der Tabelle "üNr"

und berichte.

Gruß Gerd
AW: Autoberechnung bei bestimmten Wert
04.02.2025 11:12:18
kruemel
da bin ich schon drin
AW: Autoberechnung bei bestimmten Wert
04.02.2025 11:23:41
GerdL
Du kannst deine Datei ins Forum hochladen.
Sensible Daten kannst du vorher weglassen oder ändern.
Anzeige
AW: Autoberechnung bei bestimmten Wert
04.02.2025 11:42:56
kruemel
Ja ok. hier ist sie

https://www.herber.de/bbs/user/175463.xlsm

In Blatt üNR werden in der Tabelle Nummern gesammelt bis in Spalte K der Wert 60 erreicht bzw. überschritten wird
und in Spalte J sich der Wert von 0 auf 1 ändert
Durch den Wert 1 soll das Marko Urlaubstag starten.

Gruß Kruemel
Anzeige
AW: Autoberechnung bei bestimmten Wert
04.02.2025 12:06:30
Yal
Hallo Stefan,

ja, Du hast die unübliche Idee gehabt, den Modul "Urlaubstag" zu benennen.

Entweder benennst Du den Modul in "mdlUrlaubstag" oder ruf die Sub mit
Urlaubstag.Urlaubstag

Also Modulname.Procedurename.

Erste Variante wäre zu bevorzügen.
Du kannst übrigens alle deine Subs in einem Modul sammeln. Es muss nicht unendlich verstreut werden.
Vermeide die Leerzeilen im Code (gringt für die Lesbarkeit quasi nichts), achte dafür auf einem sauberen Einrücken.

VG
Yal
Anzeige
AW: Autoberechnung bei bestimmten Wert
04.02.2025 20:03:28
kruemel
Hallo Yal,
auch Dir, vielen Dank für deinen Hinweis. Habe es umbenannt und es läuft nun.

Schöne Grüße
Kruemel
AW: Autoberechnung bei bestimmten Wert
04.02.2025 10:04:44
kruemel
hm ich dachte mit set range
Anzeige
Anzeige
Live-Forum - Die aktuellen Beiträge
Datum
Titel
14.05.2026 13:31:09
14.05.2026 09:50:42
13.05.2026 19:14:18