Office: (Office Version unbekannt) Probleme beim öschen von Zellen über VBA

Helfe beim Thema Probleme beim öschen von Zellen über VBA in Microsoft Excel Hilfe um das Problem gemeinsam zu lösen; Guten Morgen Mitstreiter Meine Kenntnisse im Umgang mit VBA sind sehr schlecht. Ich habe versucht mit dem Makrorekorder das löschen von diversen... Dieses Thema im Forum "Microsoft Excel Hilfe" wurde erstellt von Andy1962, 21. Oktober 2020.

  1. Andy1962 Erfahrener User

    Probleme beim öschen von Zellen über VBA


    Guten Morgen Mitstreiter

    Meine Kenntnisse im Umgang mit VBA sind sehr schlecht.
    Ich habe versucht mit dem Makrorekorder das löschen von diversen Zellen zu automatisieren. Button einrichten und mit dem so erstellten Makro war einfach. Nur leider gibt das Makro dann eine Fehlermeldung aus.

    Das Makro:

    Code:
    Sub Makro11()
    '
    ' Makro11 Makro
    '
    ' Tastenkombination: Strg+Umschalt+L
    '
        Union(Range( _
            "CA31:CA80,CE31:CE80,F31:F80,H31:H80,J31:J80,L31:L80,N31:N80,P31:P80,R31:R80,T31:T80,V31:V80,X31:X80,Z31:Z80,AB31:AB80,AD31:AD80,AF31:AF80,AH31:AH80,AJ31:AJ80,AL31:AL80,AN31:AN80,AP31:AP80,AR31:AR80,AT31:AT80,AV31:AV80,AX31:AX80,AZ31:AZ80,BB31:BB80,BD31:BD80" _
            ), Range("BN31:BN80,BW31:BW80")).Select
        Range("CE31").Activate
        Selection.ClearContents
        Range("F31").Select
    End Sub
    
    Die Fehlermeldung:
    Ich hoffe ihr könnt mir weiter helfen

    Schon mal ganz lieben Dank für Eure Hilfe

    Gruß
    Andreas
     
    Andy1962, 21. Oktober 2020
    #1
  2. Andy1962 Erfahrener User
    Hallo Mitstreiter,

    hab das Problem jetzt so gelöst, dass ich ein Makro gebastelt habe, wo die Löschung in drei Schritten erfolgt.

    Waren dem Makro wohl sonst zu viele Zellen die es auf einmal bearbeiten sollte.

    Oder gibt es einen anderen Grund dafür, dass das erste Makro nicht lief?

    Und nochmals danke an alle die sich mit meinem Problem befasst haben

    Gruß
    Andreas
     
    Andy1962, 21. Oktober 2020
    #2
  3. Beverly
    Beverly Erfahrener User
    Hi Andreas,

    du musst innerhalb von Union alle Bereiche in Range(....) einbinden:

    Code:
        Union(Range("CA31:CA80"), Range("CE31:CE80"), Range("F31:F80"), Range("H31:H80"), Range("J31:J80"), Range("L31:L80"), _
            Range("N31:N80"), Range("P31:P80"), Range("R31:R80"), Range("T31:T80"), Range("V31:V80"), Range("X31:X80"), _
            Range("Z31:Z80"), Range("AB31:AB80"), Range("AD31:AD80"), Range("AF31:AF80"), Range("AH31:AH80"), Range("AJ31:AJ80"), _
            Range("AL31:AL80"), Range("AN31:AN80"), Range("AP31:AP80"), Range("AR31:AR80"), Range("AT31:AT80"), Range("AV31:AV80"), _
            Range("AX31:AX80"), Range("AZ31:AZ80"), Range("BB31:BB80"), Range("BD31:BD80"), Range("BN31:BN80"), Range("BW31:BW80")).ClearContents
    
    

    Außerdem kannst du auf Select und Activate verzichten.

    Bis später,
    Karin
     
    Beverly, 21. Oktober 2020
    #3
  4. Andy1962 Erfahrener User

    Probleme beim öschen von Zellen über VBA

    Hallo Karin

    Du bist meine Heldin des Tages :-)

    Funktioniert jetzt einwandfrei. Wobei ich was den Select-Befehl am Ende gelassen habe, da hierdurch die erste zum Eintrag zur Verfügung stehende Zelle schon ausgewählt wird.

    Nach mal ganz lieben Dank für Deine Hilfe :-)

    Gruß Andreas
     
    Andy1962, 22. Oktober 2020
    #4
  5. Andy1962 Erfahrener User
    Code:
    
    
    Jetzt wollte ich die Bereiche in der VBA löschen soll noch erweitern, aber jetzt gibt mir VBA eine Fehlermeldung raus.

    Das ist der jetzt etwas angepasste VBA Code

    Code:
    Sub loeschen_in_3_schritten()
    '
    ' loeschen_in_3_schritten Makro
    '
    
    '
      Union(Range("F31:F80"), Range("H31:H80"), Range("J31:J80"), Range("L31:L80"), Range("N31:N80"), Range("P31:P80"), _
            Range("R31:R80"), Range("T31:T80"), Range("V31:V80"), Range("X31:X80"), Range("Z31:Z80"), Range("AB31:AB80"), _
            Range("AD31:AD80"), Range("AF31:AF80"), Range("AH31:AH80"), Range("AJ31:AJ80"), Range("AL31:AL80"), Range("AN31:AN80"), _
            Range("AP31:AP80"), Range("AR31:AR80"), Range("AT31:AT80"), Range("AV31:AV80"), Range("AX31:AX80"), Range("AZ31:AZ80"), _
            Range("BB31:BB80"), Range("BD31:BD80"), Range("BF31:BF80"), Range("BH31:BH80"), Range("BJ31:BJ80"), Range("BL31:BL80"), _
            Range("BN31:BN80"), Range("BP31:BP80"), Range("BW31:BW80"), Range("BX31:BX80"), Range("CB31:CB80"), Range("CF31:CF80")).ClearContents
           Range("F31").Select
    End Sub
    Und das die Fehlermeldung
    Vorher ging es wunderbar, nachdem Karin mir geholfen hatte. Ich hab doch nur noch ein paar Spalten zum löschen hinzugefügt.

    Die betroffenen Spalten sind auch nicht von mir geschützt.

    Ich hoffe es kann mir auch hier wieder jemand helfen

    Schon mal ganz lieben Dank im Voraus für eure Hilfe und Mühe

    Gruß
    Andreas
     
    Zuletzt bearbeitet: 28. Oktober 2020
    Andy1962, 28. Oktober 2020
    #5
  6. Beverly
    Beverly Erfahrener User
    Hi Andreas,

    auch Union hat eine Grenze, wieviele Bereiche auf einen Ritt zugewiesen werden können - sind es zu viele, dann Fehlermeldung. In dem Fall muss man den Gesamtbereich in Teilbereiche aufteilen, diese einer Variablen zuweisen und mit den anderen Teilbereichen zusammenführen:

    Code:
    Sub LoeschenZusammengesetzterBereiche()
        Dim rngBereich As Range
        Set rngBereich = Union(Range("F31:F80"), Range("H31:H80"), Range("J31:J80"), Range("L31:L80"), Range("N31:N80"), Range("P31:P80"), _
            Range("R31:R80"), Range("T31:T80"), Range("V31:V80"), Range("X31:X80"), Range("Z31:Z80"), Range("AB31:AB80"), _
            Range("AD31:AD80"), Range("AF31:AF80"), Range("AH31:AH80"), Range("AJ31:AJ80"), Range("AL31:AL80"), Range("AN31:AN80"))
        Set rngBereich = Union(rngBereich, _
            Range("AP31:AP80"), Range("AR31:AR80"), Range("AT31:AT80"), Range("AV31:AV80"), Range("AX31:AX80"), Range("AZ31:AZ80"), _
            Range("BB31:BB80"), Range("BD31:BD80"), Range("BF31:BF80"), Range("BH31:BH80"), Range("BJ31:BJ80"), Range("BL31:BL80"), _
            Range("BN31:BN80"), Range("BP31:BP80"), Range("BW31:BW80"), Range("BX31:BX80"), Range("CB31:CB80"), Range("CF31:CF80"))
        rngBereich.ClearContents
        Range("F31").Select
    End Sub
    
    
    Bis später,
    Karin
     
    Beverly, 28. Oktober 2020
    #6
  7. Andy1962 Erfahrener User
    Guten Morgen meine Heldin :-)
    Äh... wollte sagen
    Guten Morgen Karin.

    Hat natürlich bestens geklappt. Danke dafür :-)

    Wobei ich zugeben muss, dass ich Deinen Text so gar nicht verstanden habe ;-)
    Wieviel Bereiche kann ich denn in einem Ritt hier zuweisen?
    Ist der Code "Set rngBereich = Union(rngBereich, _" der jenige welche, der einen Bereich definiert? Und wie oft kann ich ihn einsetzen?

    Du siehst, mein VBA ist echt mieß :-)

    Formeln bekomme ich ja schon sehr gut hin, aber VBA ...

    Ganz liebe Grüße
    Andreas
     
    Andy1962, 29. Oktober 2020
    #7
  8. Beverly
    Beverly Erfahrener User

    Probleme beim öschen von Zellen über VBA

    Hi Andreas,

    Union kann - wie schon gesagt - nur eine begrenzte Anzahl an Range-Bereichen auf einmal aufnehmen (die genaue Anzahl kannst du selbst herausfinden, indem du schrittweise jeweils 1 Bereich mehr verwendest - sobald es 1 Bereich zuviel ist, kommt ja die Fehlermeldung). Deshalb bedient man sich einer Range-Variablen, der man sozusagen "kleine Häppchen" nacheinander zuweist. Dabei ist zu beachten, dass man die neuen Teilbereiche zu den bereits auf der Variablen vorhandenen hinzufügen muss, sonst gingen diese verloren - deshalb eben "Set rngBereich = Union(rngBereich, ...."

    Ich weiß, jeder Vergleich hinkt, aber du musst dir das so vorstellen: du hast einen großen Behälter (deine Variable rngBereich), in den du einen Haufen Sand (deine Range-Bereiche) bringen musst. Dir steht aber nur eine kleine Schaufel (der Union-Befehl) zur Verfügung, die den gesamten Sandhaufen nicht auf einmal transportieren kann, folglich musst du die Schaufel mehrmals benutzen, indem die bereits im Behälter vorhandene Sandmenge (Ranges) um die jeweilige Menge, die auf die Schaufel passt, ergänzt werden (das macht sozusagen der Set-Befehl), damit der gesamte Sandhaufen in den Behälter wandert.

    Ob es für die Anzahl an hintereinander verwendbaren Set-Befehlen eine Grenze gibt kann ich dir leider nicht sagen, aber m.E. ist nicht die Anzahl an Set-Befehlen ausschlaggebend sondern die Größe, wieviel eine Range-Variable Speicher zur Verfügung stellen kann.

    Ich hoffe, ich konnte dich ein wenig "erleuchten" :D

    Bis später
    Karin
     
    Zuletzt bearbeitet: 29. Oktober 2020
    Beverly, 29. Oktober 2020
    #8
  9. Andy1962 Erfahrener User
    Hallo Karin
    Danke für den Vergleich.
    Das mit dem Sand hab sogar ich jetzt verstanden ;-)

    Und danke auch noch mal für Deine schnelle Hilfe.

    Ich wünsche Dir noch eine angenehme Woche und vor allem viele gute Alternativen ab nächster Woche, wenn es heißt "Kein Kino, kein Theater, Keine Bar oder Club, keine ..."

    Bis denne liebe Grüße

    Andreas
     
    Andy1962, 29. Oktober 2020
    #9
  10. Moin!
    Darf ich mal fragen, warum Du diese Zellen "löschen" (richtiger wäre ja, den Inhalt entfernen) willst?
    Handelt es sich um ein Formular?

    Dann wäre es erheblich besser, Du würdest die Datei mit allen Formeln, aber ohne Inhalte als Vorlage (.xltx oder .xltm) speichern und jeweils eine neue Datei auf Basis dieser Vorlage öffnen.

    Gruß Ralf
     
Thema:

Probleme beim öschen von Zellen über VBA

Die Seite wird geladen...
  1. Probleme beim öschen von Zellen über VBA - Similar Threads - Probleme öschen Zellen

  2. Probleme mit Summewenn bei neuer EXCEL Version

    in Microsoft Excel Hilfe
    Probleme mit Summewenn bei neuer EXCEL Version: Hallo zusammen, ich bin ratlos. In meinem alten EXCEL sheet hat die Funktion =SUMME(WENN(JAHR($E$7:$E$54)=2019;$G$7:$G$54)) super funktioniert. Mit der aktuellen EXCEL Version jetzt aber nicht...
  3. Office 365 / Word 365 / Win 10 / Probleme

    in Microsoft Word Hilfe
    Office 365 / Word 365 / Win 10 / Probleme: Also wenn ich mein 1.200 Seiten Dokument öffne, im Gegensatz zu Win 7 / Office 2010 / Word, geht das Öffnen langsamer Es dauert in der Frühe bis zu 10 Sekunden dass es öffnet und am Nachmittag an...
  4. Probleme mit Anführungszeichen

    in Microsoft Word Hilfe
    Probleme mit Anführungszeichen: Hallo Leute, ich habe unter Word unter Windows 10 folgendes Problem: Ich habe mehrere Dokumente in der Einstellung mit geraden Anführungszeichen geschrieben. Nun möchte ich sie nachträglich in...
  5. Probleme mit Autoupdate

    in Microsoft Word Hilfe
    Probleme mit Autoupdate: Liebe alle, nach Umstieg von Office 2011 für Mac auf Office 2016 für Mac kam täglich der Autoupdater, auch nachdem ich alle Programme auf den neuesten Stand gebracht habe. Nervig. Deshalb habe ich...
  6. Probleme mit WENN(ODER - Verknüpfung

    in Microsoft Excel Hilfe
    Probleme mit WENN(ODER - Verknüpfung: Hallo, in den Spalten A und B sollen Ziffern stehen, wobei entweder A oder B ausgefüllt ist. In C soll in Anhängigkeit des Wertes in A oder B eine Auswertung gefahren werden: Wenn A < 5...
  7. Office 2021 ProPlus. Literaturverzeichnis nach IEEE 2006 macht Probleme

    in Microsoft Word Hilfe
    Office 2021 ProPlus. Literaturverzeichnis nach IEEE 2006 macht Probleme: Gott, mich ärgert das wieder alles. Office 2021 ProPlus installiert. Ein Literaturverzeichnis nach IEEE 2006 erstellt. Zwei Quellen hinzugefügt. Mein Problem ist: Umbruch der [1] und [2]...
  8. Probleme mit Makros und Grafiken nach Umstieg von Word 2011 auf Office 365 (Mac)

    in Microsoft Word Hilfe
    Probleme mit Makros und Grafiken nach Umstieg von Word 2011 auf Office 365 (Mac): Liebes Forum, ich bin kann selbst kaum VBA, hab aber mal einige Makros aufgenommen und dann abgeändert, bin also alles andere als ein Profi. 2015 hat jemand im FOrum (office-loesung.de), dessen...
  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