Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1648to1652
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

ClearContents Befehl

ClearContents Befehl
05.10.2018 09:02:53
Sebastian
Hallo zusammen,
ich habe eine Frage bezüglich der Anwendung vom Befehls ClearContents.
Es soll geprüft werden, ob in bestimmten Zellen ein Inhalt vorhanden ist. Ist das der Fall, so soll VBA den Befehl ClearContents ausführen.
Sind diese Zellen jedoch leer, so soll eine MsgBox eine Fehlermeldung ausgeben.
Ich habe es mit folgendem Code probiert:
---------------------------------
Sub ClearContent_Click()
If Worksheets("Data Input").Range("C4:C6, C8:C10, B22, C23,C27:C31, B18:M18") = "" Then
MsgBox "Nothing to delete"
Else: Worksheets("Data Input").Range("C4:C6, C8:C10, B22, C23,C27:C31, B18:M18").ClearContents
End If
----------------------
Leider bekomme ich hier nur die Fehlermeldung "Laufzeitfehler '13' Typen unverträglichkeit.
Wer kann mir sagen, wo der Fehler liegt?

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: ClearContents Befehl
05.10.2018 09:21:19
EtoPHG
Hallo Sebastian,
Dein erster If mit Test auf ="" kann nicht funktionieren. Du kannst nicht einen Bereich mit einem einzigen Wert vergleichen!
Zudem macht es keinen Sinn nur auf "" (leer) zu testen. Die .ClearContents-Methode entfernt u.a. auch Formeln aus Bereichen.
Den Sinn deines Konstrukts kann ich nicht nachvollziehen. Wenn eine leere Zelle mit .ClearContents bereinigt wird, sieht sie genau gleich aus wie vorher. Was macht der Anwender mit der Information "Nothing to delete"? Willst du ihm ein schlechtes Gewissen vermitteln, dass er eine Aktion ausgeführt hat, die gar nicht nötig gewesen wäre?
Gruess Hansueli
Anzeige
AW: ClearContents Befehl
05.10.2018 09:41:51
Sebastian
Hallo Hansueli,
danke für die schnelle Antwort.
Also der Sinn hinter dem ganzen soll sein, dass wenn der Anwender später auf den Button zum "entfernen" klickt, obwohl in den jeweiligen Feldern keine Werte stehen, darf das Programm keine Fehlermeldung ausgeben. Anstelle einer Fehlermeldung will ich dem Anwender, wie Du gesagt hast, ein schlechtes Gewissen machen :).
Nur wenn die Zellen ausgefüllt sind, darf die Prozedur die Inhalte der Zelle "leeren".
Hast Du auf die schnelle eine Idee wie man das erreichen kann?
Vielen Dank im Voraus!
Gruss
Auf die Schnelle: So was mach ich nicht! (owT)
05.10.2018 11:55:51
EtoPHG

Und warum sollte....
05.10.2018 15:24:48
Werner
Hallo Sebastian,
...da eine Fehlermeldung ausgegeben werden. Es ist völlig wurst, ob in dem Bereich Daten vohanden sind oder nicht. Der Befehl wird in beiden Fällen ausgeführt. Wenn der Bereich leer ist wird keine Fehlermeldung ausgegeben.
Gruß Werner
Anzeige
AW: ClearContents Befehl
05.10.2018 09:35:12
UweD
Hallo
die Zellen musst du einzeln prüfen.
Modul13
Option Explicit 
 
Sub ClearContent_Click() 
    Dim RNG As Range, i As Integer, Z 
    Set RNG = Worksheets("Data Input").Range("C4:C6, C8:C10, B22, C23, C27:C31, B18:M18") 
    For Each Z In RNG 
        If Z <> "" Then 
            i = i + 1 
        End If 
    Next 
    If i = 0 Then 
        MsgBox "Nothing to delete" 
    Else 
        RNG.ClearContents 
    End If 
     
End Sub 

Wäre es ein zusammenhängender Bereich dann wäre das möglich
Sub ClearContent_Click2()
    Dim RNG As Range
    Set RNG = Worksheets("Data Input").Range("C4:C6")
    
    If WorksheetFunction.CountBlank(RNG) = RNG.Count Then
        MsgBox "Nothing to delete"
    Else
        RNG.ClearContents
    End If
    
End Sub

LG UweD
Anzeige
AW: ClearContents Befehl
05.10.2018 10:01:18
Sebastian
Hallo UweD,
dein Code klappt perfekt. Vielen Dank!!!
AW: ClearContents Befehl
05.10.2018 15:41:53
Werner
Hallo Sebastian,
und wenn es, warum auch immer, so sein soll, dann würde ich das ohne Schleife machen.
Sub ClearContent_Click()
Dim raBereich As Range
With Worksheets("Data Input")
Set raBereich = Union(.Range("C4:C6"), .Range("C8:C10"), _
.Range("B22"), .Range("C23"), .Range("C27:C31"), .Range("B18:M18"))
If WorksheetFunction.CountA(raBereich) > 0 Then
raBereich.ClearContents
Else
MsgBox "Es gibt nichts zu löschen."
End If
End With
Set raBereich = Nothing
End Sub
Gruß Werner

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige