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

Sub funktioniert nur manuell ausgeführt

Sub funktioniert nur manuell ausgeführt
11.09.2018 16:19:09
David
Hallo,
da ich nun einige Zeit an diesem Problem sitze und keine Lösung finde, dachte ich mir frage ich hier um Hilfe.
Also ich habe einen Sub der beim Einfügen einer neuen Zeile in bestimmten Bereichen, diese mit entsprechenden Formeln automatisch auffüllen soll. Wenn ich in diesem Bereich eine neue Zeile einfüge und das Makro manuell starte, dann klappt auch alles wunderbar, wie ich es mir vorstelle. Der Sub macht was er soll und das sehr zügig( Schön und gut, jetzt würde ich gern auf das manuelle Ausführen verzichten.
Dafür habe ich im Arbeitsblatt-Modul folgenden Sub eingetragen:

Private Sub Worksheet_Change(ByVal Target As Range)
Call InsertLine.InsertNewLine
End Sub


Füge ich nun eine neue Zeile ein, dann läuft der Sub auch an. Und fügt auch die richtigen Formeln ein, allerdings braucht er dafür unglaublich lange(>25sek), zusätzlich sind alle anderen sich in der Tabelle befindlichen Werte(aus Formeln) nicht berechnet und stehen auf #WERT, beim manuellen ausführen ist dies nicht der Fall. Das lässt sich zwar durch ein Aktualisieren beheben, stört aber. Automatisch am Ende des Subs Aktualisieren funktioniert nicht bzw. liefert gleiches Ergebnis. Habt ihr eine Idee woran das liegen könnte, vor allem der große Zeitliche Unterschied? Ich bin für jede Hilfe und Anregung dankbar.
Hier auch der eigentliche Sub. Insofern gekürzt das nur eine Formel eingefügt wird, real sind es 18.

Sub InsertNewLine()
Dim linecounter, areacontroller, blockcontroller As Integer
Dim checkend As String
linecounter = 1
areacontroller = 0
blockcontroller = 0
checkend = "empthy"
Do Until StrComp(checkend, "Insert additional lines above this line only! LastBlock",  _
vbTextCompare) = 0
If ThisWorkbook.Sheets("Efficiency_Status_Bid_incl_RWD").Cells(linecounter, 2)= "Insert  _
additional lines below this line only!" Then
areacontroller = 1
linecounter = linecounter + 1
ElseIf ThisWorkbook.Sheets("Efficiency_Status_Bid_incl_RWD").Cells(linecounter, 2) = "Insert  _
additional lines above this line only!" Then
areacontroller = 0
End If
If areacontroller = 1 And ThisWorkbook.Sheets("Example").Cells(linecounter, 3) = "" Then
ThisWorkbook.Sheets("Example").Cells(linecounter, 3).FormulaLocal = "=WENN(D" &  _
linecounter & ">E" & linecounter & ";1;WENN(E" & linecounter & ">F" & linecounter & ";" & """" & _
"ERROR" & """" & ";0))"
End If
linecounter = linecounter + 1
checkend = ThisWorkbook.Sheets("Example").Cells(linecounter, 2).Value
Loop
End Sub


7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Sub funktioniert nur manuell ausgeführt
11.09.2018 16:27:51
Torsten
warum rufst du die Sub mit
Call InsertLine.InsertNewLine

auf und nicht mit
Call InsertNewLine

?
AW: Sub funktioniert nur manuell ausgeführt
11.09.2018 16:37:45
David
Hallo Torsten,
das war Kosmetik, weil ich auch wenn es meines Wissen nach keinen Unterschied macht, alle Möglichkeiten ausprobieren wollte um dem Problem auf die Schliche zu kommen. Das Weglassen des Modulnamens ändert aber nichts am Ergebnis.
Danke trotzdem schon mal.
AW: Sub funktioniert nur manuell ausgeführt
11.09.2018 16:37:52
daniel
Hi
hast du bedacht, dass die Event-Makros wie "Worksheet_Change" auch dann ausgeführt werden, wenn die Änderungen auf dem Blatt durch ein Makro ausgeführt werden?
auf diese Weise kann sich das Change-Event_Makro sogar selbst aufrufen und wenns dumm läuft, landet man in einer Endlosschleife, die nur dadurch beendet wird, dass die Internen Speicher irgendwann vollaufen.
Die Ausführung der Eventmakros kann man mit dem Befehl
Application.EnableEvents = False

verhindern, dh nach diesem Befehl werden keine Eventmakros mehr ausgeführt.
Beachte dass diese Einstellung nach Makroende erhalten bleibt, dh man am Schluss dann noch irgendwann den Befehl ausführen:
Application.EnableEvents = True
Gruß Daniel
Anzeige
AW: Sub funktioniert nur manuell ausgeführt
11.09.2018 16:41:02
David

Hi
hast du bedacht, dass die Event-Makros wie "Worksheet_Change" auch dann ausgeführt werden,  _
wenn die Änderungen auf dem Blatt durch ein Makro ausgeführt werden?
auf diese Weise kann sich das Change-Event_Makro sogar selbst aufrufen und wenns dumm läuft,  _
landet man in einer Endlosschleife, die nur dadurch beendet wird, dass die Internen Speicher irgendwann vollaufen.

Hallo Daniel,
vielen vielen Dank, da war das Problem.
Fehlerbehandlung wichtig ...
11.09.2018 16:50:26
Matthias
Hallo David
dh man am Schluss dann noch irgendwann den Befehl ausführen:
Application.EnableEvents = True

Aber nicht nur am Schluss, David.
Auch wenn es zu einen Fehler kommt(warum auch immer)
sollte man Application.EnableEvents wieder auf True setzen.
Deshalb muss zwingend eine Fehlerbehandlung mit in den Code, der bei Fehler
die Events wieder einschaltet.
Gruß Matthias
Anzeige
AW: Sub neu strukturiert
11.09.2018 18:24:11
Gerd
Moin Marcel!
Sub InsertNewFormulas()
Const cstrBelow = "Insertadditional lines below this line only!"
Const cstrAbove = "Insert additional lines above this line only!"
Const cstrEnd = "Insert additional lines above this line only! LastBlock"
Dim line As Long
Dim wsStatus As Worksheet, wsExample As Worksheet
line = 2
Set wsStatus = ThisWorkbook.Sheets("Efficiency_Status_Bid_incl_RWD")
Set wsExample = ThisWorkbook.Sheets("Example")
Do
If wsExample.Cells(line, 3) = "" Then
If wsStatus.Cells(line - 1, 2) = cstrBelow Then
If wsStatus.Cells(line, 2)  cstrAbove Then
wsExample.Cells(line, 3).FormulaLocal = "=WENN(D" & line & ">E" & line & ";1;" _
& "WENN(E" & line & ">F" & line & ";" & """" & "ERROR" & """" & ";0))"
End If
End If
End If
line = line + 1
Loop Until wsExample.Cells(line, 2).Value = cstrEnd
Set wsStatus = Nothing: Set wsExample = Nothing
End Sub
Gruß Gerd
Anzeige
AW: Sorry, @David o.T.
11.09.2018 18:30:24
Gerd

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige