Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1600to1604
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

Plausibilitätsprüfung mit Intersect

Plausibilitätsprüfung mit Intersect
11.01.2018 11:04:49
Hans-Jürgen
Hallo Leute,
ich betreibe momentan noch eine recht aufwändige Plausibilitätsprüfung in meinem Makro (beim Betätigen einer Schaltfläche wird erstmal geschaut, ob alles richtig ist)
Nun bin ich über den Codeschnipsel
  • Private Sub Worksheet_Change(ByVal Target As Range) If Not Application.Intersect(Target, Range("A1:A3")) Is Nothing Then MsgBox "Im Bereich A1:A3 wurde eine Zelle geändert!" End If End Sub

  • auf diese viel elegantere Art und Weise aufmerksam geworden und das funktioniert auch prima. Einziger Wermutstropfen: Dieses Signal kommt auch, wenn ein Makro diese Zellen ändert. Kann man irgendwo über einen Flag abfragen, ob gerade ein Makro läuft, damit man diese Meldung dann unterdrücken kann?
    Vielen Dank und viele Grüße
    Hans-Jürgen

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

    Betreff
    Datum
    Anwender
    Anzeige
    AW: Plausibilitätsprüfung mit Intersect
    11.01.2018 11:08:23
    Sepp
    Hallo Hans-Jürgen,
    schreib am Beginn deines Makros
    Application.EnableEvent = False
    
    un am Ende
    Application.EnableEvent = True
    
    damit schaltest du die Ereignis-Makros aus und der Change-Code wird nicht ausgeführt.
    Gruß Sepp

    AW: Plausibilitätsprüfung mit Intersect
    11.01.2018 11:10:24
    Hans-Jürgen
    Super, dankeeee !
    ein s fehlt!
    11.01.2018 11:11:52
    Sepp
    Application.EnableEvents> = False
    Gruß Sepp

    Anzeige
    s vergessen. EnableEvents!!! owT
    11.01.2018 11:11:52
    Rudi
    AW: Plausibilitätsprüfung mit Intersect
    11.01.2018 11:09:31
    ChrisL
    Hi Hans-Jürgen
    Vielleicht reicht es, wenn du pauschal (gilt auch für andere Ereignisse) die Events deaktivierst. Der Code gehört ins andere Makro, nicht ins Change-Ereignis.
    Application.EnableEvents = False
    Natürlich die Ereignisse auch wieder aktivieren.
    Ansonsten ja, ein Flag
    Public b As Boolean
    cu
    Chris
    AW: Plausibilitätsprüfung mit Intersect
    11.01.2018 11:10:45
    Rudi
    Hallo,
    definiere eine Public-Variable
    Public blnMakro as Boolean
    Sub Makro1()
    blnMakro = True
    'Mach was
    blnMakro 0 False
    End Sub
    •Private Sub Worksheet_Change(ByVal Target As Range)
    If Not BlnMakro Then
    If Not Application.Intersect(Target, Range("A1:A3")) Is Nothing Then
    MsgBox "Im Bereich A1:A3 wurde eine Zelle geändert!"
    End If
    End If
    End Sub
    
    Oder schalte die Ereignisverarbeitung ab.
    Application.EnableEvents =False
    und am Ende wieder auf True setzen
    Gruß
    Rudi
    Anzeige
    AW: Plausibilitätsprüfung mit Intersect
    11.01.2018 11:20:17
    onur
    "(beim Betätigen einer Schaltfläche wird erstmal geschaut, ob alles richtig ist)" stimmt nicht, da das Event immer reagiert, SOBALD die Zelle verändert wird. Wenn die Zellen aber erst nach Knopfdruck verändert werden, kannst du dort vorher eine globale variable setzen lassen, die das change-ereignis später abfragt (wenn ja, wird der Change_Sub sofort verlassen):
    Private Sub Worksheet_Change(ByVal Target As Range)
    If flag=true then
    flag=false
    exit sub
    end if
    If Not Application.Intersect(Target, Range("A1:A3")) Is Nothing Then
    MsgBox "Im Bereich A1:A3 wurde eine Zelle geändert!"
    End If
    End Sub
    

    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Anzeige