Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
1732to1736
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Inhalt mit Color index 40 Löschen

Inhalt mit Color index 40 Löschen
06.01.2020 16:03:59
dennis
Hallo Zusammen
Ich habe Vor bei einer Riesigen Datei den Inhalt aller Felder mit der FarbFormatierung colorindex 40 (Hintergrundfarbe) zu Löschen und die Formatierung Beizubehalten.
Ich möchte auch Vorher Gefragt werden ob Wirklich alles Gelöscht werden soll Wenn ja dann Löschen wenn nein dann End Sub.
Kann mir hier Jemand Helfen ?

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Inhalt mit Color index 40 Löschen
06.01.2020 16:11:17
Hajo_Zi

Option Explicit
Sub Test()
Dim InMsgBox As Integer
InMsgBox = MsgBox("Wollen Sie die Farbe 40 wirklich löschen.", vbYesNoCancel + _
vbQuestion, "Löschabfrage ?")
Select Case InMsgBox
Case 6
Dim RaZelle As Range
For Each RaZelle In ActiveSheet.UsedRange
If RaZelle.Interior.ColorIndex = 40 Then
RaZelle.ClearContents
End If
Next RaZelle
Case 7
'            MsgBox "Nein"
Case 2
'            MsgBox "Abbrechen"
End Select
End Sub

AW: Inhalt mit Color index 40 Löschen
06.01.2020 16:59:39
dennis
Auch hier kommt leider Laufzeitfehler 1004 dies ist bei verbundenen zeilen nicht möglich
Anzeige
AW: Inhalt mit Color index 40 Löschen
06.01.2020 17:02:30
Hajo_Zi
verbundene Zellen mavcvhen nur Probleeme, da gibt es andered Möglichkeiten.
Zu Deiner Datei kann ich nichts schreiben, was wohl daran liegt das ich nicht auf fremde Rechner schaue.Ich baue keine Datei nach.
Sollte die Datei verlinkt werden?
Wenn du an Stelle einer Demomappe deine Originalmappe hochladen willst, diese aber sensible Daten enthält, kannst du diese Daten
http://www.ms-office-forum.de/forum/showthread.php?t=322895
änderrn.
Das ist nur meine Meinung zu dem Thema.
Gruß Hajo
Anzeige
AW: Inhalt mit Color index 40 Löschen
06.01.2020 16:14:54
Nepumuk
Hallo Dennis,
teste mal:
Option Explicit

Public Sub Test()
    Dim objCell As Range
    If MsgBox("Wirklich löschen?", vbQuestion Or vbYesNo, "Abfrage") = vbYes Then
        Application.ScreenUpdating = False
        With Application.FindFormat
            Call .Clear
            .Interior.ColorIndex = 40
        End With
        Set objCell = Cells.Find(What:="*", LookAt:=xlPart, SearchFormat:=True)
        If Not objCell Is Nothing Then
            Do
                Call objCell.ClearContents
                Set objCell = Cells.Find(What:="*", LookAt:=xlPart, SearchFormat:=True)
            Loop Until objCell Is Nothing
        End If
        Application.ScreenUpdating = True
    End If
End Sub

Gruß
Nepumuk
Anzeige
AW: Inhalt mit Color index 40 Löschen
06.01.2020 16:50:18
dennis
Hallo Leider kommt hier der Laufzeitfehler 1004
AW: Inhalt mit Color index 40 Löschen
06.01.2020 16:52:13
Nepumuk
Hallo Dennis,
wie lautet der Fehlertext und welche Zeile markiert der Debugger?
Gruß
Nepumuk
AW: Inhalt mit Color index 40 Löschen
06.01.2020 17:02:11
dennis
dies ist bei verbundenen zellen leider nicht möglich Call objCell.ClearContents
AW: Inhalt mit Color index 40 Löschen
06.01.2020 17:06:32
Nepumuk
Hallo Dennis,
verbundene Zellen machen immer Probleme. Zum Teufel mit dem Microsoftprogrammierer dem das eingefallen ist.
Teste das mal:
Option Explicit

Public Sub Test()
    Dim objCell As Range
    If MsgBox("Wirklich löschen?", vbQuestion Or vbYesNo, "Abfrage") = vbYes Then
        Application.ScreenUpdating = False
        With Application.FindFormat
            Call .Clear
            .Interior.ColorIndex = 40
        End With
        Set objCell = Cells.Find(What:="*", LookAt:=xlPart, SearchFormat:=True)
        If Not objCell Is Nothing Then
            Do
                If objCell.MergeCells Then
                    Call objCell.MergeArea.ClearContents
                Else
                    Call objCell.ClearContents
                End If
                Set objCell = Cells.Find(What:="*", LookAt:=xlPart, SearchFormat:=True)
            Loop Until objCell Is Nothing
        End If
        Application.ScreenUpdating = True
    End If
End Sub

Gruß
Nepumuk
Anzeige
AW: Inhalt mit Color index 40 Löschen
06.01.2020 18:09:04
dennis
Mega nach 40 Minuten Wartezeit hat er es Geschafft. Vielen Lieben Dank
AW: Inhalt mit Color index 40 Löschen
06.01.2020 18:14:41
Nepumuk
Hallo Dennis,
das ist nicht normal. Ist es so schneller?
Option Explicit

Public Sub Test()
    Dim objCell As Range
    If MsgBox("Wirklich löschen?", vbQuestion Or vbYesNo, "Abfrage") = vbYes Then
        With Application
            .Calculation = xlCalculationManual
            .EnableEvents = False
            .ScreenUpdating = False
        End With
        With Application.FindFormat
            Call .Clear
            .Interior.ColorIndex = 40
        End With
        Set objCell = Cells.Find(What:="*", LookAt:=xlPart, SearchFormat:=True)
        If Not objCell Is Nothing Then
            Do
                If objCell.MergeCells Then
                    Call objCell.MergeArea.ClearContents
                Else
                    Call objCell.ClearContents
                End If
                Set objCell = Cells.Find(What:="*", LookAt:=xlPart, SearchFormat:=True)
            Loop Until objCell Is Nothing
        End If
        With Application
            .Calculation = xlCalculationAutomatic
            .EnableEvents = True
            .ScreenUpdating = True
        End With
    End If
End Sub

Gruß
Nepumuk
Anzeige
AW: Inhalt mit Color index 40 Löschen
07.01.2020 01:21:38
Daniel
Hi
probiers mal so, hier für feste Werte.
Wenn Formeln und feste Werte gemischt vorkommen, kann lösche das ".SpecialCells(xlcelltypeconstants)", das dient nur dazu, dass die Schleife nur über die Zellen mit Inhalt läuft und so etwas schneller ist, als wenn alle Zellen geprüft werden:

dim Zelle as Range
dim Bereich as Range
for Each Zelle In ActiveSheet.UsedRange.SpecialCells(xlcelltypeconstants)
if Zelle.Interior.ColorIndex = 40 Then
if Bereich is Nothing then
Set Bereich = Zelle.MergeArea
else
Set Bereich = Union(Bereich, Zelle.MergeArea)
end If
end If
Next
If Not Bereich is Nothing Then Bereich.ClearContents
Gruß Daniel
Anzeige

305 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige