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

Code wird nicht ausgeführt

Code wird nicht ausgeführt
17.01.2022 11:52:00
Andreas
Hallo zusammen,
habe das Problem, dass ich einen Code nicht automatisch zum laufen bekomme.
Hoffe jemand weiß Rat :)
Hier meine Datei: https://www.herber.de/bbs/user/150433.xlsm
Es geht um den Code, der im Tabellenblatt "Planung" liegt.
Er ist dafür zuständig, dass im Tabellenblatt "fertig" Spalten verbunden werden.
Sobald in Spalte T im Tabellenblatt "fertig" (ab Spalte 3) ein Wert steht, sollen Spalten von X-EO verbunden werden.
Das funktioniert auch, aber nur wenn man manuell Werte in der Spalte T im Tabellenblatt "fertig" eingibt.
Wenn der Wert mit einer Formel ermittelt wird, funktioniert es leider nicht.
Kurz und knapp, alles funktioniert wie es soll außer dass der Code nicht auslöst wenn die Werte über die Formel in Spalte T ermittelt werden.
Woran liegt das, was mache ich falsch?
Vielen Dank schonmal vorab und einen guten Start in die neue Woche
Gruß Andreas

21
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Code wird nicht ausgeführt
17.01.2022 15:16:40
ralf_b
weil das Worksheet_change event nicht auf Berechnungen reagiert. möglicherweise findest du einen Weg das im Calculate Event unterzubringen. Nur da hast du kein Target zur Verfügung, um herauszufinden wo im Blatt etwas passiert ist.
AW: Code wird nicht ausgeführt
17.01.2022 16:13:24
Andreas
Hallo Ralf,
Danke für deine Rückmeldung.
Hab das mit Calculate auch schon versucht, das hat nicht funktioniert.
Vielleicht liegt es daran, dass ich kein Target angegeben habe.
Kannst du mir sagen, wie das funktioniert?
Danke vorab
Gruß Andreas
AW: Code wird nicht ausgeführt
17.01.2022 17:35:20
ralf_b
Target wird vom Event selbst zur Verfügung gestellt. Das kann man nicht einfach mit reinschreiben. Leider wird das Calculate vor dem Change abgearbeitet.
Deine Werte stammen auf Spalte AG in Planung. Dort könntest du über das Calculate von "Planung" die Werte checken und entsprechend dein Merge in "fertig" realisieren.
Anzeige
AW: Code wird nicht ausgeführt
18.01.2022 10:15:33
Andreas
Guten Morgen Ralf,
Danke für deine Unterstützung.
Wie genau meinst du das: "über das Calculate von "Planung" die Werte checken"
Sollte ich den Code aufteilen?
Gruß Andreas
AW: Code wird nicht ausgeführt
18.01.2022 18:50:35
ralf_b
Ok, ich habe ds mit dem Häkchen gelesen. dem Häkchen kannst du per Rechtsklick ein Makro zuordnen und alle deine Schritt damit abhandeln.
AW: da hatten wir die gleiche Idee!
18.01.2022 19:26:02
Piet
Hallo Ralf
wie ich sehe hattest du auch die Idee mit dem Häckchen.als Startauslöser. Das Target Makro machte aber immer nur eine Zeile, deshalb habe ich es umgeschrieben.
mfg Piet
AW: Code wird nicht ausgeführt
17.01.2022 17:03:43
Piet
Hallo Andreas
weil mich die Frage ob Target über Formeln aufgerufen werden kannn interessierte habe ich einfach mal eine Msgbox eingebuat, um zu sehen ob das Makro startet.
Das scheint NICHT zu klappen, aber eine höfliche Frage dazu: - meinst du Änderungen durch die Eingabe von Werten in Tabelle "Planung" in die grünen Zellen?
Mein Tipp, du kannst das Makro aus Tabelle "fertig" ja in ein Modul kopieren und es über die Eingabe in Tabelle "Planung" starten. Oder du kopierst das ganze Makro aus Tabelle "fertig" nach "Planung", gibst dort am Anfang eine With Klammer auf Tabelle "fertig" an, und startest es über die Eingabe in Tabelle Planung!
Mfg Piet
Anzeige
AW: Code wird nicht ausgeführt
18.01.2022 10:27:53
Andreas
Hi Piet, guten Morgen.
Danke für deine Vorschläge :). Bzgl. deiner Frage: Überschreibe mal die Zahlen in den Zellen T3-T7 im Tabellenblatt "fertig" mit einer "4". Wenn man das manuell einträgt, funktioniert das Makro nämlich und man sieht was es eigentlich machen sollte.
Im Tabellenblatt Planung ist leider schon ein Code. Hab deshalb versucht, deinen Tipp:
"du kannst das Makro aus Tabelle "fertig" ja in ein Modul kopieren und es über die Eingabe in Tabelle "Planung" starten."
anzuwenden.
Aber wie mache ich das: "und es über die Eingabe in Tabelle "Planung" starten"
Kannst du mir sagen, wie das funktioniert?
Vielen Dank vorab
Gruß Andreas
Anzeige
AW: Code wird nicht ausgeführt
18.01.2022 13:13:56
Piet
Hallo
ich weiss auch nicht genau ob meine Idee funktioniert? Am besten die Originaldatei kopieren und in der Kopie Datei mal testen!.
Kopiere den geänderten Code in das Tabellenblatt "Planung". In deinem Beispiel ist noch kein Worksheet_Change Makro drin!
Gestartet wird es über den Zellbereich E7-E8! Ausgeführt wird das Makro durch die With Klammer aber in der Tabelle "fertig"
Der Test wird zeigen ob meine Überlegung richtig ist? Ich bin gespannt....
mfg Piet

  • 
    Private Sub Worksheet_Change(ByVal Target As Range)
    Dim RNG As Range
    Dim St As Integer, En As Integer
    Dim Anz As Variant, i As Integer
    Dim Arr, MMax As Integer
    Set RNG = Range("E7:E8") 'Bereich, wo die Eingabe überwacht wird
    St = 24   'Start ab Spalte AD
    En = 144  'Ende bei Spalte ES
    MMax = 7  'maximaler Eingabewert
    Arr = Array(0, 120, 60, 40, 30, 24, 20, 17) 'Datensatz Nr beginnen mit 0
    If Not Intersect(RNG, Target) Is Nothing Then
    'Prüfen auf Ganzzahl und  MMax, Target  Int(Target)
    MsgBox "Falsche Eingabe"
    Exit Sub
    End Select
    With Application
    .ScreenUpdating = False 'verhindert das Bildschirmflackern
    .DisplayAlerts = False ' Schaltet die Warnmeldung aus
    End With
    'Reset
    With Worksheets("fertig")
    .Range(.Cells(Target.Row, St), .Cells(Target.Row, En)).UnMerge
    Anz = Arr(Target)
    For i = St To En Step Anz
    If i + Anz > En Then Anz = En - i + 1
    .Cells(Target.Row, i).Resize(1, Anz).Merge
    Next
    End With
    With Application
    .ScreenUpdating = True
    .DisplayAlerts = True
    End With
    End If
    End Sub
    

  • Anzeige
    AW: Code wird nicht ausgeführt
    18.01.2022 14:45:57
    Andreas
    Hey Piet,
    vielen Dank für deine Hilfe :)
    Leider konnte das mein Problem nicht Lösen =(
    Der Code hat zwar ausgelöst, wenn ich Werte in E7:E8 eingetragen habe, hat dann aber nur für Zeile 8 die Zellen verbunden.
    In meiner Spalte T wird ja wiedergegeben, wie viele Spalten auf den jeweiligen Zeile (3-37) verbunden werden sollen.
    Deshalb ist es schon wichtig, dass er die Werte pro Zeile aus dieser Spalte lesen kann.
    Das Ding ist ja, es funktioniert alles wie es soll, nur löst der Code nicht automatisch aus =(
    Hab meine Mappe ein bisschen angepasst: https://www.herber.de/bbs/user/150479.xlsm
    So soll der Ablauf sein:
    1. Im Tabellenblatt "Planung" in Zelle "AH27" wird das Häkchen gesetzt
    2. Durch Klick von Häkchen in Punkt 1, werden die Werte aus der Spalte "V" im Tabellenblatt "Planung" in Spalte "T" im Tabellenblatt "fertig" übergeben.
    3. Durch Punkt 2 sollte der Code auslösen, was er aber nicht macht.
    Man muss dafür die Werte, die im Tabellenblatt "fertig" in Spalte "T" stehen (hab sie mal gelb markiert) nochmals manuell überschreiben (mit den vor eingetragenen Werten). Dann löst der Code für die jeweilige Zeile aus.
    Was aber muss ich machen, dass der Code direkt auslöst, sobald man den Haken von Punkt 2 setzt und ich nicht die Werte nochmal abtippen muss.
    Für Lösungsvorschläge jeglicher Art bin ich super Dankbar und wünsche einen sonnigen Nachmittag
    Gruß Andreas
    Anzeige
    AW: Code wird nicht ausgeführt
    18.01.2022 13:21:57
    Piet
    Nachtrag: man könnte den Code auch über einen Doppelklick in der Tabelle "Planung" auslösen. Warten wir mal das Ergerbnis ab.
    AW: Code wird nicht ausgeführt
    18.01.2022 19:10:16
    Piet
    Hallo Andreas
    nachdem ich jetzt die Aufgabe offenbar verstanden habe machen wir das ganz anders, ohne Target Makro!
    Dein Auslöser ist doch das Setzen des Häckchens bei der Zelle AI27 auf Wahr oder Falsch! Dmit startet dieses neue Makro!
    Du musst dem Häckchen nur mit der rechten Maustaste das Makro zuweisen, das ist alles! Das Leben kann sooo einfach sein!
    Das neue Makro verbindet nicht nur eine Zeile wie Target, sondern alle Zeilen von Zeile 3 - 37 in einem Rutsch!
    mfg Piet

  • 'neues Makro mit Start über Häckchen Box
    
    Sub Zellen_verbinden_BeiKlick()
    Dim Wert As Variant
    Dim St As Integer, En As Integer
    Dim Anz As Variant, i As Integer
    Dim Arr, MMax As Integer, z As Long
    Wert = Worksheets("Planung").Range("AI27")
    '       If UCase(Wert) = "FALSCH" Then Exit Sub
    St = 24   'Start ab Spalte AD
    En = 144  'Ende bei Spalte ES
    MMax = 7  'maximaler Eingabewert
    Arr = Array(0, 120, 60, 40, 30, 24, 20, 17) 'Datensatz Nr beginnen mit 0
    '** Bitte prüfen ob Zelle E7 richtig ist?
    Wert = Worksheets("Planung").Range("E7").Value
    If Not IsNumeric(Wert) Or Wert > MMax Then MsgBox "Falsche Eingabe": Exit Sub
    With Application
    '.ScreenUpdating = False 'verhindert das Bildschirmflackern
    .DisplayAlerts = False ' Schaltet die Warnmeldung aus
    End With
    'Reset
    With Worksheets("fertig")
    .Range("Y3:EM37").UnMerge
    '1. Schleife für alle Zeilen von 3-37 ausfüllen
    For z = 3 To 37
    Anz = Arr(Wert)
    '2. Schleife um Zellen in dieser Zeile zu verbinden
    For i = St To En Step Anz
    If i + Anz > En Then Anz = En - i + 1
    .Cells(z, i).Resize(1, Anz).Merge
    Next i
    Next z
    End With
    With Application
    .ScreenUpdating = True
    .DisplayAlerts = True
    End With
    End Sub
    

  • Anzeige
    AW: Code wird nicht ausgeführt
    19.01.2022 17:35:03
    Andreas
    Hallo Piet,
    zuerst einmal vielen Dank für deine Mühe und Erklärungen =D
    Das Makro löst endlich aus!
    Ein Problem hab ich aber noch.
    '** Bitte prüfen ob Zelle E7 richtig ist?
    Wert = Worksheets("Planung").Range("E7").Value
    Die Zelle hab ich durch "V2" ausgetauscht. Dort wird nämlich ermittelt, wie viele Spalten verbunden werden sollen.
    Das Problem ist, dass jede Zeile einen eigenen Wert hat, welcher Excel sagt wie viele Spalten er verbinden soll.
    Für die nächste Zeile steht der Wert also in "V3" usw.
    Kann man das in der VBA irgendwie anpassen, dass er immer 1 hochzählt?
    Bzgl. deinem Tipp, dass das Häkchen da unten blöd liegt, da hast du Recht :D
    Ist aber Absicht, da soll nämlich erst drauf gedrückt werden, wenn man sich sicher ist, dass alles stimmt =)
    Einen schönen Feierabend dir
    Gruß Andreas
    Anzeige
    AW: Code wird nicht ausgeführt
    19.01.2022 17:45:50
    Andreas
    Kleiner Nachtrag, glaube diese Zeile ist wichtig:
    Set RNG = Range("T3:T37") 'Bereich, wo die Eingabe überwacht wird
    Das bezieht sich auf das Tabellenblatt "fertig"
    In Bereich "V3:V37" stehen aber nochmal die selben Werte
    oder
    die Spalte mit den selben Werten gibt es sonst auch im Tabellenblatt "Planung" da ist es dann "U2:U36"
    Gruß Andreas
    AW: Code wird nicht ausgeführt
    19.01.2022 19:33:48
    Piet
    Hallo Andreas
    es freut mich riesig das wir sooo weit gekommen sind, und das neue Makros das richtige macht. Probier bitte mal diese Code Änderung aus.
    Damit holen wir den Wert für Anz aus der Spalte T, jeweils für die richtige Zeile. Ich denke wenn das klappt könen wir den Thread abschliessen!
    Sorry, ich musste im Code Sub_Test und Ende angeben, weil sonst der Forum Server den Code -Nicht- annimmt!
    mfg Piet

  • 
    Sub Test
    '1. Schleife für alle Zeilen von 3-37 ausfüllen
    For z = 3 To 37
    Anz = .Cells(z, 20)  'Anzahl aus Spalte T nehmen
    '2. Schleife um Zellen in dieser Zeile zu verbinden
    For i = St To En Step Anz
    If i + Anz > En Then Anz = En - i + 1
    .Cells(z, i).Resize(1, Anz).Merge
    Next i
    Next z
    End Sub
    

  • Anzeige
    AW: Code wird nicht ausgeführt
    20.01.2022 10:44:01
    Andreas
    Guten Morgen Piet,
    fast perfekt :D
    Er berechnet für jede Zeile und verbindet die Spalten.
    https://www.herber.de/bbs/user/150533.xlsm
    Die Anzahl der Spalten die er verbindet stimmt jetzt nur leider nicht mehr.
    Denke das liegt daran, dass dieser Code-Teil jetzt fehlt: Anz = Arr(Wert)
    Steht z.B. in "T3" eine 7, verbindet er immer 7 Spalten.
    Über die Zeile Arr = Array(0, 120, 60, 40, 30, 24, 20, 17) 'Datensatz Nr beginnen mit 0
    Wurde eigentlich geregelt, wie viele Spalten verbunden werden sollen.
    Also bei einer
    1, verbinde 17 Spalten
    2, verbinde 20 Spalten
    3, verbinde 24 Spalten
    4, verbinde 30 Spalten
    5, verbinde 40 Spalten
    6, verbinde 60 Spalten
    7, verbinde 120 Spalten
    Denke also zu dem Codeschnipsel Anz = .Cells(z, 20) Der ihm ja sagt, hier musst du die Zahl von 1-7 auslesen
    Muss der Teil noch irgendwie wieder dazu oder? Anz = Arr(Wert) Und das würde ihm sagen so viele Spalten musst du anhand
    Codezeile Arr = Array(0, 120, 60, 40, 30, 24, 20, 17) 'Datensatz Nr beginnen mit 0 verbinden
    Wäre spitze, wenn du dir das nochmal angucken kannst =)
    Gruß Andreas
    Anzeige
    AW: Code wird nicht ausgeführt
    20.01.2022 13:04:45
    Piet
    Hallo Andreas
    Sorry, kleiner Denkfehler von mir, meine 1. Idee war sogar richtig! Ändere bitten nur diesen Teil, aus dem Array laden statt aus Spalte T
    Anz = Arr(.Cells(z, 20))

    mfg Piet
    AW: Code wird nicht ausgeführt
    20.01.2022 13:42:43
    Andreas
    PIEEEEEEEEEEEET!
    Es funktioniert =D
    https://www.herber.de/bbs/user/150543.xlsm
    Möchte mich ganz ganz herzlich bei dir Bedanken, für deine Geduld, deine Zeit und Arbeit.
    Du hast mir wahnsinnig geholfen. Hab selbst schon nicht mehr geglaubt, dass das überhaupt funktionieren kann wie ich es mir vorgestellt hab.
    Aber du hast das Gegenteil bewiesen - und mein Problem zu 100% gelöst.
    Du glaubst nicht wie Happy ich gerade bin =D
    Vielen vielen Dank!
    Gruß
    Andreas
    AW: Juhu, geschafft! Erfolgreich gelöst!
    20.01.2022 17:32:15
    Piet
    Hallo Andreas
    es freut mich sehr von dir zu hören das dein Problem jetzt endlich erfolgreich gelöst wurde. Das ist eine schöne Rückmeldung. Vielen Dank dafür!
    mfg Piet
    AW: Code wird nicht ausgeführt
    18.01.2022 19:12:01
    Piet
    Nachtrag - das neue Makro gehört in ein normales Modul. Es ist ja KEIN Target Makro!
    AW: Code wird nicht ausgeführt
    18.01.2022 19:18:27
    Piet
    Noch ein Tipp von mir:
    macht es nicht Sinn das Häckchen und den Button zum Speichern ganz nach oben im Bereich der Eingabe zu verlegen?
    Dann musst du nicht jedesmal durch das ganze Blatt scrollen. Wäre sicher einfacher. Der Gedanke kam mir gerade so spontan.
    mfg Piet

    311 Forumthreads zu ähnlichen Themen

    Anzeige
    Anzeige
    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Anzeige