MS-Office-Forum
Google
   

Zurück   MS-Office-Forum > Microsoft Office > Microsoft Excel
Registrieren Forum Hilfe Alle Foren als gelesen markieren

Banner und Co.

Antworten
Ads Der Renner, 11 Entwicklertools für Access, Tipps & Trick und offene Datenbanken zum einzigartigen Preis.
Themen-Optionen Ansicht
Alt 18.05.2017, 14:12   #1
Warlord45
Neuer Benutzer
Neuer Benutzer
Standard VBA - Makro zum Zelleninhalt löschen und Laufzeitfehler dank Diagramm

Hallo ihr VBA-Spezialisten,

ich hoffe hier auf die Hilfe einiger eingefleischter VBA Profis, da ich leider noch Anfänger bin.
Ich bin studentische Hilfskraft und arbeite für meinen Prof. gerade an ner Sache in Excel mit VBA.
Mein Problem liegt in folgendem Code:

Sub löschen()

Sheets("Eingabemaske-Bilanz+GuV").Select

Dim Bereich As Range
Dim Zelle As Range

Set Bereich = ActiveSheet.Range("A1:A200")
For Each Zelle In Bereich
If Zelle = "" Then
Zelle.Offset(0, 1).ClearContents

End If

Next Zelle

Set Bereich = ActiveSheet.Range("B1:B200")
On Error Resume Next
For Each Zelle In Bereich
If Zelle = "" Then
Zelle.Offset(0, -1).ClearContents
End If

Next Zelle

Set Bereich = ActiveSheet.Range("B1:B200")
For Each Zelle In Bereich
If Zelle.Value = 0 Then
Zelle.Offset.ClearContents
Zelle.Offset(0, -1).ClearContents
End If

Next Zelle

Selection.Range ("A1")

End Sub

Soweit, so simpel. Damit sollen einfach nur Zellen gelöscht werden, sobald der Inhalt obsolet ist.
Bis vor kurzem hat auch alles noch tatellos funktioniert. Nun musste ich im Rahmen meiner Aufgabe aber einen Diagrammtacho und eine dynamische Prozentanzeige in Excel integrieren.
Hier begann nun das Problem. Jedes mal wenn der oben genannte Code ausgeführt wird: Laufzeitfehler, Excel stürzt ab.
Besagte Diagramme sind nicht im selben Datenblatt und greifen auch auf keine gemeinsamen Zellen zu.
Soblad ich besagte Diagramme wieder lösche, kein Problem. Mein Prof. will die Diagramme allerdings drin haben.
Bin mit meinem Latein leider am Ende.
Leider kann ich nicht einfach die Datei zur Verfügung stellen, da das Ganze wie gesagt mit der Arbeit zu tun hat.
Falls jemand ne Idee hat bzw. einfach nen anderen Code mit der selben Funktion wäre ich sehr dankbar.

Mfg J.D.

PS: Meinen Prof. kann ich nicht Fragen, der hat noch eigenen Angaben keine Anhnung von VBA.
Warlord45 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 18.05.2017, 16:37   #2
poltergeist
MOF User
MOF User
Standard

Hallo J.D.

Vielleicht so!

Gruß Poltergeist

Ich hoffe das ich nichts durcheinander brachte

Code:

Sub löschen()
    Dim DatenArray() As Variant
    Dim ZeilenZaehler As Integer
    Worksheets("Eingabemaske-Bilanz+GuV").Activate
    DatenArray = Range("A1:B200")
    For ZeilenZaehler = 1 To UBound(DatenArray, 1)
        If DatenArray(ZeilenZaehler, 1) = "" Then Cells(ZeilenZaehler, 2).ClearContents
        If DatenArray(ZeilenZaehler, 2) = "" Or DatenArray(ZeilenZaehler, 2) = 0 Then Cells(ZeilenZaehler, 1).ClearContents
    Next ZeilenZaehler
End Sub
poltergeist ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 18.05.2017, 16:51   #3
poltergeist
MOF User
MOF User
Standard

Hallo Hallo J.D.

Sollten keine Formeln in den Zellen sein,liesse sich das Array auch in einem Rutsch zurückschreiben ohne Cells zugriffe
oder
Mit Überschrift!
Nutzung des Autofilters und Bearbeitung von den sichtbaren Zellen!

Gruß Poltergeist
poltergeist ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 19.05.2017, 15:59   #4
Warlord45
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Standard Danke, aber ...

Hallo Poltergeist,

danke für den Code. Der funktioniert auch, nur leider nicht wenn die oben schon erwähnten Diagramme eingefügt sind.

Sobald die Diagramme gelöscht sind, funktioniert dein Code. Das tut meiner aber auch.

Hatte ja wirklich die Hoffnung, das sich der Fehler durch nen anderen Code einfach in Luft auflösen würde.

Trotzdem vielen Dank für die Hilfe.

Mfg
J.D.
Warlord45 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 20.05.2017, 03:56   #5
poltergeist
MOF User
MOF User
Standard

Hallo J.D.

Lege mal eine neue Mappe an,ob das Problem reproduzierbar ist!
Diagramme neu anlegen!

Als Tip zu deinem Code!
On Error Resume next(Fehler unterdrückung) kompliziert solche Problematik

Gruss Poltergeist
poltergeist ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 21.05.2017, 18:29   #6
Warlord45
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Standard Siehe Anhang!

Hallo Poltergeist,

ich hab mich jetzt mal überwunden und mal den kritischen Teil als Anhang hochgeladen.
Dabei sind nur die problematischen Blätter enthalten. Somit wird mir mein Prof. hoffentlich nicht den Kopf abreißen.
Vielleicht kannst du dir ja nen Reim drauf machen, wenn du es mal vor dir siehst.
Es geht dabei ums Makro "Formatieren" in Modul 1.

Schonmal danke fürs anschauen.

Passwort: cw2017

Mfg
J.D.
Angehängte Dateien
Dateityp: xlsm TEST JAA.xlsm (54,1 KB, 3x aufgerufen)
Warlord45 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 21.05.2017, 18:50   #7
poltergeist
MOF User
MOF User
Standard

Hallo Warlord45

Bitte im Xls Format,unter saveas erreichbar
Oder andere User schauen mal drüber

Gruß poltergeist
poltergeist ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 21.05.2017, 19:12   #8
Beverly
MOF Guru
MOF Guru
Standard

Hi,

deine Daten beginnen doch erst ab Zeile 4, deshalb solltest du auch den Bereich erst ab Zeile 4 definieren.

Der Fehler kommt weil du verbundene Zellen verwendest - du musst also vorher prüfen, ob es sich um verbundene Zellen handelt und wenn nicht, dann den eigentlichen Code ausführen:

Code:

Sub Formatierungen()
    Dim Bereich As Range
    Dim Zelle As Range
    
    Set Bereich = ActiveSheet.Range("A4:A200")
    For Each Zelle In Bereich
        If Zelle.MergeCells = False Then
            If Zelle = "" Then Zelle.Offset(0, 1).ClearContents
        End If
    Next Zelle
    
    Set Bereich = ActiveSheet.Range("B4:B200")
    For Each Zelle In Bereich
        If Zelle.MergeCells = False Then
            If Zelle = "" Then Zelle.Offset(0, -1).ClearContents
            If Zelle.Value = 0 Then
                Zelle.ClearContents
                Zelle.Offset(0, -1).ClearContents
            End If
        End If
    Next Zelle
End Sub

Den Code an sich habe ich jetzt nicht überprüft.


GrußformelBeverly's Excel - Inn

__________________

Bitte im Beitrag eine kurze Rückmeldung auch in dem Fall geben, wenn ein Problem gelöst wurde - dies hilft auch anderen Usern, wenn sie den betreffenden Thread lesen.
Möchtest du dich außerdem für die Hilfe bei der Lösung deines Problems bedanken? Das kannst du ganz einfach durch die Bewertung eines Beitrags (Schalter unten links).
Beverly ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Ads
Antworten


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Besucher: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge anzufügen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

vB Code ist An.
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist An.
Gehe zu


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:18 Uhr.


Partner und Co.
Access-Paradies -Alles rund um die Datenbank Microsoft Access -Code -Programme-Tools -Tipps   Kostenlose Tipps & Tricks, Downloads und Programme   www.kulpa-online.com - Tipps - Tricks - Tutorials - Meinungen - Downloads uvm...   vb@rchiv · Willkommen in der Welt der VB Programmierung   Access-Garhammer - Hier finden Sie jede Menge Beispiel-Datenbanken zu Access und mehr ...   mcseboard.de   Die Top Seite für Excel-VBA-Makros uvm.

Powered by: vBulletin Version 3.6.2 (Deutsch)
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.

Copyright ©2000-2010 MS-Office-Forum. Alle Rechte vorbehalten.
Copyright ©Design: Manuela Kulpa ©Rechte: Günther Kramer
Eine Verwendung der Inhalte in anderen Publikationen, auch auszugsweise,
ist ohne ausdrückliche Zustimmung der Autoren nicht gestattet.
Beachten Sie bitte auch unsere Nutzungsbedingungen.