Daten bereinigen per VBA

Bild

Betrifft: Daten bereinigen per VBA
von: Berni
Geschrieben am: 24.06.2015 11:11:12

Liebe Excellenzen!
Ich habe eine Planungstabelle gebastelt, in welcher in einer Spalte Stunden und in der Nebenspalte Euro ausgerechnet werden. Da sich nun die Tabelle in die Breite zieht (Spalte H bis AQ) habe ich die Eurotabellen ausgeblendet und nur die Ergebnisspalten rechts belassen. Wenn nun aber jemand die eingetragenen Daten löschen möchte und dabei alle Spalten markiert, sind natürlich auch die Formeln futsch. Daher habe ich ein Makro aufgesetzt und dieses mit einem Button verknüpft.

Sub BereichBereinigen()
    Dim Zelle As Range
    Range("H9:AO370").Select
    For Each Zelle In Selection
        If Zelle.HasFormula Or IsDate(Zelle) Then
        Else
            If IsNumeric(Zelle) Then
                Zelle.Value = ""
            Else
                Zelle.Value = 0
            End If
        End If
    Next Zelle
    Range("F6").Select
End Sub
Das Makro funktioniert zwar, ist aber ziemlich langsam unterwegs, da es natürlich alle Zellen durchsucht.
Meine Frage ist nun, ob man diesem Makro nicht einen Turbo verpassen könnte.
Vorerst Danke und
LG Berni

Bild

Betrifft: AW: Daten bereinigen per VBA
von: AndrRo
Geschrieben am: 24.06.2015 12:12:09
Hallo Berni,
die üblichen Standards halt:
'Bildschirmaktualierung ausschalten
'Berechnungen ausschalten
'Events ausschalten
With Application
.ScreenUpdating = False
.Calculation = xlCalculationManuell
.EnableEvents = False
End With
und alles am Schluss einschalten:
With Application
.ScreenUpdating = True
.Calculation = xlCalculationAutomatic
.EnableEvents = True
End With
Gruss AndrRo

Bild

Betrifft: AW: Daten bereinigen per VBA
von: ransi
Geschrieben am: 24.06.2015 12:32:15
Hallo,
Versuch mal ohne Schleife:

Option Explicit

Sub machs()
    With Sheets("tabelle1").Range("H9:AO370").Cells
        .SpecialCells(xlCellTypeConstants, xlNumbers).Value = 0 'Zahlen
        .SpecialCells(xlCellTypeConstants, 22).Value = "" 'Texte, Fehlerwerte, Wahrheitswerte
    End With
End Sub



ransi

Bild

Betrifft: AW: Daten bereinigen per VBA
von: Daniel
Geschrieben am: 24.06.2015 12:26:31
Hi
wenn alle Inhalte ausser Formeln gelöscht werden sollen, dann geht auch einfach und schnell:

Range("H9:AQ307").SpecialCells(xlcelltypeconstants, 3).ClearContents
nur mit dem Datum wirds dann halt schwierig, weil das für Excel eine Zahl ist.
über SpecialCells legst du zuerst mit dem xlcelltypeconstants fest, das aus dem vorgegebenen Bereich nur die Zellen mit einem konstanten Inhalt ausgewählt werden (dh keine Formeln).
der zweite Parameter legt dann fest, ob du Zahlen(1), Texte(2), Wahrheitswerte (4) oder Fehler(16) anspreichen willst.
Kombinationen erhälst du durch Addition der werte (Texte und Zahlen = 1+2 = 3)
Gruß Daniel

Bild

Betrifft: AW: Daten bereinigen per VBA
von: Berni
Geschrieben am: 24.06.2015 14:55:12
Danke Daniel!
Ich war mir der Schleife wohl etwas umständlich unterwegs. Deine Lösung funktioniert perfekt, einfach super.
Nochmals vielen Dank
LG Berni

 Bild

Beiträge aus den Excel-Beispielen zum Thema ".xlsx mit Makros in .xlsm umwandeln"