Office: Probleme beim ausführen eines Makros mit Formelbezug

Helfe beim Thema Probleme beim ausführen eines Makros mit Formelbezug in Microsoft Excel Hilfe um das Problem gemeinsam zu lösen; Hallo! Das Makro springt bisher nur dann an, wenn eine manuelle Änderung im Bereich L7:L96 vorgenommen wird, die die Bedingung erfüllt. Wenn es... Dieses Thema im Forum "Microsoft Excel Hilfe" wurde erstellt von Gomorra, 28. August 2008.

  1. schatzi Super-Moderator

    Probleme beim ausführen eines Makros mit Formelbezug


    Hallo!

    Das Makro springt bisher nur dann an, wenn eine manuelle Änderung im Bereich L7:L96 vorgenommen wird, die die Bedingung erfüllt.
    Wenn es ständig überprüfen soll, ob irgendwo im Bereich R7:R96 ein "x" steht, dann böte sich eher ein Ereignis an, das jeweils alle diese Zellen per For-Each-Schleife abfragt, vielleicht sogar ein SelectionChange-Ereignis. Dann sind zwar bestimmt 99% aller Berechnungen für den Mülleimer, aber du bist ständig auf dem neuesten Stand.
     
    schatzi, 28. August 2008
    #16
  2. Gomorra Erfahrener User
    ..

    wie funktioniert denn das?

    Das artet ja langsam aus...

    Grüße
     
    Gomorra, 28. August 2008
    #17
  3. schatzi Super-Moderator
    Hallo!

    Das könnte dann (je nach Ereignis) so aussehen:
    Code:
    Private Sub Worksheet_Change(ByVal Target As Range)
    Dim z As Range
    For Each z In Range("R7:R96")
    If z = "x" Then MsgBox "Es ist ein x in R" & z.Row
    Next z
    End Sub
     
    schatzi, 28. August 2008
    #18
  4. Gomorra Erfahrener User

    Probleme beim ausführen eines Makros mit Formelbezug

    Okay, besten Dank, funktioniert gut..

    nur noch eine kleine Sache,

    Dieses Hinweisfeld "MsgBox "Es ist ein x in R" & z.Row" taucht immer dreimal auf (was man auch dreimal wegklicken muß). weißt du woran das liegt?

    Grüße
     
    Gomorra, 29. August 2008
    #19
  5. schatzi Super-Moderator
    Hallo!

    Es werden nun jedesmal alle Zellen des Bereichs geprüft.
    Wenn hier also insgesamt drei "x" stehen, dann kommen entsprechend auch drei Meldungen.
     
    schatzi, 29. August 2008
    #20
  6. miriki Erfahrener User
    Ich schätze, das passiert nicht für einen z.row 3x, sondern für 3 verschiedene, oder?

    Ich würde die for..each etwas umstellen, daß:

    a) nach der ersten msgbox die Schleife abgebrochen wird
    b) der Cursor auf die Zelle positioniert wird, die für das "x" verantwortlich ist

    Weil:
    Die msgbox wird (selectionchange) nach jedem Bewegen des Cursors aufgerufen. Wenn also eine falsche Eingabe zu dem "x" führt, wird fortan bei jedem Mausklick auf eine andere Zelle und bei jeder Cuirsortaste wieder und wieder die msgbox angezeigt, selbst dann, wenn man nach falscher Eingabe mit dem Cursor zurück gehen will, um zu korrigieren. (SelectionChange wird, wenn ich mich recht entsinne, nicht bei Positionierung per Makro aufgerufen.)

    Alternativ, aber sehr aufwendig:
    a) abbruch nach 1. msgbox
    b) merken Boolean-Array), für welche Zelle die Warnung bereits erfolgte
    c) erneute msgbox nur, wenn Warnung nicht bereits vorher erfolgte

    Je nachdem, wie strikt Du dafür sorgen willst, daß der Wert korrigiert wird...

    Und vielleicht allgemein zur Optimierung des Ereignisses: Du könntest eine Zelle mit zählenwenn(r7:r96;"x") belegen, um die for..each nur dann zu durchlaufen, wenn dort ein Wert >0 steht. Sonst kann es Dir im Zweifelsfall passieren, daß bei jeder Cursorbewegung knapp 100x die Schleife durchlaufen wird, ohne daß es notwendig wäre.

    Gruß, Michael

    Edit: Ok, nach nochmaligem Lesen, nur change, nicht selectionchange. Das reduziert die Aufrufe der Schleife zwar um einiges, ändert aber nichts an der grundsätzlichen Problematik.
     
  7. Gomorra Erfahrener User
    problem gefunden,

    Das Problem liegt in anderen
    Private Sub Worksheet_Change(ByVal Target As Range) Befehlen, die ich drin habe, irgendwie vertragen die sich nicht.

    Auf diesem Gebiet bin ich echt new, kann ich unterschiedliche Namen geben und diese voneinander trennen?

    Sowas wie "private Sub Worksheet1_change"

    Oder muß ich alle Befehle unter einem zusammenfassen?

    grüße
     
    Gomorra, 29. August 2008
    #22
  8. schatzi Super-Moderator

    Probleme beim ausführen eines Makros mit Formelbezug

    Hallo!
    Ja, genau!
    Denn in Excel gilt (frei nach "Highlander"): Es kann nur einen geben!

    edit: Vielleicht hilft auch dies:

    Private Sub Worksheet_Change(ByVal Target As Range)
    Dim z As Range
    Application.EnableEvents = False
    For Each z In Range("R7:R96")
    If z = "x" Then MsgBox "Es ist ein x in R" & z.Row
    Next z
    Application.EnableEvents = True
    End Sub
     
    schatzi, 29. August 2008
    #23
  9. Gomorra Erfahrener User
    Leider behebt das auch nicht das Problem...

    ich zeige mal kurz den Kauderwelsch hier auf

    -------------------------------------------------------------------------------------
    Private Sub Worksheet_Change(ByVal Target As Range)

    If Target.Count = 1 Then

    If Not Intersect(Target, Range("T7:AD95")) Is Nothing And Target <> "" Then
    Dim Letzte As Integer

    Letzte = IIf(Cells(Target.Row + 993, 60) = "", 59, Cells(Target.Row + 993, Columns.Count).End(xlToLeft).Column)
    Cells(Target.Row + 993, Letzte + 1) = Range("y3")
    Cells(Target.Row + 993, Letzte + 2) = Cells(6, Target.Column)

    End If




    If Not Intersect(Target, Range("L7:L95")) Is Nothing And Target <> "" Then
    Dim Letztes As Integer

    Letztes = IIf(Cells(Target.Row + 1993, 60) = "", 59, Cells(Target.Row + 1993, Columns.Count).End(xlToLeft).Column)
    Cells(Target.Row + 1993, Letztes + 1) = Range("y3")
    Cells(Target.Row + 1993, Letztes + 2) = Cells(Target.Row, 12)

    End If




    If Not Intersect(Range("U5:U95"), Target) Is Nothing Then
    If Target = "x" Then MsgBox ("Sind Sie sicher mit dieser Beurteilung?")

    End If




    If Not Intersect(Range("V5:V95"), Target) Is Nothing Then
    If Target = "x" Then MsgBox "Sind Sie sicher mit dieser Beurteilung?"

    End If




    End If




    Dim z As Range
    Application.EnableEvents = False
    For Each z In Range("R7:R96")
    If z = "x" Then MsgBox "Es ist ein x in R" & z.Row
    Next z
    Application.EnableEvents = True


    End Sub

    Die letzte Zeile ist der Befehl, er macht auch alles, nur leider immer dreimal, sprich er gibt dreimal die warnung: "achtung R7 ein x"

    Einmal würde mir ganz und gar reichen Probleme beim ausführen eines Makros mit Formelbezug *:p*

    Danke..
     
    Gomorra, 29. August 2008
    #24
  10. schatzi Super-Moderator
    Hallo!

    Dann probier mal, die Eventsperre in die ersten beiden Abfragen zu setzen:

    If Not Intersect(Target, Range("T7:AD95")) Is Nothing And Target <> "" Then
    Dim Letzte As Integer
    Application.EnableEvents = False
    Letzte = IIf(Cells(Target.Row + 993, 60) = "", 59, Cells(Target.Row + 993, Columns.Count).End(xlToLeft).Column)
    Cells(Target.Row + 993, Letzte + 1) = Range("y3")
    Cells(Target.Row + 993, Letzte + 2) = Cells(6, Target.Column)
    Application.EnableEvents = True
    End If

    If Not Intersect(Target, Range("L7:L95")) Is Nothing And Target <> "" Then
    Dim Letztes As Integer
    Application.EnableEvents = False
    Letztes = IIf(Cells(Target.Row + 1993, 60) = "", 59, Cells(Target.Row + 1993, Columns.Count).End(xlToLeft).Column)
    Cells(Target.Row + 1993, Letztes + 1) = Range("y3")
    Cells(Target.Row + 1993, Letztes + 2) = Cells(Target.Row, 12)
    Application.EnableEvents = True
    End If
     
    schatzi, 29. August 2008
    #25
  11. Gomorra Erfahrener User
    Perfekt!!!

    Danke, mal wieder^^

    was ist denn eine Eventsperre?
     
    Gomorra, 29. August 2008
    #26
  12. schatzi Super-Moderator
    Hallo!

    Das Change-Ereignis (Change-Event) wird ausgelöst, wenn eine Änderung im Blatt vorgenommen wird.
    Die ersten beiden Abfragen nehmen eine Änderung im Tabellenblatt vor. Dadurch wird das Change-Ereignis aus sich selbst heraus nochmals aufgerufen. Da eine dieser Abfragen zwei Änderungen vornimmt, wird es also insgesamt dreimal durchlaufen (1x normal plus 2x extra).
    Da du das verhindern möchtest, schaltest du während des Durchlaufs dieser Abfragen die Event-Auslösung temporär ab.
     
    schatzi, 29. August 2008
    #27
Thema:

Probleme beim ausführen eines Makros mit Formelbezug

Die Seite wird geladen...
  1. Probleme beim ausführen eines Makros mit Formelbezug - Similar Threads - Probleme ausführen Makros

  2. Probleme mit Summewenn bei neuer EXCEL Version

    in Microsoft Excel Hilfe
    Probleme mit Summewenn bei neuer EXCEL Version: Hallo zusammen, ich bin ratlos. In meinem alten EXCEL sheet hat die Funktion =SUMME(WENN(JAHR($E$7:$E$54)=2019;$G$7:$G$54)) super funktioniert. Mit der aktuellen EXCEL Version jetzt aber nicht...
  3. Office 365 / Word 365 / Win 10 / Probleme

    in Microsoft Word Hilfe
    Office 365 / Word 365 / Win 10 / Probleme: Also wenn ich mein 1.200 Seiten Dokument öffne, im Gegensatz zu Win 7 / Office 2010 / Word, geht das Öffnen langsamer Es dauert in der Frühe bis zu 10 Sekunden dass es öffnet und am Nachmittag an...
  4. Probleme mit Anführungszeichen

    in Microsoft Word Hilfe
    Probleme mit Anführungszeichen: Hallo Leute, ich habe unter Word unter Windows 10 folgendes Problem: Ich habe mehrere Dokumente in der Einstellung mit geraden Anführungszeichen geschrieben. Nun möchte ich sie nachträglich in...
  5. Probleme mit Autoupdate

    in Microsoft Word Hilfe
    Probleme mit Autoupdate: Liebe alle, nach Umstieg von Office 2011 für Mac auf Office 2016 für Mac kam täglich der Autoupdater, auch nachdem ich alle Programme auf den neuesten Stand gebracht habe. Nervig. Deshalb habe ich...
  6. Probleme mit WENN(ODER - Verknüpfung

    in Microsoft Excel Hilfe
    Probleme mit WENN(ODER - Verknüpfung: Hallo, in den Spalten A und B sollen Ziffern stehen, wobei entweder A oder B ausgefüllt ist. In C soll in Anhängigkeit des Wertes in A oder B eine Auswertung gefahren werden: Wenn A < 5...
  7. Probleme Marko Ausführung

    in Microsoft Excel Hilfe
    Probleme Marko Ausführung: Hallo, ich versuche derzeit ein einfaches Berechnungsformular zu erstellen. Hinter dem Formular, das einfach zu verwenden sein sollte, liegt ein Datenblatt mit ausgewerteten Daten. Ich habe ein...
  8. Probleme mit Makros in Access 2016

    in Microsoft Access Hilfe
    Probleme mit Makros in Access 2016: Ausgangslage: 2 Formulare mit jeweils 1 Schaltfläche. Formular 1 ist geöffnet. Mit der Schaltfläche in Formular 1 soll per Makro Formular 2 geöffnet und die Schaltfläche in Formular 1...
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden