Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1556to1560
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

Worksheet_Calculate

Worksheet_Calculate
09.05.2017 12:53:45
Capone
Hallo zusammen,
auf meinem Tabellenblatt soll jeder Formelwert in Spalte C neu berechnet werden, sobald sich ein Wert durch Eingabe oder Berechnung ändert. Dafür habe ich das Worksheet_Calculate Ereignis eingebaut, welches ein ComboBox_Change-Ereignis aufruft.
Auf einem anderen Worksheet funktioniert das wunderbar so, aber auf diesem (MF) hängt sich das Programm auf, sobald ich das Worksheet_Calculate Ereignis einfüge...
Findet jemand den Fehler?
Userbild

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

Betreff
Datum
Anwender
Anzeige
AW: Worksheet_Calculate
09.05.2017 13:53:08
yummi
Hallo Capone,
so wie du den Code geschrieben hast, kann das nur funktionieren, wenn MF auch das aktuelle Sheet ist und wenn da auch noch die combobox2 existiert.
ändere mal

Private Sub ComboBox2_Change()
in

Sub Combobox2_Change(Byval wks as worksheet)

und vor jedes Cells und Combobox2 (muss dann auch auf dem Tabellenblatt existieren) kommt wks. (mit Punkt)
Beim Aufruf kommt dann anstatt

call Combobox2_Change

dies

call Combobox2_Change ActiveSheet
so sollte es gehen, wenn nicht musst du mal ne Beispieldatei posten.
gruß
yummi
Anzeige
AW: Worksheet_Calculate
10.05.2017 11:18:30
Capone
Hi Yummi,
Das hat leider nicht funktioniert...
Ich habe eine Beispieldatei erstellt.
https://www.herber.de/bbs/user/113461.xlsm
Auf Blatt A funktioniert der Code so wie er soll, auf Blatt B noch nicht, dort fehlt das Worksheet_calculate Ereignis.
Die relevanten Zellen habe ich rot markiert. Bei einer Eingabe in die rote Zelle oben, soll die rote Zelle unten neu berechnet werden. Auf Blatt B tut sie das nur wenn ich die ComboBox ändere.(soll aber automatisch funktionieren)
Vielen Dank schonmal im Voraus!
AW: Worksheet_Calculate
11.05.2017 10:44:49
yummi
Hallo Capone,
ich versteh zwar nicht wann Du meinst, dass bei dir was automatisch berechnet wird und wann nicht, aber ich hab mal ein paar änderungen vorgenommen und ein paar Kommentare rangeschreiben.
Übrigens ist teilen in vba nciht : sondern / siehe Kommentar im Code
https://www.herber.de/bbs/user/113493.xlsm
Vlt bringt dich das ja weiter, ansonsten kann ich dir empfehlen breakpoints zu setzen und zeile für zeile zu debuggen, damit du siehst was passiert bzw. warum etwas nicht passiert.
gruß
yummi
Anzeige
AW: Worksheet_Calculate
12.05.2017 16:45:53
Capone
Hallo Yummi,
Ich habe die Beispieldatei nochmal vereinfacht:
https://www.herber.de/bbs/user/113542.xlsm
Bin mittlerweile davon überzeugt, dass es nichts mit Nomenklatur zu tun hat, sondern mit der Rechnung in der ComboBox1 Prozedur.
Ich beschreibe nochmal was genau passieren soll:
Wenn ich in der Combobox statt 19/6 (bitte Zahlen ignorieren) 37/3,8 auswähle, wird der Wert in der unteren roten Zelle neu berechnet. Dazu wird auch der Wert in der oberen roten Zelle benutzt.
Jetzt soll aber der Wert in der unteren roten Zelle auch neu berechnet werden, wenn ich den Wert in der oberen roten Zelle per Eingabe ändere, z.b. von 5 auf 10. Und das soll passieren, ohne das die ComboBox verändert wird.
Dafür habe ich das worksheet calculate-Ereignis eingefügt. Sobald ich aber in dieses "Call Combobox1_Change" einfüge, hängt sich excel auf und ich muss das Programm neu starten...
Hoffe du verstehst mein Problem jetzt besser! Danke für deine Hilfe, lg Capone
Anzeige
AW: Worksheet_Calculate
15.05.2017 09:16:20
yummi
Hallo Capone,
ich habe da mal was gebastelt, was nicht zu einer Dauerschleife führt. Der Code gehört in dein Tabellenblatt

Option Explicit
Dim bsperre As Boolean
Private Sub ComboBox1_Change()
If bsperre = False Then
bsperre = True
Berechnung
End If
End Sub
Function Berechnung()
Dim i As Integer
For i = 93 To 103
If Me.ComboBox1.Text = ActiveSheet.Cells(i, 2) Then
ActiveSheet.Cells(32, 3) = ActiveSheet.Cells(i, 7)
ActiveSheet.Cells(33, 3) = ActiveSheet.Cells(i, 12)
ActiveSheet.Cells(34, 3) = ActiveSheet.Cells(i, 13)
If ActiveSheet.Cells(55, 3) 
Gruß
yummi
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige