Office: (Office 2010) VBA - Fehler beim Kompilieren (Mehrdeutiger Name - Worksheet_Change)

Helfe beim Thema VBA - Fehler beim Kompilieren (Mehrdeutiger Name - Worksheet_Change) in Microsoft Excel Hilfe um das Problem gemeinsam zu lösen; Hallo Zusammen, wer kann mir helfen? Ich möchte/muss die nachfolgenden Codes irgendwie Zusammenführen weil die Prüfung augenscheinlich so nicht... Dieses Thema im Forum "Microsoft Excel Hilfe" wurde erstellt von Uwe-Horn, 13. Dezember 2017.

  1. Uwe-Horn Erfahrener User

    VBA - Fehler beim Kompilieren (Mehrdeutiger Name - Worksheet_Change)


    Hallo Zusammen,

    wer kann mir helfen?

    Ich möchte/muss die nachfolgenden Codes irgendwie Zusammenführen weil die Prüfung augenscheinlich so nicht funktioniert.
    Ansich der selbe Code mit unterschiedlichem Verweis auf ein anderes Tabellenblatt.
    Einzeln funktionieren sie tadellos, zusammen leider nicht.
    Habe leider keine Ahnung von VBA.....
    (Wenn möglich würde ich gerne bei dem zweiten Code das Wort Klärung anstatt Defekt verwenden)

    Private Sub Worksheet_Change(ByVal Target As Range)
    Dim rngBereich As Range
    Dim rngDefekt As Range
    Set rngBereich = Range("C4: C78")
    If Not Intersect(Target, rngBereich) Is Nothing Then
    If Target.Cells(1) <> "" Then
    Set rngDefekt = Worksheets("Voxter_Bestand").Range("A4:A53").Find(Target.Cells(1), lookat:=xlWhole)
    If Not rngDefekt Is Nothing Then
    If rngDefekt.Offset(0, 1) = "Defekt" Then
    MsgBox "Voxter ist Defekt, bitte Voxter Bestand prüfen"
    Application.EnableEvents = False
    Application.Undo
    Application.EnableEvents = True
    End If
    End If
    End If
    End If
    Set rngBereich = Nothing
    Set rngDefekt = Nothing
    End Sub

    Private Sub Worksheet_Change(ByVal Target As Range)
    Dim rngBereich As Range
    Dim rngDefekt As Range
    Set rngBereich = Range("D4: D78")
    If Not Intersect(Target, rngBereich) Is Nothing Then
    If Target.Cells(1) <> "" Then
    Set rngDefekt = Worksheets("Einarbeitung_OG").Range("A4:A23").Find(Target.Cells(1), lookat:=xlWhole)
    If Not rngDefekt Is Nothing Then
    If rngDefekt.Offset(0, 1) = "Defekt" Then
    MsgBox "Einarbeitungsnummer in Klärung, bitte Einarbeitung OG Prüfen"
    Application.EnableEvents = False
    Application.Undo
    Application.EnableEvents = True
    End If
    End If
    End If
    End If
    Set rngBereich = Nothing
    Set rngDefekt = Nothing
    End Sub

    Danke schon mal im Voraus
     
    Uwe-Horn, 13. Dezember 2017
    #1
  2. Beverly
    Beverly Erfahrener User
    Hi,

    ungetestet:

    Code:
    Private Sub Worksheet_Change(ByVal Target As Range)
        Dim rngDefekt As Range
        If Not Intersect(Target, Range("C4:C78")) Is Nothing Then
            If Target.Cells(1) <> "" Then
                Set rngDefekt = Worksheets("Voxter_Bestand").Range("A4:A53").Find(Target.Cells(1), lookat:=xlWhole)
                If Not rngDefekt Is Nothing Then
                    If rngDefekt.Offset(0, 1) = "Defekt" Then
                        MsgBox "Voxter ist Defekt, bitte Voxter Bestand prüfen"
                        Application.EnableEvents = False
                        Application.Undo
                        Application.EnableEvents = True
                    End If
                End If
            End If
        ElseIf Not Intersect(Target, Range("D4:D78")) Is Nothing Then
            If Target.Cells(1) <> "" Then
                Set rngDefekt = Worksheets("Einarbeitung_OG").Range("A4:A23").Find(Target.Cells(1), lookat:=xlWhole)
                If Not rngDefekt Is Nothing Then
                    If rngDefekt.Offset(0, 1) = "Defekt" Then
                        MsgBox "Einarbeitungsnummer in Klärung, bitte Einarbeitung OG Prüfen"
                        Application.EnableEvents = False
                        Application.Undo
                        Application.EnableEvents = True
                    End If
                End If
            End If
        End If
        Set rngDefekt = Nothing
    End Sub
    
    
    Bis später,
    Karin
     
  3. Uwe-Horn Erfahrener User
    Wahsinn, Danke.... die Formel stammte übrigens von dir.... funktioniert Danke Danke Danke :-)
     
    Uwe-Horn, 13. Dezember 2017
    #3
  4. Uwe-Horn Erfahrener User

    VBA - Fehler beim Kompilieren (Mehrdeutiger Name - Worksheet_Change)

    Könnte man das jetzt nochmal erweitern, hätte insgesamt 4-5 Tabellen mit der selben Prüfung?

    Hab das jetzt dazu eingefügt zwischen End If und Set rngDefekt = Nothing End Sub aber die dritte prüfung wird nicht ausgeführt. Hab natürlich den Tabellen bezug und den Zellbezug geändert....

    ElseIf Not Intersect(Target, Range("D4:D78")) Is Nothing Then
    If Target.Cells(1) <> "" Then
    Set rngDefekt = Worksheets("Einarbeitung_OG").Range("A4:A23").Find(Target.Cells(1), lookat:=xlWhole)
    If Not rngDefekt Is Nothing Then
    If rngDefekt.Offset(0, 1) = "Defekt" Then
    MsgBox "Einarbeitungsnummer in Klärung, bitte Einarbeitung OG Prüfen"
    Application.EnableEvents = False
    Application.Undo
    Application.EnableEvents = True
    End If
    End If
    End If
    End If
     
    Uwe-Horn, 13. Dezember 2017
    #4
  5. Beverly
    Beverly Erfahrener User
    Poste bitte den kompletten Code.
    Nutze außerdem die Einrückungen, damit er besser lesbar ist. Gehe dazu auf "Erweitert" (unten rechts unter dem Antwortfenster). Dann in der mittleren Reihe oberhalb des Antwortfensters der 3. Schalter von rechts # (Code einfügen).

    Bis später,
    Karin
     
  6. Uwe-Horn Erfahrener User
    Code:
    Private Sub Worksheet_Change(ByVal Target As Range)
        Dim rngDefekt As Range
        If Not Intersect(Target, Range("C4:C81")) Is Nothing Then
            If Target.Cells(1) <> "" Then
                Set rngDefekt = Worksheets("Voxter_Bestand").Range("A4:A53").Find(Target.Cells(1), lookat:=xlWhole)
                If Not rngDefekt Is Nothing Then
                    If rngDefekt.Offset(0, 1) = "Defekt" Then
                        MsgBox "Voxter ist Defekt, bitte Voxter Bestand prüfen"
                        Application.EnableEvents = False
                        Application.Undo
                        Application.EnableEvents = True
                    End If
                End If
            End If
        ElseIf Not Intersect(Target, Range("D4:D81")) Is Nothing Then
            If Target.Cells(1) <> "" Then
                Set rngDefekt = Worksheets("Einarbeitung_OG").Range("A4:A23").Find(Target.Cells(1), lookat:=xlWhole)
                If Not rngDefekt Is Nothing Then
                    If rngDefekt.Offset(0, 1) = "Defekt" Then
                        MsgBox "Einarbeitungsnummer in Klärung, bitte Einarbeitung OG Prüfen"
                        Application.EnableEvents = False
                        Application.Undo
                        Application.EnableEvents = True
                    End If
                End If
            End If
        ElseIf Not Intersect(Target, Range("C12:C18")) Is Nothing Then
            If Target.Cells(1) <> "" Then
                Set rngDefekt = Worksheets("FFZ_Bestand").Range("A55:A64").Find(Target.Cells(1), lookat:=xlWhole)
                If Not rngDefekt Is Nothing Then
                    If rngDefekt.Offset(0, 1) = "Defekt" Then
                        MsgBox "APLZ ist Defekt, bitte FFZ Bestand Prüfen"
                        Application.EnableEvents = False
                        Application.Undo
                        Application.EnableEvents = True
                    End If
                End If
            End If
        End If
        Set rngDefekt = Nothing
    End Sub
    
     
    Uwe-Horn, 15. Dezember 2017
    #6
  7. Beverly
    Beverly Erfahrener User
    Der Bereich C12:C18 liegt innerhalb des Bereichs C4:C81, sodass das Change-Ereignis bereits von diesem Teilcode abgefangen wird und gar nicht erst zum ElseIf für C12:C18 kommt. Du musst also innerhalb des ersten If-Teils unterscheiden, ob du dich innerhalb C12:C18 oder außerhalb (sprich in den restlichen Zellen des Bereichs C4:C81) befindest. Versuche es deshalb mal so:

    Code:
    Private Sub Worksheet_Change(ByVal Target As Range)
        Dim rngDefekt As Range
        If Not Intersect(Target, Range("C4:C81")) Is Nothing Then
            If Target.Cells(1) <> "" Then
                If Not Intersect(Target, Range("C12:C18")) Is Nothing Then
                    Set rngDefekt = Worksheets("FFZ_Bestand").Range("A55:A64").Find(Target.Cells(1), lookat:=xlWhole)
                    If Not rngDefekt Is Nothing Then
                        If rngDefekt.Offset(0, 1) = "Defekt" Then
                            MsgBox "APLZ ist Defekt, bitte FFZ Bestand Prüfen"
                            Application.EnableEvents = False
                            Application.Undo
                            Application.EnableEvents = True
                        End If
                    End If
                Else
                    Set rngDefekt = Worksheets("Voxter_Bestand").Range("A4:A53").Find(Target.Cells(1), lookat:=xlWhole)
                    If Not rngDefekt Is Nothing Then
                        If rngDefekt.Offset(0, 1) = "Defekt" Then
                            MsgBox "Voxter ist Defekt, bitte Voxter Bestand prüfen"
                            Application.EnableEvents = False
                            Application.Undo
                            Application.EnableEvents = True
                        End If
                    End If
                End If
            End If
        ElseIf Not Intersect(Target, Range("D4:D81")) Is Nothing Then
            If Target.Cells(1) <> "" Then
                Set rngDefekt = Worksheets("Einarbeitung_OG").Range("A4:A23").Find(Target.Cells(1), lookat:=xlWhole)
                If Not rngDefekt Is Nothing Then
                    If rngDefekt.Offset(0, 1) = "Defekt" Then
                        MsgBox "Einarbeitungsnummer in Klärung, bitte Einarbeitung OG Prüfen"
                        Application.EnableEvents = False
                        Application.Undo
                        Application.EnableEvents = True
                    End If
                End If
            End If
        End If
        Set rngDefekt = Nothing
    End Sub
    
    
    Bis später,
    Karin
     
Thema:

VBA - Fehler beim Kompilieren (Mehrdeutiger Name - Worksheet_Change)

Die Seite wird geladen...
  1. VBA - Fehler beim Kompilieren (Mehrdeutiger Name - Worksheet_Change) - Similar Threads - VBA Fehler Kompilieren

  2. Kreuztabelle / VBA / Fehler behandlung

    in Microsoft Access Hilfe
    Kreuztabelle / VBA / Fehler behandlung: Hallo alle zusamen Ich habe vor Jahren programiert und hade vieles vergessen. Ich habe Problemme mit ein Kreuztabelle Ich stelle ein Tabelle für quartal rechnung. Aber wenn der Quartal noch nict...
  3. VBA Stapelspeicher Fehler

    in Microsoft Excel Hilfe
    VBA Stapelspeicher Fehler: Hi, ich möchte gern die Funktion DateSerial verwenden. Leider bekomme ich den Stapelspeicher Fehler. Könnte mir da bitte jemand mir helfen? Function DateSerial() Worksheets("2023").Activate Dim...
  4. VBA - Fehler beim Kompilieren (Mehrdeutiger Name - Worksheet_Change)

    in Microsoft Excel Hilfe
    VBA - Fehler beim Kompilieren (Mehrdeutiger Name - Worksheet_Change): Hallo, ich komm leider nicht weiter. Habe 2 Makros die einzeln super Funktionieren, aber leider nicht zusammen. Vielleicht kann jemand helfen. Danke. Option Explicit Sub Datum() Private Sub...
  5. Makro Problem nach Wörtern filtern und Zeilen löschen

    in Microsoft Excel Hilfe
    Makro Problem nach Wörtern filtern und Zeilen löschen: Hallo zusammen! Ich habe ein Makro, dass ich erweitern möchte. Dabei soll in den Daten in der ersten Zeile ein Filter aktiviert werden und alle Datenzeilen löschen, die in Spalte 10 eines von 4...
  6. Fehler beim übertragen einer funktionierenden VBA

    in Microsoft Excel Hilfe
    Fehler beim übertragen einer funktionierenden VBA: Hallo Ich habe von der Homepage von Beverly die Datei mit Makro geladen (mehrere Zellen Zoomen), und wollte sie in meiner Beispieldatei einarbeiten. Ich habe die Liste als Namen definiert und die...
  7. Warum Fehler beim Kompilieren (VBA)???

    in Microsoft Excel Hilfe
    Warum Fehler beim Kompilieren (VBA)???: Hallo meine Lieben, ich bin, was VBA angeht, kein Profi und daher schier am durchdrehen. (Darf die Mappe aus datenschutzrechtlichen Gründen nicht online stellen, sorry) Folgendes: Modul 1:...
  8. VBA Fehler auf 1 von 3 Rechnern

    in Microsoft Access Hilfe
    VBA Fehler auf 1 von 3 Rechnern: Hallo, vielleicht kann mir jemand weiterhelfen, ich stehe vor einem Problem dessen Ursache sich mir absolut nicht erschließt. Der folgende VBA Code deklariert die Variablen und befüllt diese...
  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