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 dem automatisches Inhaltsverzeichnis

    in Microsoft Word Hilfe
    Probleme mit dem automatisches Inhaltsverzeichnis: Hallo zusammen, ich stehe vor dem Problem, dass ich in einem automatischen Inhaltsverzeichnis zwei unterschiedliche Darstellung von Seitenzahlen haben möchte. Ich versuche es unten zu...
  3. Probleme mit bedingter Formatierung

    in Microsoft Excel Hilfe
    Probleme mit bedingter Formatierung: Hallo ihr Lieben, folgende Herausforderung: Ich möchte die Formatierung des Wertes in B7 (bzw. auch alle weiteren Werte in Spalte B) nach folgenden Bedingungen anpassen: 1. WENN C7<0,05 DANN...
  4. Probleme mit Formatierung in geschütztem Word-Dokument – Schriftstil nicht änderbar

    in Microsoft Word Hilfe
    Probleme mit Formatierung in geschütztem Word-Dokument – Schriftstil nicht änderbar: Hallo zusammen, ich habe ein Word-Dokument erstellt, das als Vorlage dient und entsprechend geschützt ist. Dabei sollen folgende Anforderungen erfüllt werden: Schriftart: Die Schriftart darf...
  5. VBA-Makro zur Zellenformatierung Syntax probleme

    in Microsoft Excel Hilfe
    VBA-Makro zur Zellenformatierung Syntax probleme: Hallo zusammen, ich möchte per Makro Zellen formatieren. Tausender-Trennzeichen 3 Nachkommastellen Positive Zahlen Schwarz Negative Zahlen Rot Nullwert mit - Hinter der Zahl soll noch eine...
  6. Probleme mit Makro das jede Zeile in der ein "Text" steht löscht?!

    in Microsoft Excel Hilfe
    Probleme mit Makro das jede Zeile in der ein "Text" steht löscht?!: Hallo Leute, Ich habe mal wieder ein Problem, ich hoffe ihr könnt mir hier helfen! :) Habe hier schon ein Makro soweit, aber es macht halt noch nicht genau das was es soll, woran ich natürlich...
  7. Probleme mit dem Kopieren aus Daten aus OneNote 2016

    in Sonstiges
    Probleme mit dem Kopieren aus Daten aus OneNote 2016: Hallo, ich habe neuerdings Probleme mit dem Kopieren von Texten aus OneNote heraus. Bei Whatsapp wird z. B. dann noch mal ein Bild mit eingefügt. Das gleiche Problem habe ich bei einem Webmailer....
  8. 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...
  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