Office: mein Code beschädigt meine Datei

Helfe beim Thema mein Code beschädigt meine Datei in Microsoft Excel Hilfe um das Problem gemeinsam zu lösen; Mahlzeit, ich könnte die Wände hoch laufen! Ich entwickle ein Excel-Programm zur Erfassung von Palettenbewegungen und Führung von Palettenkonten.... Dieses Thema im Forum "Microsoft Excel Hilfe" wurde erstellt von fette Elfe, 17. Januar 2010.

  1. fette Elfe Erfahrener User

    mein Code beschädigt meine Datei


    Mahlzeit,

    ich könnte die Wände hoch laufen!
    Ich entwickle ein Excel-Programm zur Erfassung von Palettenbewegungen und Führung von Palettenkonten.
    Allerdings bin ich totaler Anfänger in Sachen Makro.
    (kann also eigentlich nur schief gehen....)

    Jetzt ist bereits 2x der gleiche Supergau eingetreten: die Datei ist defekt.
    Beim ersten Mal kam eine Meldung (irgendwas mit defekte Datei, nicht Lesbar, soll wiederhergestellt werden? usw....).
    Nach der Wiederherstellung kamen auch noch diverse andere Fehler, Standardbefehle konnten nicht ausgeführt werden usw...
    Beim zweiten Mal kam die Meldung nicht, ich habe aber das Ergebnis gesehen. Hier habe ich nicht weiter probiert.

    Und zwar sind die Zeilennummern im 2. Blatt (Sheet3 "Stammdaten") ab Zeile 2 blau gefärbt, und alle Zeilen zwischen 42 und 1220 fehlen einfach.


    Ich weiß inzwischen das es in der Suche (inkl. Löschen) von doppelten Einträgen begründet liegt, da dieser Fehler auftritt (gerade nochmal getestet) wenn ich über die UserForm2 neue Stammdaten eingebe. Wenn ich diese Suche ausschalte passiert der Fehler nicht.


    Code:
    Public Sub doppelteEinträgeaus_alleLieferantenundEmpfänger_entfernen()
        Sheets("Stammdaten").Select
        Columns("AG:AI").Select
        Range("AG2:AI100000").AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:= _
            Range("AG2:AI100000"), Unique:=True
    End Sub

    Diesen Code habe ich hier auf meinem Rechner mit dem Makro-Recorder aufgezeichnet und nur die Range angepasst.
    Keine Ahnung warum da solche Fehler passieren.

    Den Code findet Ihr in Modul2.
    Ich hänge 2 Dateien an: einmal eine "unbeschädigte", hier ist der Aufruf dieses Codes in Form2 mit ' ausgeschaltet, und einmal eine "defekte", damit Ihr das Ergebnis sehen könnt wenn Ihr wollt.

    Ich hoffe Ihr könnt mir helfen, denn so komme ich nicht weiter.


    P.s.:
    Ich weiß das mein Code im Allgemeinen vermutlich umständlich ist, vieles einfacher ginge...
    bitte einfach nicht drann stören, bin halt Anfänger.
    Immerhin lief alles ohne Fehler stabil bis ich den angesprochenen Code eingebaut habe.


    Liebe Grüße Achim
     
    fette Elfe, 17. Januar 2010
    #1
  2. Exl121150 Erfahrener User
    Hallo Achim,

    die gute Nachricht ist: Deine Excel-Datei ist nicht beschädigt.
    Du kannst Dein Arbeitsblatt "Stammdaten" ganz einfach zurückversetzen in den Zustand davor:

    1) Selektiere/Aktiviere das Arbeitsblatt 'Stammdaten'.
    2) Klicke in der Multifunktionsleiste im Tabulator 'Überprüfen' in der Gruppe 'Änderungen' auf den Button 'Blattschutz aufheben', um den Blattschutz aufzuheben und die nächsten Schritte zu ermöglichen.
    3) Klicke in der Multifunktionsleiste im Tabulator 'Daten' in der Gruppe 'Sortieren und Filtern' auf den Button 'Filtern': die blauen Zeilennr. des Blattes werden wieder alle schwarz und die ausgeblendeten Zeilen sind wieder alle sichtbar.
    4) Jetzt kannst Du Schritt 2) wieder ausführen, um das Blatt 'Stammdaten' wieder zu schützen.

    Die VBA-Methode
    Range("AG2:AI100000").AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:=Range("AG2:AI100000"), Unique:=True
    entspricht in der Multifunktiosleiste im Tabulator 'Daten' in der Gruppe 'Sortieren und Filtern' dem Button 'Erweitert' (Dialogfenster 'Spezialfilter') den Einstellungen:
    a) Liste an gleicher Stelle filtern
    b) Listenbereich: $AG$2:$AI$100000
    c) Kriterienbereich: $AG$2:$AI$100000
    d) Keine Duplikate

    Falls Du nicht genau weißt, wie dieser 'Spezialfilter' funktioniert, findest Du im folgenden Link eine detailierte, leicht verständliche Einführung von Schatzi:
    https://www.office-hilfe.com/support/threads/excel-spezialfilter.7685/
     
    Zuletzt von einem Moderator bearbeitet: 9. Dezember 2020
    Exl121150, 17. Januar 2010
    #2
  3. fette Elfe Erfahrener User
    lieben Dank für Deine Antwort Exl121150

    Das die Datei nicht beschädigt ist, ist beruhigend.

    Allerdings verstehe ich Deine Hilfestellung zum Spezialfilter nicht.

    1. der Code entspricht dem was Du schreibst, so hatte ich den Filter eingestellt
    2. seltsamer Weise filtert der Code sogar richtig, trotz des dicken Fehlers

    3. bin ich Deinem Link gefolgt und habs mir durchgelesen (hatte ich letzten Monat schonmal), aber irgendwie bringt mich das nicht weiter
    4. haben meine Spalten doch eindeutige Überschriften, aber nirgendwo im Filter werde ich danach gefragt/muss sie angeben. Oder muss ich den Spalten im Namensmanager Namen geben? (Dann wäre "Überschriften" aber arg missverständlich). Oder muss ich eine Überschrift irgendwo definieren? Wenn ja, wo und wie geht das?

    5. ich weiß leider immernoch nicht wo mein Fehler liegt.


    lieben Gruß und danke für Deine Zeit

    Achim


    P.s.:

    oder muss ich die Einstellungen in:

    a) Liste an gleicher Stelle filtern
    b) Listenbereich: $AG$1:$AI$100000 <<<<<<<
    c) Kriterienbereich: $AG$2:$AI$100000
    d) Keine Duplikate

    ändern? Also die "Überschrift" mit rein nehmen?
     
    fette Elfe, 17. Januar 2010
    #3
  4. Exl121150 Erfahrener User

    mein Code beschädigt meine Datei

    Hallo Achim,

    1) der Listenbereich dient dazu, Excel mitzuteilen, welche Daten gefiltert werden sollen, während der Kriterienbereich festlegt, welche Daten nach der Filterung des Listenbereichs noch zu sehen sind.

    2) Damit der Kriterienbereich weiß, auf was er im Listenbereich zugreifen soll, müssen beide der Listenbereich und der Kriterienbereich Überschriften haben.
    Damit die Überschriften für diesen Befehl verwendbar sind, müssen sie natürlich in den beiden Bereichsangaben enthalten sein.
    Also:
    Listenbereich: A1:AJ100000
    Kriterienbereich: AG1:AI100000
    Dann werden die 3 Überschriften des Kriterienbereichs in AG1, AH1 und AI1 herangezogen und mit den Überschriften in der 1.Zeile des Listenbereichs verglichen: so kann Excel ermitteln, auf welche Spalten des Listenbereichs der Kriterienbereich anzuwenden ist. Excel findet auf diese Weise, dass im Listenbereich die Spalten AG, AH und AI betroffen sind von der Anwendung der Kriterien.

    3) Die Überschriften in der 1.Zeile des Listenbereichs müssen eindeutig sein. Es dürfen also keine 2 Spalten vorhanden sein, die gleiche Überschriften haben (Das dürfte aufgrund von Punkt 2) ja klar sein).

    4) Da Du beim Listenbereich nur die Spalten AG, AH und AI ausgewählt hast, ist mir nicht (ganz) klar, was Du in Wahrheit damit beabsichtigt hast.
    Denn wenn Du eine Filterung an Ort und Stelle durchführst, blendet Excel alle Zeilen (also jeweils die ganze Zeile) aus, die nicht den Kriterien des Kriterienbereichs entsprechen. Da Du offensichtlich nur die Einschränkung 'Keine Duplikate' machst, was die die 3 Spalten (AG,AH,AI) des Listenbereichs betrifft, und den Anschein erweckst, als würde die Filterung nur die 3 Spalten im Listenbereich betreffen - so wäre das eine Falschinterpretation: es wird jeweils die betreffende(n) ganze(n) Zeile(n) ausgeblendet, die den Kriterien nicht entspricht, d.h. die Zellen aller anderen Spalten außerhalb der 3 Spalten des Listenbereiches werden natürlich mit ausgeblendet.
    Denn es kann eben jeweils nur 1 ganze Zeile ausgeblendet werden und nicht etwa Teilbereiche davon.
     
    Exl121150, 17. Januar 2010
    #4
  5. fette Elfe Erfahrener User
    *f...*
    da habe ich wohl wirklich etwas missverstanden.

    Da zum Beispiel beim Sortieren ganz ähnliche Angaben gemacht werden, und es sich da nur auf den angegebenen Bereich beschränkt, war ich davon ausgegangen das es hier genauso wäre.

    Eigentlich soll der Filter bewirken:

    Bereich $AG$1:$AI$100000 nach doppelten Einträgen durchsuchen
    > als doppelt gelten Einträge nur wenn sie in allen drei Spalten die gleichen Werte haben

    Bsp:

    Müller GB Meier
    Müller GB Meier

    wäre doppelt

    Müller GB Meier
    Müller NL Meier

    wäre nicht doppelt

    deshalb habe ich als Kriteriumsbereich ja auch wieder alle drei Spalten angegeben.
    Interessanter Weise hat das so sogar funktioniert (abgesehen vom Supergau...)

    Und wenn doppelte Einträge gefunden werden, soll halt einer (also Inhalt einer Zelle in AG AH AI) gelöscht werden, solange bis dieser "dreifache" Eintrag wirklich nur noch einmal vorkommt.
    Aber eben NUR in diesen drei Spalten! Die anderen Spalten des Blattes sollen davon völlig unberührt bleiben!

    Mir scheint, den Spezialfilter kann ich für diese Aufgabe vergessen und muss nach etwas anderem suchen.
    Zumal Du ja auch immer von "ausblenden" schreibst. Der Spezialfilter blendet also nur aus?
    Ich brauche etwas was Inhalte löscht.
    (2. Fehlinterpretation)


    Habt Dank für Eure erhellenden Worte...
    (frechgrins)


    Gruß Achim
     
    fette Elfe, 17. Januar 2010
    #5
  6. Exl121150 Erfahrener User
    Hallo Achim,

    Deine Interpretation der Duplikatsfilterung auf Basis der 3 Spalten ist jetzt eine korrekte und funktioniert auch so. Wenn da nicht das Ausblenden ganzer Zeilen wäre ..., wenn man eine Filterung der Daten an Ort und Stelle durchführt.

    Im allgemeinsten Fall, den dieser Befehl auszuführen vermag, sind die 3 Bereiche Quellbereich, Kriterien und Zielbereich 3 voneinander verschiedene Bereiche und dann führt der Befehl Kopiervorgänge derjenigen Zeilen des Quellbereichs in den Zielbereich durch, die den logischen Bedingungen des Kriteriumsbereiches entsprechen.

    Aber das ist für Deine Situation natürlich keine Lösung.
     
    Exl121150, 17. Januar 2010
    #6
  7. fette Elfe Erfahrener User
    Hm...
    ich könnte jetzt natürlich die drei Spalten in ein neues Blatt kopieren, dort nach doppelten Einträgen suchen lassen, die Inhalte der ursprünglichen Spalten löschen, die gefilterten Inhalte der kopierten Spalten in die ursprünglichen zurück kopieren und das neue Blatt wieder löschen...

    aaaber, ich könnte auch von Berlin über München nach Hamburg fahren....

    Ich glaub da wird es auch was einfacheres geben.

    Immerhin habe ich etwas über den Spezialfilter gelernt.
    Ich denke den werde ich später bei der Auswertung der Daten gut gebrauchen können.
    Da sollen Such- und Filterfunktionen eingebaut werden, die definierte Daten in neue Blätter kopieren.
    Aber das kommt später...

    Jetzt wird erstmal dieses "Problem" gelöst.


    lieben Gruß Achim
     
    fette Elfe, 17. Januar 2010
    #7
Thema:

mein Code beschädigt meine Datei

Die Seite wird geladen...
  1. mein Code beschädigt meine Datei - Similar Threads - Code beschädigt Datei

  2. Code läuft mit F8 durch, beim CommandButon nicht

    in Microsoft Excel Hilfe
    Code läuft mit F8 durch, beim CommandButon nicht: Hallo, wer könnte mir weiter helfen. Beim Bedienen mit F8 läuft der Code. Mit dem CommandButton kommt der Fehler bei Zeile: ActiveSheet.Range("D1").AutoFilter Field:=4, Criteria1:="=*" &...
  3. Code für Zeilensprung auf 125 Ändern

    in Microsoft Excel Hilfe
    Code für Zeilensprung auf 125 Ändern: Hallo, Ich habe mein Excel Datei auf 125 Prüflinge erhöht (vorher war es nur bis 75) Code habe ich auch angepasst damit es automatisch weiter springt beim messen. nur es funktioniert nicht mehr...
  4. Excel VBA - Code Hilfe (Spalten, Werte kopieren etc.)

    in Microsoft Excel Hilfe
    Excel VBA - Code Hilfe (Spalten, Werte kopieren etc.): Hallo, ich benötige Hilfe für ein Problem, welches ich leider selbst schwerlich als Anfänger nicht lösen kann: Ich möchte von dem Tabellenblatt "Tabelle1" aus den Zellen B8:B14, K8:K14, B18:B25,...
  5. VBA Code " Zeilenhöhe bei Verb. Zellen Funktioniert fasst"

    in Microsoft Excel Hilfe
    VBA Code " Zeilenhöhe bei Verb. Zellen Funktioniert fasst": Hallo Leute dieser Code für Zellenhöhe bei Verbundenen Zellen Funktioniert fast. Ich habe ein Code von jemand anderem bekommen der nicht in einem Forum ist. Ich kann gerade diese Person nicht...
  6. PDF mit Namen,Datum speichern im Zielordner

    in Microsoft Excel Hilfe
    PDF mit Namen,Datum speichern im Zielordner: Hallo, habe das Problem den Namen in Zelle D2, Vorname in Zelle D5 , das Datum steht in der Zelle B 10 und soll beim speichern so angezeigt werden (Max Mustermann 2023 Oktober) wie und wo muß ich...
  7. Datentabelle per VBA Makro durch Kopieren und Einfügen einer Kopfzeile aufteilen

    in Microsoft Excel Hilfe
    Datentabelle per VBA Makro durch Kopieren und Einfügen einer Kopfzeile aufteilen: Hallo Zusammen, mein erster Beitrag hier, also schon mal Sorry im Voraus, wenn unvollständig beschrieben *:)* Ich habe das Forum schon nach einem brauchbaren Lösungsansatz durchsucht, bin aber...
  8. UserForm zum bearbeiten von Tabellen und speichern

    in Microsoft Excel Hilfe
    UserForm zum bearbeiten von Tabellen und speichern: Guten Tag Ich habe leider ein Problem, das mich zur Verzweiflung bringt. Vielleicht findet hier jemand einen Lösung für mein Problem. Ich bekommen leider einen Laufzeitfehler '1004'. Zur...
  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