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. Per Hyperlink ausgeblendetes Blatt einblenden

    in Microsoft Excel Hilfe
    Per Hyperlink ausgeblendetes Blatt einblenden: Hola ins Forum, ich bräuchte mal wieder eure Hilfe. Ich habe ein Tabellenblatt das mir als Register dient und wo Hyperlinks eingefügt sind um auf das dazugehörige Blatt zu springen. Diese Blätter...
  3. Code wird nicht komplett ausgeführt

    in Microsoft Excel Hilfe
    Code wird nicht komplett ausgeführt: Guten Morgen in die Runde! Situation: Dieser Code wird nicht komplett ausgeführt. es wird der Teil mit der Du Until Schleife übersprungen. Wenn ich aber mit Einzelschritte durch den Code gehe...
  4. Rabat Codes in einen Serienbrief einfügen

    in Microsoft Word Hilfe
    Rabat Codes in einen Serienbrief einfügen: Hi, Ich möchte bei einem Brief für meine Kunden eine Rabatcode einfügen. Diese sind zufällig erstellt und in Excel als Tabelle gespeichert. Wie bekomme ich diese nun so eingefügt das auf jedem...
  5. Combobox einbinden

    in Microsoft Excel Hilfe
    Combobox einbinden: Hallo, ich bastele an einer Funktion, bei der ich an einer Stelle im Programm eine Combobox aufrufen möchte, die dann mit bestimmten Werten aus einer Tabelle gefüllt ist und dann den gewählten...
  6. VBA Code für Zeilen ausblenden einblenden mit JA/Nein

    in Microsoft Excel Hilfe
    VBA Code für Zeilen ausblenden einblenden mit JA/Nein: Hallo, habe eine Exceltabelle, bei der ich bei einer Zelle eine Ja/Nein abfrage mache, wenn in der Zelle Nein steht, dann soll ein bestimmter Zeilenbereich, den ich definieren möchte, ausgeblendet...
  7. VBA Code ohne ergebnis

    in Microsoft Excel Hilfe
    VBA Code ohne ergebnis: Hallo, ich habe einen VBA Code der in meiner Tabelle nicht funktioniert. Kann mir vielleicht jemand bei der Korrektur ggf. weiter helfen? Danke und Gruß Private Sub Worksheet_Change(ByVal Target...
  8. Bild löschen auch wenn es nicht vorhanden ist?! Code funktioniert nicht mehr..

    in Microsoft Excel Hilfe
    Bild löschen auch wenn es nicht vorhanden ist?! Code funktioniert nicht mehr..: Hallo Leute, Habe ein Macro in Benutzung das jetzt über Monate gut funktioniert hat und jetzt kam anscheint ein update und es funktioniert nicht mehr, wobei ich es mir nicht erklären kann, weil...
  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