Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1396to1400
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

VBA-Clear.Contents best. Zellinhalte nicht löschen

VBA-Clear.Contents best. Zellinhalte nicht löschen
24.12.2014 16:42:45
Debian
Hallo zusammen:-)
Ich bin auf den Fall gestossen, das in dieser Mappe (https://www.herber.de/bbs/user/94544.xlsm) im laufenden Monat zwar Leistungen erbracht/Artikel verkauft wurden, die Rechnung dafür aber nicht im selben Monat, sondern erst nach Abschluss eines Auftrages versendet werden soll. Bislang wurde die gesamte Mappe immer unter dem Namen des neuen Monats gespeichert und dann via Button/Makro die Inhalte gelöscht. Dann gings von Neuem los. Jetzt müsst ich das Makro so anpassen, das ich gewissermassen eine Auswahlbox angezeigt bekomme, welche Kunden (sortiert nach Kunden-Kürzel) NICHT aus der Liste gelöscht werden sollen. Alle anderen Eintragungen sollen wie gewöhnlich entfernt werden.
Hat jemand eine Idee dazu? Oder vielleicht eine Datei, wo sowas in der Art schon mal umgesetzt wurde? Oft genug hab ich lediglich eine "Denk-Blockade" und komm einfach nur nicht auf den richtigen Ansatz ;-)
Merci im Voraus und frohe Weihnachten euch allen :-)
LG
Debian

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA-Clear.Contents best. Zellinhalte nicht löschen
29.12.2014 01:39:03
fcs
Hallo Debian,
hier deine Datei mit entsprechend ergänzten Makros und Userform.
https://www.herber.de/bbs/user/94626.xlsm
Neu sind:
Modul: modQuicksort (zum Sortieren der Einträge für die Auswahlliste)
Userform: UF_Leeren_Verkauf (mit Listbox zum Markieren der Kürzel, deren Daten nicht gelöscht werden sollen)
Diese beiden VBA-Komponenten kannst du per Drag & Drop in deine Original-Datei kopieren.
Geändert ist das Makro "ClearVerkaufFortlaufend" im Modul1. Dieses musst du dann kopieren und in deiner Original-Datei überschreiben.
Vorsicht: zum Testen eine Kopie deiner Originaldatei verwenden!!!
Gruß
Franz

Anzeige
AW: VBA-Clear.Contents best. Zellinhalte nicht löschen
29.12.2014 03:22:06
Debian
Franz, Du bist DER HAMMER!!! Danach hab ich gesucht! :-) Ich schau mir das noch genauer an, möcht ja was dabei lernen :-) Wenn ichs jetzt noch schaffe, das ich beim kontrollierten Leeren auch die in die Mappe kopierten Rechnungen gelöscht bekomme, bin ich happy :-)))

AW: VBA-Clear.Contents best. Zellinhalte nicht löschen
29.12.2014 04:23:09
Debian
Das mit dem links und rechts geht mir noch nicht so ganz auf. Es ist ja nur eine Spalte, die untersucht wird, oder?
Wäre super, wenn Du mir den Code etwas im Detail erklären könntest :-)
Ich habe das Modul und das UserForm in die Originaltabelle eingefügt, funktioniert wunderbar:-)

AW: VBA-Clear.Contents best. Zellinhalte nicht löschen
29.12.2014 12:33:49
fcs
Hallo Debian,
Die Function "Quicksort" hab ich irgendwann mal aus einem Forumsbetrag kopiert.
Bei einem 1-dimensionalen Datenarray stellt sich halt die Frage: befinden sich die Elemente in einer Zeile nebeneinander oder in einer Spalte untereinander. Für die
Der Autor hatte wohl die Vision, dass die Elemente nebeneinander angeordnet sind, und den Variablen die Namen
  • links = Nummer des 1. Elements der Liste ab dem sortiert werden soll

  • rechts = Nummer des letzten Elements der Liste bis zu dem sortiert werden soll

  • verpasst.
    Verständlicher wären wohl Nr_Start und Nr_Ende oder ähnlich gewesen.
    Ansonsten ist diese Function dadurch relativ schwierig nachzuvollziehen, weil sich diese Function mehrfach selber wieder aufruft, um die Elemente umzupositionieren und am Ende die Liste in sortierter Reihenfolge zu haben.
    Zum Löschen der Rechnungsblättern nach einem Monatswechsel musst du dein Leeren-Makro wie folgt ergänzen:
    Sub ClearVerkaufFortlaufend()
    Dim objSheet As Object
    UF_Leeren_Verkauf.Show
    If UF_Leeren_Verkauf.Tag = "Leeren" Then
    Call SchutzAus
    Worksheets("DebitorenListe").Range("A9:F100").ClearContents
    'Rechnungsblätter löschen
    For Each objSheet In ActiveWorkbook.Sheets
    Select Case objSheet.Name
    Case "Wegleitung", "Kundenstammdaten", "Verkauf fortlaufend", _
    "Rechnungsformular", "DebitorenListe"
    'Dies Blätter nicht löschen
    Case Else
    Application.DisplayAlerts = False
    objSheet.Delete
    Application.DisplayAlerts = True
    End Select
    Next
    Call SchutzEin
    End If
    Unload UF_Leeren_Verkauf
    End Sub
    
    Gruß
    Franz

    Anzeige
    AW: VBA-Clear.Contents best. Zellinhalte nicht löschen
    29.12.2014 12:53:02
    Debian
    Hallo Franz :-)
    Hab es gerade probiert. Da springt die Fehlermeldung
    'Laufzeitfehler "1004".:
    Fehler der Methode "Sort" des Objekts "Range".
    auf und markiert mir diesen Code-Abschnitt gelb:
    .Sort key1:=.Range("A1"), order1:=xlAscending, _
    key2:=.Range("B1"), Order2:=xlAscending, Header:=xlNo
    Alle nicht im Popup markierten Zeilen wurden gelöscht, die Tabelle aber nicht neu sortiert und die zu löschenden Blätter sind noch da. Leider werd ich aus dem Code gar nicht schlau.
    Hast Du eine Idee dazu?

    AW: VBA-Clear.Contents best. Zellinhalte nicht löschen
    29.12.2014 19:44:35
    Debian
    Zusatz-Info:
    Die Fehlermeldung
    'Laufzeitfehler "1004".:
    Fehler der Methode "Sort" des Objekts "Range".
    mit gelb markiertem Code-Abschnitt:
    .Sort key1:=.Range("A1"), order1:=xlAscending, _
    key2:=.Range("B1"), Order2:=xlAscending, Header:=xlNo
    tritt im Moment nur bei Auswahl von Delica, bzw. dem mittlerem Kunden-Kürzel auf. Wenn ich das erste oder das letzte Kunden-Kürzel im UserForm aufrufe, erhalte ich diese Zeile gelb markiert zur Fehlermeldung:
    .Range(.Cells(Zeile, 1), .Cells(Zeile, 9)).ClearContents
    Der Blattschutz wird an der Stelle nicht ausgeschaltet. Wenn ich den Arbeitsmappenschutz vorher ausschalte, funktioniert es perfekt, egal welchen Kunde ich auswähle. Da der Call für SchutzAus und SchutzEin aber drin ist, erschliesst sich mir nicht, wo der Hund begraben liegt. Hast Du eine Idee dazu?

    Anzeige
    AW: VBA-Clear.Contents best. Zellinhalte nicht löschen
    30.12.2014 01:17:19
    fcs
    Hallo Debian,
    da das Löschen/Sortieren innerhalb des Userform-Codes erfolgt muss der Blattschutz vor der Anzeige des Userforms oder auch innerhalb des Userform-Codes deaktiviert und nach Abschluss aller Aktionne wieder aktiviert werden. Der Call für die beiden Makros muss also innerhalb des Leeren-Makros ein wenig verschoben werden.
    Gruß
    Franz
    Sub ClearVerkaufFortlaufend()
    Dim objSheet As Object
    Call SchutzAus
    UF_Leeren_Verkauf.Show
    If UF_Leeren_Verkauf.Tag = "Leeren" Then
    Worksheets("DebitorenListe").Range("A9:F100").ClearContents
    'Rechnungsblätter löschen
    For Each objSheet In ActiveWorkbook.Sheets
    Select Case objSheet.Name
    Case "Wegleitung", "Kundenstammdaten", "Verkauf fortlaufend", _
    "Rechnungsformular", "DebitorenListe"
    'Dies Blätter nicht löschen
    Case Else
    Application.DisplayAlerts = False
    objSheet.Delete
    Application.DisplayAlerts = True
    End Select
    Next
    End If
    Call SchutzEin
    Unload UF_Leeren_Verkauf
    End Sub
    
    Gruß
    Franz

    Anzeige
    AW: VBA-Clear.Contents best. Zellinhalte nicht löschen
    30.12.2014 01:27:06
    Debian
    Hah, ich bin also weniger blöd als ich ausschau ;-)
    SPÄSSLE;-)
    Hab so lange probiert, an welcher Stelle ich den Call SchutzAus hinschieben muss, bis es geklappt hat. Einzig, dass das Schutz ausschalten bissle schwerfällig wirkt, bin ich super zufrieden :-)
    Darf ich Dich trotzdem bitten, mit den Ablauf der gesamten Prozedur nochmals auseinanderzusetzen? Selten so einen "speziellen" Code gesehen, der mir so wenig sagt, was er an welcher Stelle tut.

    AW: VBA-Clear.Contents best. Zellinhalte nicht löschen
    30.12.2014 10:20:50
    fcs
    Hallo Debian,
    ich dachte eigentlich, dass ich ausreichend Kommentare eingebaut hatte um zu beschreiben, was der jeweilige Abschnitt des Makros bewirkt.
    Ich hab den Code des Userforms jetzt nochmals mit Kommentaren geschmückt.
    VBA hat übrigens auch eine Hilfe-Funktion, mit der man sich Informationen zu einzelnen Methoden und Funktionen anzeigen lassen kann.
    Gruß
    Franz
    Textdatei mit Userform-Code und zusätzlichen Kommentaren.
    https://www.herber.de/bbs/user/94644.txt

    Anzeige
    AW: VBA-Clear.Contents best. Zellinhalte nicht löschen
    30.12.2014 13:54:52
    Debian
    Hey Franz :-)
    Merci, ich danke Dir. Werd wohl eine Weile brauchen, um das alles durchzuarbeiten und Step by Step nachzuvollziehen, aber ich versuchs :-)

    AW: VBA-Clear.Contents best. Zellinhalte nicht löschen
    30.12.2014 15:25:37
    fcs
    ok, dann Thread nicht mehr als offen kennzeichen.
    Gruß
    Franz

    AW: VBA-Clear.Contents best. Zellinhalte nicht löschen
    30.12.2014 15:26:20
    Debian
    Geht klar :-)

    315 Forumthreads zu ähnlichen Themen

    Anzeige
    Anzeige
    Anzeige

    Links zu Excel-Dialogen

    Beliebteste Forumthreads (12 Monate)

    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Anzeige