Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Wenn Wochenende - Inhalt löschen, da Inhalt = 0

Wenn Wochenende - Inhalt löschen, da Inhalt = 0
22.06.2004 09:48:42
Andy
Hallo,
ich habe eine Datei mit Kalender, wobei der fortlaufend ist von
Heute - 90 + 457 Tage. Dort werden Dienste eingetragen. Damit
niemand was falsches einträgt und dann nicht löschen kann würde
ich gern einbauen, wenn im Bereich C2 - Ende an Wochenenden ein
Eintrag ist, dann lösche ihn. Das ist zumindest meine Idee.
Gruß
Andy
Anzeige

14
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Wenn Wochenende - Inhalt löschen, da Inhalt = 0
22.06.2004 21:24:21
Peter
Hallo Andy,
das nachstehende Makro sollte dein Problem lösen.
Ich gehe davon aus, dass dein Kalender ein Datum in Spalte A enthält.


Sub Wochenenden_loeschen()
Dim iIndx  As Integer
For iIndx = 1 To Range("A65536").End(xlUp).Row
   If Weekday(Range("A" & iIndx).Value) = 1 Or _
      Weekday(Range("A" & iIndx).Value) = 7 Then
      Range("C" & iIndx).Value = ""
   End If
Next iIndx
Gruß, Peter
Anzeige
Inhalt löschen, wenn im Kalender Wochenende
23.06.2004 12:01:31
Andy
Hallo Peter,
mein Kalender sieht so aus:
Userbild
Leider bleibt dein Code bei
If Weekday(Range("A" & iIndx).Value) = 1 Or _
Weekday(Range("A" & iIndx).Value) = 7 Then
ohne Meldung stehen. Hab ich beim Erzählen irgend etwas
falsch erklärt? Schau bitte noch einmal in meine Tabelle,
wie gesagt, sie rückt jeden Tag weiter, da sie von Heute
ausgeht. Wie bekomme ich es raus, dass alle Eintragungen
an Wochenenden im Bereich C2 bis Ende gelöscht werden.
Gruß Andy
Anzeige
AW: Inhalt löschen, wenn im Kalender Wochenende
23.06.2004 20:06:54
Andy
Hallo Peter,
Danke für die Spalte C: geht das jetzt Prima, ich meinte aber, wie im
Beispiel zu sehen, alles an C2, das Kann also auch Y365 sein. Vielleicht
habe ich mich falsch ausgedrückt, dann Sorry. Wenn dein Beispiel noch
von C2 bis XLEnd funktioniert, wäre es ganhz toll.
Gruß
Andy
Anzeige
AW: Inhalt löschen, wenn im Kalender Wochenende
23.06.2004 20:39:34
Peter
Hallo Andy,
mein Beispiel prüft die gesamte Spalte A, so weit diese belegt ist und ändert daraufhin die Sonnabende und Sonntage in Spalte C von 1 bis Ende.
Habe ich dich irgendwo falsch verstanden?
Gruß, Peter
AW: Inhalt löschen, wenn im Kalender Wochenende
23.06.2004 20:44:32
Andy
Hallo Peter,
du hattest es schon richtig verstanden und es funktioniert
auch in Spalte C2 bis Ende, aber in Spalte D2 bis IX457 funktioniert
es leider nicht und das habe ich nicht richtig erklärt gehabt
in meiner Bitte um Hilfe. Wie du oben im Beispiel siehst, gibt
es auch in den anderen Spalten Einträge, wobei man nicht weiß
wieviel. Also muss er kontrollieren von C2 bis IX457 oder Ende
und darin die Einträge in den Wochenenden löschen.
Gruß
Andy
Anzeige
AW: Inhalt löschen, wenn im Kalender Wochenende
23.06.2004 21:49:50
Peter
Hallo Andy,
so geht es über alle Spalten ab C


'
'   in einem Kalender sollen die evtl. vorhandenen Einträge
'   am Wochenende in der Spalte C gelöscht werden.
'
Sub Wochenenden_loeschen()
Dim iIndxA  As Long
Dim iIndxI  As Integer
Application.ScreenUpdating = False                  ' kein Bildschirm Update
For iIndxA = 1 To Range("A65536").End(xlUp).Row     ' von 1 bis Ende
   If Weekday(Range("A" & iIndxA).Value) = 1 Or _
      Weekday(Range("A" & iIndxA).Value) = 7 Then   ' Sonnabend/Sonntag ?
      For iIndxI = 3 To 256
         Cells(iIndxA, iIndxI).Value = ""           ' auf leer löschen
         'Cells(iIndxA, iIndxI).Value = 0            ' auf Null löschen
      Next iIndxI
   End If
Next iIndxA                                         ' nächster Eintrag
Application.ScreenUpdating = True                   ' Bildschirm Update
End Sub
Gruß Peter
Anzeige
Danke Peter klappt super, hab alles getestet!
23.06.2004 21:58:52
Andy
Hallo Peter,
vielen Dank für deine Hilfe, hab alles getestet und
es klappt super.
Gruß
Andy
Sorry Peter - doch noch ne Frage Wochende löschen
23.06.2004 22:55:25
Andy
Hallo Peter,
danke noch mal für deine Hilfe! In meiner Originaldatei klappt das
zwar sehr gut, da er aber bis ganz zum Ende geht und löschen will,
dauert das auch ziemlich lange. Was muss ich machen, wenn er nur
bis Zeile 457 durchsuchen soll? Die Spaltenanzahl weiß ich meist
nicht, aber die Zeilen hören nach 457 normaler Weise auf. Wie komme
ich am besten, wenn ich das ändern will?
Würde mich freuen, wenn du noch einmal helfen könntest.
Gruß
Andy
Anzeige
AW: Sorry Peter - doch noch ne Frage Wochende löschen
24.06.2004 21:13:49
Peter
Hallo Andy,
die Zeilenanzahl wird automatisch durch die Anweisung Range("A65536").End(xlup).Row immer auf die vorhandene Anzahl belegter Zeilen (in Spalte A) festgelegt. Da brauchst du nichts zu ändern, das bringt gar nichts.
Da das Makro alle Wochenenden (Sonnabende und Sonntage) von Spalte 3 bis 256 löscht, dauert das ein wenig, daran kann man wenig ändern.
Gruß Peter
Anzeige
AW: Nachtrag
24.06.2004 22:13:59
Peter
Hallo Andy,
was ich dir zur Beschleunigung anbieten kann ist folgendes:
Wenn nicht alle Spalten bis IV (256) belegt sind, wird das in dem nachfolgenden Makro berücksichtigt.
Dadurch wird die Verarbeitung natürlich wesentlich schneller (kürzer).


'
'   in einem Kalender sollen die evtl. vorhandenen (fehlerhaften) Einträge
'   am Wochenende in der Spalte C - letzte belegte Spalte gelöscht werden.
'
'   vorab wird die maximal belegte Spalte ermittelt
'
Sub Wochenenden_loeschen_A()
Dim rUsdRg  As Range                                ' verwendeter (belegter) Bereich
Dim lAnzZe  As Long                                 ' Anzahl Zellen im Used Range
Dim lLeSpa  As Long                                 ' letzte belegte Spalte
Dim lIndxZ  As Long                                 ' For/Next Index Zeile
Dim iIndxS  As Integer                              ' For/Next Index Spalte
Application.ScreenUpdating = False                  ' kein Bildschirm Update
Set rUsdRg = ActiveSheet.UsedRange                  ' Used Range feststellen
lAnzZe = rUsdRg.Count                               ' Anzahl Zellen im Used Range
lLeSpa = rUsdRg(lAnzZe).Column                      ' Letzte Spalte festhalten
For lIndxZ = 1 To Range("A65536").End(xlUp).Row     ' von Zeile 1 bis Ende
   If Weekday(Range("A" & lIndxZ).Value) = 1 Or _
      Weekday(Range("A" & lIndxZ).Value) = 7 Then   ' Sonnabend/Sonntag ?
      For iIndxS = 3 To lLeSpa                      ' von Spalte 3 bis letzte belegte
         Cells(lIndxZ, iIndxS).Value = ""           ' auf leer löschen
         'Cells(lIndxZ, iIndxS).Value = 0            ' auf Null löschen
      Next iIndxS                                   ' nächste Spalte
   End If
Next lIndxZ                                         ' nächste Zeile
Application.ScreenUpdating = True                   ' Bildschirm Update zulassen
End Sub
Gruß, Peter
Anzeige
Bei Wochenende - Inhalt löschen System lahm?
26.06.2004 04:20:56
Andy
Hallo,
die Idee von Peter ist zwar nicht schlecht, verlangsamt aber
enorm den Arbeitsablauf, da die automatische Kontrolle, ob
Wochenende ist oder nicht gleich nach jedem Eintrag erfolgt
und wenn das sich dann ewig hinzieht, ist das für den User
nicht schön.
Hat vielleicht noch jemand eine andere Idee? Wie kann man das
noch kontrollieren lassen, ohne das man gleich "Kaffee trinken
gehen kann"?
Gruß Andy
Anzeige
AW: Bei Wochenende - Inhalt löschen System lahm?
26.06.2004 15:47:40
Peter
Hallo Andy,
du hast nicht geschrieben, dass du die Prüfung nach jeder Eingabe machen willst!
Ich war davon ausgegangen, dass die Prüfung einmal bei Abschluss aller Eingaben gemacht wird.
Aber wie auch immer....
Füge den nachfolgenden Code in das Tabellenblatt deines Kalenders ein, dann bist du ganz schnell.
Gruß Peter


Private Sub Worksheet_Change(ByVal Target As Excel.Range)
 
Dim T_Adr       As String                               ' Zell-Adresse
Dim iPos        As Integer                              ' Position für Instr
Dim A_Z_Zeile   As Integer                              ' Zeile
Dim A_Z_Spalte  As String                               ' Spalte
   If ActiveCell.Column < 3 Then Exit Sub               ' Spalte < 3 - raus
   T_Adr = Target.Address                               ' Adresse holen
   T_Adr = Mid(T_Adr, 2, Len(T_Adr))                    ' Adresse 1 shiften
   iPos = InStr(T_Adr, "$")                             ' Position $ suchen
   A_Z_Spalte = Left(T_Adr, (iPos - 1))                 ' Spalte entnehmen
   A_Z_Zeile = Mid(T_Adr, iPos + 1, Len(T_Adr) - iPos)  ' Zeile  entnehmen
   If Weekday(Cells(A_Z_Zeile, 1).Value) = 1 Or _
      Weekday(Cells(A_Z_Zeile, 1).Value) = 7 Then       ' Sonnabend/Sonntag ?
      If Range(A_Z_Spalte & A_Z_Zeile).Value <> "" Then ' Zelle nicht leer ?
         Range(A_Z_Spalte & A_Z_Zeile).ClearContents    ' Zelle löschen
         MsgBox "an Wochenend-Tagen bitte keine Eingaben vornehmen", 64, _
          "nicht erwünschte Eingabe"
      End If
   End If
End Sub
Anzeige
Danke-Neue Wochenende Inhalt löschen bleibt stehen
28.06.2004 06:52:35
Andy
Hallo Peter,
Danke für deine Hilfe leider bleibt er stehen bei:
If Weekday(Cells(A_Z_Zeile, 1).Value) = 1 Or _
Weekday(Cells(A_Z_Zeile, 1).Value) = 7 Then ' Sonnabend/Sonntag ?
und bringt folgenden Eintrag bei Local:
Userbild
Woran kann das liegen hast du eine Idee? Was hat er für ein Problem mit den
versteckten Zellen?
Gruß
Andy
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Inhalte an Wochenenden in Excel löschen


Schritt-für-Schritt-Anleitung

Um Inhalte an Wochenenden in Excel zu löschen, kannst du ein Makro verwenden. Hier ist eine Schritt-für-Schritt-Anleitung:

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Klicke auf Einfügen und wähle Modul, um ein neues Modul zu erstellen.

  3. Füge den folgenden Code in das Modul ein:

    Sub Wochenenden_loeschen()
        Dim iIndxA As Long
        Dim iIndxI As Integer
    
        Application.ScreenUpdating = False
    
        For iIndxA = 1 To Range("A65536").End(xlUp).Row
            If Weekday(Range("A" & iIndxA).Value) = 1 Or Weekday(Range("A" & iIndxA).Value) = 7 Then
                For iIndxI = 3 To 256
                    Cells(iIndxA, iIndxI).Value = ""
                Next iIndxI
            End If
        Next iIndxA
    
        Application.ScreenUpdating = True
    End Sub
  4. Schließe den VBA-Editor und gehe zurück zu Excel.

  5. Führe das Makro aus, indem du ALT + F8 drückst, das Makro auswählst und auf Ausführen klickst.

Mit diesem Makro werden alle Einträge an Wochenenden in den Spalten ab C bis zur letzten Spalte gelöscht.


Häufige Fehler und Lösungen

  • Fehler: Das Makro bleibt bei der Zeile stehen, wenn die Prüfung auf den Wochentag erfolgt.

    • Lösung: Überprüfe, ob in der Spalte A tatsächlich Datumswerte stehen. Wenn die Zelle leer oder kein Datum ist, kann dies zu Problemen führen.
  • Fehler: Makro dauert zu lange, um alle Zeilen zu durchsuchen.

    • Lösung: Begrenze die Anzahl der Zeilen, die durchsucht werden, indem du den Code anpasst. Beispielsweise kannst du die Zeile For iIndxA = 1 To 457 verwenden, wenn du nur bis Zeile 457 durchsuchen möchtest.

Alternative Methoden

Wenn du eine weniger ressourcenintensive Methode suchst, um Inhalte an Wochenenden zu löschen, kannst du die Bedingte Formatierung verwenden, um die Wochenenden auszublenden:

  1. Wähle die Zellen aus, die du formatieren möchtest.

  2. Gehe zu Start > Bedingte Formatierung > Neue Regel.

  3. Wähle Formel zur Ermittlung der zu formatierenden Zellen verwenden und gebe die folgende Formel ein:

    =Wochentag(A1, 2) > 5
  4. Setze das Format auf „Keine Füllung“ oder „Schriftfarbe Weiß“, um die Inhalte zu verbergen.

Diese Methode blendet die Einträge an Wochenenden aus, anstatt sie zu löschen.


Praktische Beispiele

Hier sind einige praktische Beispiele, wie du Inhalte an Wochenenden in Excel löschen kannst:

  • Kalender für Dienste: Du hast einen Dienstkalender, der von heute an fortlaufend ist. Mit dem oben genannten Makro kannst du sicherstellen, dass an Wochenenden keine Dienste eingetragen werden.

  • Projektdaten: Wenn du eine Projektübersicht hast, die wöchentliche Fortschritte anzeigt, kannst du Wochenenden ausschließen, um die Übersichtlichkeit zu erhöhen.


Tipps für Profis

  • Leistungsoptimierung: Verwende Application.ScreenUpdating = False, um das Bildschirm-Update während der Ausführung des Makros zu deaktivieren. Dies beschleunigt die Ausführung erheblich.

  • Anpassungen vornehmen: Du kannst die Spaltenanzahl im Makro anpassen, um nur die benötigten Spalten zu durchsuchen und so die Leistung zu steigern.

  • Umbruchvorschau in Excel entfernen: Wenn du die Umbruchvorschau störend findest, gehe zu Seitenlayout und deaktiviere die „Umbruchvorschau“. Dies kann helfen, die Übersichtlichkeit zu verbessern, wenn du an Wochenenden arbeitest.


FAQ: Häufige Fragen

1. Wie kann ich Inhalte in Excel nicht löschen, wenn sie 0 sind? Verwende eine zusätzliche Bedingung im Makro, um nur Zellen zu löschen, die nicht den Wert 0 haben.

2. Kann ich auch nur bestimmte Spalten an Wochenenden löschen? Ja, du kannst im Code die Schleife über die Spalten anpassen, um nur die gewünschten Spalten zu überprüfen.

3. Wie kann ich ein Datum in Excel fortlaufend ohne Wochenenden erstellen? Du kannst eine Formel verwenden, die nur Wochentage berücksichtigt, indem du die Wochentagsfunktion in Kombination mit einer Schleife anwendest.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige