Clever-Excel-Forum

Normale Version: Fehler beim Datenlöschen mit Ereignisüberwachung
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
Guten Tag ihr fleissigen Helfer
Wieder einmal stehe ich vor einem für mich unlösbaren Problem und bitte einmal mehr um Hilfe.
Ich extrahiere und modifiziere Daten von Spalte "BC7" bis "DF10" (extern gelieferte Quelldaten)
nach Spalten "B7" bis "AT10". Dann wird in Tabelle1 eine Ereignisüberwachung "targed_zu_Alois"
eingetragen, wodurch Änderungen in Spalten "B7" bis "AT10" auch in den Spalten "BC7" bis "DF10"
ausgeführt und markiert werden. Das funktionirt soweit ganz gut.

Nun möchte ich mit dem Makro "Inhalte_linke_Seite_löschen" die Daten "B7" bis "AT10" löschen.

Da erhalte ich die Fehlermeldung:
        Fehler beim Kompilieren             Erwartet Anwendungsende      und die Meldung,
        .Interior.ColorIndex = 40 Else Cells(Zelle.Row, intSp33).Interior.ColorIndex = 2            ' und markieren

Erst nach dem Löschen der Fehlermeldung können die Daten gelöscht werden.
Wie und mit welcher Erweiterung, kann dieser Fehler behoben werden? (Excel 2016)

Sinn des kopieren, ändern und wieder zurück kopieren ist folgender:
Es soll eine Art Übungstabelle werden, wo die einzelnen Makro Abläufe nachverfolgt werden können
oder nach eventuell getätigten Änderungen die Tabelle weiter verwerwendet werden kann.
Mit dankbaren Grüssen.
Martin
[attachment=46983]
Hallöchen,

ist das die gesamte Codezeile? Es könnte / müsste in etwa so aussehen:

If Bedingung Then .Interior.ColorIndex = 40 Else Cells(Zelle.Row, intSp33).Interior.ColorIndex = 2



oder, falls Du die Farben als Bedingung hast,

If .Interior.ColorIndex = 40 Or Cells(Zelle.Row, intSp33).Interior.ColorIndex = 2 Then



das

.Interior.ColorIndex = 40

funktioniert aber auch nur dann, wenn Du da irgendwo ein passendes With ... dazu hast.
Guten Abend Schauan
Das ist nur die Fehlermeldung.
Nach dem Kopieren der Daten nach "A7" bis "AT" wird mit "Sub uebertragen1()"
auf Ereignisüberwachung umgeschaltet. Nach den Änderungen, möchte ich die
Daten in den Spalten "A7" bis "AT" mit diesem Makro wieder löschen

Sub Inhalte_linke_Seite_löschen()
Call uebertragen3                              ' Entfernt die Ereignisüberwachung in Tabelle1
Lösche_alle_Bilder                            ' Löscdht alle Portrait in Spalte "A" Tabelle1
    Range("A7:AT1105").Select                  ' Aktiviert Spalten "A7" bis "AT1200"
    Selection.ClearContents                    ' Löscht den Inhalt in den Spalten "A7" bis "AT1200"
    Range("AB4").Select                        ' Springt in Spalte "AB7"
Call uebertragen2                              'Kopiert die Ereignisüberwachung "targed_Portrait" in Tabelle1
End Sub

Der Fehlercode, verweisst auf diesen letzten Eintrag

  Set Bereich = Intersect(Target, Range("AN7:AN" & Range("AN7").End(xlDown).Row))                  ' "Datum 4"  überwachen
    If Not Bereich Is Nothing Then
    Application.EnableEvents = False
    For Each Zelle In Bereich
        If Zelle <> "" Then
            Cells(Zelle.Row, intSp33) = Zelle
        End If
        If Cells(Zelle.Row, "AN") = "" Then Cells(Zelle.Row, intSp33) = ""
        If Cells(Zelle.Row, "AN").Interior.ColorIndex = 40 Then Cells(Zelle.Row, intSp33) _
          .Interior.ColorIndex = 40 Else Cells(Zelle.Row, intSp33).Interior.ColorIndex = 2            ' und markieren
        Next Zelle
        Application.EnableEvents = True
        Call Datum4
  End If
Es ist mir nicht klar, wieso nur ein Teil des grünen Markierung als Fehler ausgegen wird.
Ich würde mich freuen, wenn diese Meldung noch abgefangen werden könnte
Wünsche noch ein schöner Abend
Gruss Martin
Hallöchen,

hast Du mal geschaut, was in der Variable intSp33 steht?
Hallo,

noch mal damit ich es richtig verstehe:

Du möchtest den Inhalt des Modules "Tabelle1" in das Modul "targed_zurück_zu_Alois_leer" übertragen und dann den gesamten Inhalt des Modules"Tabelle1" löschen um Auslöseaktionen durch Worksheet_Change zu vermeiden.
Es reicht das Modul "Tabelle1" zu leeren.
Aus irgendeinen Grund wird in der Löschschleife eine Zeile übersprungen, was zu einem Fehler führt - es könnte ein versteckter Defekt in der Datei vorhanden sein. Da habe ich zusätzlich noch einen Löschbefehl der Zeile 1 dran gehangen. Eigentlich ist so ein Verhalten beim Ablaufen einer Schleife anormal.
Nun läuft Alles sauber durch und am Ende holt sich die Prozedur die Befehle aus dem Modul "target_portait" in die das Modul der "Tabelle1".

Gruß Uwe
Guten Abend Schauan
Ja hier

Dim intSp33 As Integer                                                                            ' Spalte mit Überschrift "Auswanderungs-Datum"
intSp33 = Application.Match("Auswanderungs-Datum", Rows(6), 0)                  ' Spalte mit Überschrift "Auswanderungs-Datum finden

zu finden im Projekt Explorer unter "targed_zurück_zu_Alois", letzter Eintrag unten.

 Ich suche nur eine Möglichkeit alle Inhalte in den Spalten "A7" bis "AT" zu löschen, damit wieder Daten von
"BC7" bis "DF" nach "A7" bis "AT" kopiert werden können, ohne Fehlermeldung.
Gruss Martin
Guten Abend Uwe
Nicht ganz.
Das Makro "Sub Inhalte_linke_Seite_löschen()" war ein Versuch von mir, die Inhalte
der Spalten "A7" bis "AT" zu lösche um anschliessend
(mit geänderten Datenänderungen) wieder zu befüllen werden können.

Mit dem Eintrag "Call uebertragen3"  wollte ich zuerst im VBA Project bei "Tabelle1"
den Inhalt löschen, (weil die Fehlermeldung vermutlich aus diesem Code kommt) und
anschliessend die restlichen Daten gelöscht werden.
  Heart  lichen  98 für die Modifikation jetzt funktioniert es.
Gruss Martin
Hallo Martin,

lösche einfach diese eine (verwaiste) Codezeile und gut ist!

Gruß Uwe
Hallo,

Die Zeilentrennung mit dem Unterstrich funktioniert nicht mitten im Objekt.

Viele Grüße
derHöpp
@derHoepp

teste mal

Code:
Sub Test()
MsgBox Tabelle1. _
Name
End Sub

Smile

(würde ich aber auch nicht machen)
Seiten: 1 2