1. Liebe Forumsgemeinde,

    aufgrund der Bestimmungen, die sich aus der DSGVO ergeben, müssten umfangreiche Anpassungen am Forum vorgenommen werden, die sich für uns nicht wirtschaftlich abbilden lassen. Daher haben wir uns entschlossen, das Forum in seiner aktuellen Form zu archivieren und online bereit zu stellen, jedoch keine Neuanmeldungen oder neuen Kommentare mehr zuzulassen. So ist sichergestellt, dass das gesammelte Wissen nicht verloren geht, und wir die Seite dennoch DSGVO-konform zur Verfügung stellen können.
    Dies wird in den nächsten Tagen umgesetzt.

    Ich danke allen, die sich in den letzten Jahren für Hilfesuchende und auch für das Forum selbst engagiert haben. Ich bin weiterhin für euch erreichbar unter tti(bei)pcwelt.de.
    Dismiss Notice

Excel: Makro für Zeilenlöschung, wenn mehr als 2 folgende Zeilen leer oder 0 sind.

Discussion in 'Office-Programme' started by sTeFaN1989, Jul 6, 2009.

Thread Status:
Not open for further replies.
  1. Urs2

    Urs2 Megabyte

    Was verstehst Du unter "verbundene Zellen" im definierten Bereich ?

    Dein Befehl für xCell ist richtig für 2 Buchstaben... sofern das Offset tatsächlich -1 ist...

    Falls tatsächlich Dein Druckertreiber hier ärgern sollte, kannst Du diese rote Zeile einfügen und dann testen >
    Code:
                'zeigt vorübergehend alle Abschnitte an... und versteckt später wieder...
        ActiveSheet.Rows.Hidden = False
        [COLOR="Red"]ActiveSheet.ResetAllPageBreaks[/COLOR]
                'versteckt was zu verstecken ist
    For Each xCell In rngAuswahl
    
    Sie löscht alle benutzerdefinierten PageBreaks... und setzt auf DefaultBreaks.

    Gruss Urs
     
  2. sTeFaN1989

    sTeFaN1989 Byte

    Siehe Bild:

    [​IMG]

    Der Bereich AA ist also nicht nur die erste Spalte, so wie bei dir, denn durch die verbunden Zellen (also zum Beispiel die Zelle wo "Einschaltstrom" drinn steht) wird er ja vergrößert (in der Breite).

    Ist das eine mögliche Fehlerquelle??

    Ich kann nicht verstehen was da falsch sein soll, denn mit dem vorherigen "Delete" der Zellen hat alles funktioniert.

    Das mit den Befehl für alle Pagebreak rücksetzen hab ich probiert, jedoch löst das nicht das Problem, dass Fehler beim Hidden auftreten, also dass viel zu viel versteckt wird.
    Es scheint also nicht daran zu liegen.

    ich hab ebenfalls probiert, nochmals alle Bereiche neu zu definieren, jedoch hat dies nichts genutzt.

    :grübel::grübel:
     
  3. Urs2

    Urs2 Megabyte

    Schon wieder diese "verbundenen Zellen", die machen nichts als Kummer...
    Mein Beitrag #33 >
    Wenn Bereich mehrspaltig, dann ist xRange.Count = Anzahl Zeilen x Anzahl Spalten.
    Da müsstest Du xRange.Count schon durch die Anzahl der Spalten dividieren und dann 1 abziehen... um die richtige End-Zeilennummer zu erhalten.

    Aber >>>

    1. Für was sollen denn die verbunden Zellen gut sein ?
    Auf dem Bild kann ich keinen Grund für deren Existenz erkennen. Der Titel ist linksbündig... das wäre er auch unverbunden.

    2. Das Verbinden allein vergrössert noch keinen Bereich !
    In meiner zuletzt geposteten Tabelle > benannter Bereich "B" = A38:A56
    Wenn ich jetzt die Titelzelle A38 verbinde bis E38, dann >
    - bei Click auf "B" (oben links) wird zwar das Feld A38:E56 markiert, aber
    - im Menü Einfügen > Namen > Definieren wird der Bereich wie vorher als A38:A56 angezeigt und >
    - das Makro funktioniert perfekt.

    Da muss sonst etwas für die Bereichs-Vergrösserung gesorgt haben, vielleicht das Einfügen von Spalten...

    Schmeiss den Zellverbund raus, und/oder korrigiere im Menü Einfügen alle Bereichsbezüge auf zB A38:A56

    Du kannst die benannten Bereiche auch nach rechts, ausserhalb der Nutztabelle verschieben.
    Dem Makro wäre das egal, ich würde das aber trotzdem nicht wollen...
    ...beim Bearbeiten würde ich bestimmt einmal vergessen, dass dort diese Bereiche sind/waren...

    Gruss Urs
     
  4. sTeFaN1989

    sTeFaN1989 Byte

    Ja irgentwie schon, aber ich kann mir das nicht erklären warum das mit den "verbunden Zellen" sooo schlimm ist.

    Hab nun in der ersten Spalte keine verbundenen Zellen mehr und die Bereiche in der ersten Spalte definiert.
    UND ES FUNKTIONIERT !!!!!:popcorn:

    Ich kann mir zwar nicht richtig erklären Warum, weil es ja beim ursprünglichen Löschen auch mit den verbunden Zellen richtig sauber funktionierte. Naja egal, hauptsache es geht^^

    ABER:

    Nun hab ich das Problem mit den Seitenumbrüchen:

    1) Es werden alle Pagebreaks resettet.Dadurch existiert wieder das Problem der Seitenumbrüche mitten in Tabelle.

    2) Meine ursprüngliche Variante mit den manuellen Pagebreaks setzen funktioniert nicht mehr, da durch das Verstecken, diese weiter existieren und es somit zu leere Seiten beim Drucken kommt.



    Im ersten (linken) Teil der Tabellen hat es wirklich keinen Sinn, jedoch in den Spalten daneben (wo man etwas eintragen muss, denn dort ist die Formatierung mittig), aber es sind ja eh nur die erste Spalte wichtig für das Makro. Von daher ist das wohl egal.

    Ursprünglich dachte ich nicht, dass es solche Probleme mit verbundenen Zellen gibt und das war praktisch aus einer Vorlage so übernommen.

    Gruß sTeFaN
     
    Last edited: Aug 5, 2009
  5. Hascheff

    Hascheff Moderator

    Hallo,
    Urs wird schon lange meine in solchen Fällen unvermeidliche Bemerkung vermisst haben. Seit der Thread läuft, habe ich es aber nicht geschafft, den Textbaustein von meinem alten PC zu holen.

    Ich habe zwar nicht alle technischen Details des Threads verfolgt, aber ich denke schon, dass ich mit meinen Ratschlägen nicht übertreibe.

    Wenn ich es richtig sehe, ist hier ein Problem der Seitenwechsel an der richtigen Stelle. Das lässt sich in einem Access-Bericht leicht einstellen.
    Ein anderes Problem ist das Weglassen überflüssiger Zeilen/Daten. Das macht Access automatisch.
    Gruß
    Hascheff
     
  6. sTeFaN1989

    sTeFaN1989 Byte

    Hmh Ok. Das Problem ist nur folgendes:

    1) Ich habe noch nie mit Access gearbeitet wenn ich ehrlich bin :(
    Das würde also denk ich eine längere Einarbeitung nach sich ziehen.

    2) Ich habe hier auf Arbeit das ganze Betriebssystem + alle Programme nur Englischsprache, was es nochmals alles erschwert.

    3) Excel kann ja bekanntlich nahezu "Alles" und ich hab schon seid Beginn des Projektes extrem viel gelernt. Ich hab noch ca 4 Wochen für dieses Projekt und ich denk das Problem wird sich noch irgentwie lösen.:idee:

    4) Es wär wirklich denk ich eine riesige Arbeit alles jetzt auf Access umzustellen.


    Außerdem hat ich als allererstes auch überlegt das nicht mit Hilfe von HTML-Programmierung zu lösen, jedoch hätt ich mich dort auch erst einarbeiten müssem, da ich bosher nur C programmiert habe.

    Gruß sTeFaN
     
    Last edited: Aug 5, 2009
  7. Urs2

    Urs2 Megabyte

    @Hascheff......ob die Handhabung diesmal mit einer Datenbank auch einfacher wäre, weiss ich jetzt nicht.

    Das Verstecken/Wiederanzeigen ist ja gut gelöst, nur die variablen Seitenumbrüche...
    Ich kann den Seitenumbruch richtig berechnen und den Umbruch an dieser Stelle einfügen lassen, aber >
    jeder mögliche PageBreak-Befehl, auf jede mögliche Art verwendet, wird von VBA akzeptiert und "ausgeführt"... im Tabellenblatt wird er jedoch nicht wirklich gesetzt.
    Nichts zu machen, ich muss aufgeben... wie schon geschrieben, mit dem Drucken über VBA habe ich kaum Erfahrung.


    @Stefan
    Vielleicht ging es deshalb beim ursprünglichen Löschen >
    - wenn zuerst der einspaltige Bereich markiert und benannt wird, und dann erst die Zellen verbunden werden, bleibt der benannte Bereich einspaltig.
    - wenn jedoch die Zellen zuerst verbunden werden, kann man nachher gar nicht mehr einspaltig markieren.
    Dann muss dieser mehrspaltige Bereich im Menü Einfügen auf eine Spalte korrigiert werden.

    Wenn es Dir besser passt, kannst Du auch eine neue Spalte A einfügen, dort die benannten Bereiche definieren und wenn alles fertig ist, diese neue Spalte A ausblenden.


    Die benutzerdefinierten PageBreaks verschwinden jetzt ?

    Hast Du denn die Zeile "ActiveSheet.ResetAllPageBreaks" immer noch im Makro ?
    Das war nur ein verzweifelter Versuch, das falsche Verstecken zu verhindern...
    ...bevor ich wusste, dass es ja ein mehrspaltiger Bereich geworden ist.
    Schmeiss diese Zeile raus !


    Gruss Urs
     
  8. sTeFaN1989

    sTeFaN1989 Byte

    Ja das funktioniert ja soweit alles...ich hab das schon angepasst.

    Ich hab noch eine Idee, aber ich weiß nicht ob das vielleicht sogar noch komplizierter ist oder nicht.
    Man könnte ja manuell hinter jeden Bereich ein Pagebreak setzen.
    Das Makro müsste dann nur prüfen, ob ein bestimmter Bereich noch auf die Seite mit drauf passt und wenn ja, dann den Pagebreak nach dem Bereich löschen.
    Das Makro müsste also erkennen wieveile Zeilen ein Bereich erhält und durch ein maxZeilenproSeite kann es dann schaun in wie weit das passen würde.

    Ein Problem wär dann nur wieder die "leeren Seiten" die auftreten, man müsste also die Pagebreaks der versteckten Bereiche ebenfalls löschen. Das wiederum macht das widerherstellen, was ja der sinn des Versteckens war, nicht mehr möglich, da ja der Pagebreak dann gelöscht ist und er müsste beim Wiederherstellen neu setzen.......hmh son mist....

    Ist nur so ne verzweifelnde Idee, aber wohl eher sinnlos :P

    Gruß sTeFaN
     
    Last edited: Aug 6, 2009
  9. Urs2

    Urs2 Megabyte

    Richtig! Da man so ja weiss, welche Breaks zu Beginn wo drin sind, könnte man diese auch gezielt löschen. Das Problem ist dann das Wiedereinfügen, das ich nicht gelöst bekomme.

    In meiner letzten Variante in #38 ist ja noch das auskommentierte Sub für meine Versuche drin. Nachher hatte ich es noch mit weiteren Varianten versucht, mit meinem Lexmark-Druckertreiber, und mit jenem von PDFCreator.

    Wenn dieses Sub im Schrittmodus läuft, sieht man genau, dass es alles richtig berechnet und die Breaks am richtigen Ort "setzt"... nur kommen diese Befehle nie in der Tabelle an.

    Ausser in Urdu, Kanak und Platt habe ich in allen Sprachen gesucht >
    Das Problem existiert, eine Lösung habe ich jedoch nirgends gesehen...
    Ein "bestägtigter" Code hatte mir das Blatt nur mit seltsamen Buchstaben in Tausenden von Zellen gefüllt...

    Entweder übersehe ich einen banalen Fehler, oder es geht tatsächlich nicht... oder nur auf gewissen Systemen.

    Gruss Urs
     
  10. sTeFaN1989

    sTeFaN1989 Byte

    Ok dann muss ich mal schaun, dann lass ich das einfach erstmal ohne die Pagebreaks und man muss das dann zur Not selbst immer manuell setzen.

    Trotzdem Danke für alles.

    Fals noch irgentwelche Probleme auftreten, melde ich mich wieder :)
     
  11. sTeFaN1989

    sTeFaN1989 Byte

    Hi Urs,

    kannst du mir kurz nochmal helfen?!

    also ich hab ein Makro gebaut, was mir ein bestimmtes Sheet erstellt/kopiert und so....Das funktioniert soweit auch....

    aber wie komm ich in das PageSetup Menu um dort die Einstellungen bezüglich Ränder etc zu machen.

    Ich hatte das jetzt so:
    Code:
    ' PageSetup
    Sheets(5).Select
        With ActiveSheet.PageSetup
            .LeftHeader = ""
            .CenterHeader = ""
            .RightHeader = ""
            .LeftFooter = ""
            .CenterFooter = ""
            .RightFooter = ""
            .LeftMargin = Application.InchesToPoints(0.75)
            .RightMargin = Application.InchesToPoints(0.75)
            .TopMargin = Application.InchesToPoints(1)
            .BottomMargin = Application.InchesToPoints(1)
            .HeaderMargin = Application.InchesToPoints(0.5)
            .FooterMargin = Application.InchesToPoints(0.5)
            .PrintHeadings = False
            .PrintGridlines = False
            .PrintComments = xlPrintNoComments
            .CenterHorizontally = False
            .CenterVertically = False
            .Orientation = xlPortrait
            .Draft = False
            .PaperSize = xlPaperA4
            .FirstPageNumber = xlAutomatic
            .Order = xlDownThenOver
            .BlackAndWhite = False
            .Zoom = False
            .FitToPagesWide = 1
            .FitToPagesTall = 1
        End With
    Es funktioniert aber irgentwie nicht. Weißst du warum??? Ist bestimmt irgentwas total falsch daran oder?

    Grüße

    Stefan
     
  12. Hascheff

    Hascheff Moderator

    Kannst du nicht etwas genauer beschreiben, was du eigentlich willst?

    Kommt eine Fehlermeldung oder passiert nur nicht das Gewünschte?

    Soll das Makro den Dialog aufrufen, damit du selbst Änderungen vornehmen kannst oder sollen bestimmte Einstellungen verändert werden?

    Gruß
    Hascheff
     
  13. sTeFaN1989

    sTeFaN1989 Byte

    Sorry hatte gedacht das war mit dem Quelltext eindeutig....das Makro soll prakitsch still und heimlich die Änderungen vornehmen, ohne das man da zusätzlich was machen muss.

    keine Fehlermeldung, beim Kontrollblick übers Optionenmenu PageSetp fällt dann auf, dass nichts geändert wurde von dem Makro.


    bestimmte Einstellungen verändert....also praktisch still und heimlich^^

    Gruß
     
  14. Urs2

    Urs2 Megabyte

    ...woher hast Du diese IndexNummer 5 ?
    Dein Code funktioniert, aber möglicherweise... hast Du das falsche Blatt formatiert !

    Die IndexNummer hat nichts mit den Nummern zu tun, die man im VB-Editor sieht (zB Tabelle5...).
    Sie ist die laufende Nummer der Blätter in der Mappe (inklusive versteckte Blätter), wenn man die Blatt-Tabs von links weg zählt.

    Das ist eine fehlerträchtige Art des Bezuges !
    Wenn ein Blatt dazukommt, gelöscht oder verschoben wird, stimmt die im Makro fest codierte IndexNummer nicht mehr...

    Ich verwende immer >
    Sheets("NameDesBlattes")........

    So gilt der Bezug für dieses Blatt, wohin es auch verschoben wird.
    Wenn der Blattname geändert wurde, meldet sich der Debugger schon, er könne das Blatt nicht finden...
    ...im Gegensatz zur Indexnummer. Hier wird einfach ein Blatt bearbeitet, solange der Index nicht höher ist als die Blattanzahl.

    Ueberprüfe das !


    Uebrigens >
    Bei einem von diesem Thread unabhängigen Problem, eröffne bitte einen neuen Thread mit einem aussagekräftigen Titel.
    1. bin ich weit von der Allwissenheit entfernt, andere können manchmal besser helfen, und
    2. können dann über die hiesige Suchfunktion oder über Google auch andere Leute auf das Ergebnis zugreifen.

    Der Titel dieses Threads hat zwar auch nichts mehr mit dem Inhalt zu tun, aber das hatte sich in der Entwicklung so ergeben...

    Gruss Urs
     
  15. sTeFaN1989

    sTeFaN1989 Byte

    Ahh ok, jo das war der Fehler.. ich dachte die Nummer bezieht sich auf die echte Sheetnummer...

    Ok ich erstell nächstes mal ein neues Thema..

    Gruß

    Stefan
     
  16. sTeFaN1989

    sTeFaN1989 Byte

    Ich denk ein neues Thema macht Sinn :)

    Gruß sTeFaN
     
  17. Urs2

    Urs2 Megabyte

    Aber sicher..... wenn es Sinn machen würde !

    Ansonsten..... :confused:.......über diese epochale Meldung.... (welches Mittel intus ?) .......

    Gruss Urs
     
  18. sTeFaN1989

    sTeFaN1989 Byte

    Sorry irgentwie war da war komisch:
    Ich hatte ne Mail bekommen und jetzt ist der Beitrag plötzlich wieder weg?! vielleicht verschoben wurden vo Admin?!

    Siehe Mail:

    Hallo sTeFaN1989,

    liza8 hat auf das Thema 'Excel: Makro für Zeilenlöschung, wenn mehr als 2 folgende Zeilen leer oder 0 sind.' im Forum 'Office-Programme Microsoft Office, OpenOffice.org, StarOffice' bei PC-WELT - FORUM geantwortet.

    Dieses Thema ist hier zu finden:
    http://www.pcwelt.de/forum/office-p...mehr-2-folgende-zeilen-leer-0-a-new-post.html

    Dies ist der Beitrag, der gerade geschrieben wurde:
    ***************
    Hallo.
    ich habe auch eine Frage zu Markos ... Und zwar ich ich viele TextDateien die so aufgebaut sind:

    % 5-CVT-Getriebe 
    % München 
    %
    07.08.2009 
    %
    prwht_Test 
    100
    100
    20
    20
    50
    50
    100
    100
    100
    100
    100
    100
    100
    100
    100
    100
    100
    100
    100
    100
    100
    100
    100
    100
    100
    100
    100


    Davon hab ich dann mehrere und ich würd die gern sortiert in einer Excel Tabelle haben und zwar dass halt immer die Werte für jedes Testgeräusch (hier: "5-CVT-Getriebe") eine Spalte und für jeden Probanden (hier "prwht") ein Blatt. Dabei werde ich haber pro proband und pro geräusch 3 mal diesen Datensatz haben.

    ist das irgendwie machbar? dass man nicht immer 100 mal klicken muss ?
    ***************


    Es könnte noch weitere Antworten auf das Thema geben, jedoch erhalten Sie keine zusätzlichen Benachrichtigungen, bis Sie das Forum wieder besucht haben.

    Mit freundlichen Grüßen

    PC-WELT - FORUM

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    Sie erhalten diese E-Mail, da Sie das Thema 'Excel: Makro für Zeilenlöschung, wenn mehr als 2 folgende Zeilen leer oder 0 sind.' abonniert haben.
     
  19. Urs2

    Urs2 Megabyte

    Hallo Stefan,

    Jetzt ist alles klar... das sah schon seltsam aus...

    Liza8 hatte sich mit ihrer Frage an unseren Thread angehängt... sie wollte sich die Mühe für einen Eigenen wohl sparen...
    Ein Moderator hatte dies bemerkt, und den Beitrag verschoben >> http://www.pcwelt.de/forum/office-programme-microsoft-office-openoffice-org-staroffice/365691-bestimmte-daten-mehreren-txt-dateien-lesen-excel-speichern.html#post2058198

    Da ich den Liza-Beitrag gar nie gesehen hatte, aber dafür Deine Antwort darauf...
    ...kamen mir Zweifel an....

    Gruss Urs
     
  20. sTeFaN1989

    sTeFaN1989 Byte


    jop hätt genauso reagiert :)
     
Thread Status:
Not open for further replies.

Share This Page