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. RPP63
    RPP63 Erfahrener User
    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. Hilfe bei fertigstellung (mehrere "Probleme")

    in Microsoft Excel Hilfe
    Hilfe bei fertigstellung (mehrere "Probleme"): Hallo zusammen, ich arbeite nun schon etwas an dieser Datei und komme jetzt nicht mehr weiter (wahrscheinlich, weil es langsam zu viel für ein ungeschultes Auge wird und ich wie gesagt ungeschult...
  3. vlookup macht probleme

    in Microsoft Excel Hilfe
    vlookup macht probleme: Hallo liebe Forumsgemeinschaft! Leider habe ich nah einigen Monaten doch wieder Probleme. Ich wollte mein Tool wieder mal verbessern, und beim finalen Schritt macht es Probleme. Tabelle6 =...
  4. Probleme mit Formularfilter

    in Microsoft Access Hilfe
    Probleme mit Formularfilter: Hallo, ich habe in meiner kleinen TestDB ein Filterproblem. Übergebe ich ein Filterkriterium beim Öffnen des Formulars (Schaltfläche "Teilnehmer aus Neuss") oder verwende ich als Filter eine...
  5. Apple (Sur) und Probleme mit Window Teams

    in Microsoft Teams Hilfe
    Apple (Sur) und Probleme mit Window Teams: Hallo, seit Tagen versuche ich Window Teams zu installieren. Bei der Anmeldung - Microsoft- läuft alles gut. Auch einloggen ins Teams aber dann heisst es nur noch am oberen Rand „ am...
  6. [Probleme im Schulbetrieb] Chats & Co.: Übergriffige Fremdsteuerung von Stummschaltung und ...

    in Microsoft Teams Hilfe
    [Probleme im Schulbetrieb] Chats & Co.: Übergriffige Fremdsteuerung von Stummschaltung und ...: Liebe Alle, da - offensichtlich - sämtliche Lehrkräfte, einschließlich mir, keine Kenntnis der Möglichkeiten von Windows Teams haben und es - wie frustrierend für alle - laufend dazu kommt, dass...
  7. Probleme mit verschiedenen Lizenzen und Teams

    in Microsoft Teams Hilfe
    Probleme mit verschiedenen Lizenzen und Teams: Hallo, wie das derzeit so läuft, befinde ich mich gerade im Home Office und arbeite an meinem privaten PC. Auf diesem befindet sich auch eine gültige Office 365 Lizenz von meiner Schul-bzw. Uni...
  8. Probleme beim Einloggen MS Teams nach Wechsel in eine andere Organisation

    in Microsoft Teams Hilfe
    Probleme beim Einloggen MS Teams nach Wechsel in eine andere Organisation: Guten Tag, ich habe bei MS Teams nach dem Wechsel in eine andere Organisation keinen Zugriff mehr auf meine eigene Organisation. Das Problem besteht auch über den Webbrowser. Ich komme nach...