Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Fehler beim Datenlöschen mit Ereignisüberwachung
#1
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

.xlsm   Ein Teil der Tabelle löschen.xlsm (Größe: 1,83 MB / Downloads: 6)
Antworten Top
#2
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.
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#3
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
Antworten Top
#4
Hallöchen,

hast Du mal geschaut, was in der Variable intSp33 steht?
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#5
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


Angehängte Dateien
.xlsm   Ein Teil der Tabelle löschen.xlsm (Größe: 1,8 MB / Downloads: 3)
Antworten Top
#6
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
Antworten Top
#7
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
Antworten Top
#8
Hallo Martin,

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

Gruß Uwe
Antworten Top
#9
Hallo,

Die Zeilentrennung mit dem Unterstrich funktioniert nicht mitten im Objekt.

Viele Grüße
derHöpp
Antworten Top
#10
@derHoepp

teste mal

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

Smile

(würde ich aber auch nicht machen)
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste