In Excel mit Visual Basic Zellen leeren

3 Antworten

Vom Beitragsersteller als hilfreich ausgezeichnet

Setz für denn Zellbereich doch einfach Value="" , damit leerst du nur den Inhalt, die Formatierungbbleibt aber erhalten.


AquaMedium 
Beitragsersteller
 16.04.2015, 10:35

Und wie spreche ich einen Zellbereich an?

PWolff  16.04.2015, 10:44
@AquaMedium

Dim c As Range 'As Cell geht leider nicht

For Each c in Range(Zelle1, Zelle2)

c.Value = ""

Next

wobei Zelle1 die linke obere und Zelle2 die rechte untere Zelle ist, entweder in der Form (im Beipiel für Zelle C10)

"C10"

(mit den Anführungszeichen), oder in der Form

Cells(10, 3)
AquaMedium 
Beitragsersteller
 16.04.2015, 11:29
@PWolff

Super, vielen Dank!!

Weißt du zufällig, ob ich damit auch direkt zwei Bereiche leeren kann?

Neben den hier genannten Möglichkeiten kannst du auch ein Makro aufzeichnen lassen.

Nachdem du die Aufzeichnung gestartet hast, markierst du einen Zellbereich und löschst die Inhalte.

Zuletzt beendest du die Aufzeichnung und schaust dir an, wie diese Aktion als Makro aussieht. Dieses Makro passt du dann an deine Bedürfnisse an.

Woher ich das weiß:Berufserfahrung – Software-Entwickler

Zellen werden in Excel (anders als in der Mathematik) zuerst mit der Spaltenangabe adressiert. 2B gibt es nicht. Das heißt bei Excel B2.

Deine Aufgabe kannst du leicht mit der Makrofunktion lösen. Du musst nur noch ein If drumherum bauen. Bei mir sieht das so aus:

Sub ZellenLeeren()

'

' ZellenLeeren Makro

' Dim bMeineBedingung

 bMeineBedingung = True

 If bMeineBedingung Then

 Application.Goto Reference:="R2C2:R6C5"

 Selection.ClearContents

 With Selection.Interior

 .Pattern = xlNone

 .TintAndShade = 0

 .PatternTintAndShade = 0

 End With

 End If

End Sub

Wenn du nun pro Zelle eine Bedingung prüfen willst, musst du deinen Bereich durchackern:

Sub ZellenLeeren() ' ' ZellenLeeren Makro ' Dim rZelle As Range Application.Goto Reference:="R2C2:R6C5" For Each rZelle In Selection If rZelle.Value < 0 Then ' nur ein Beispiel rZelle.ClearContents With rZelle.Interior .Pattern = xlNone .TintAndShade = 0 .PatternTintAndShade = 0 End With End If Next End Sub

Woher ich das weiß:Berufserfahrung – Programmierer

Oubyi, UserMod Light  16.04.2015, 12:21

DH

Zum löschen NUR der Hintergrundfarbe reicht evtl. auch: 

rZelle.Interior.ColorIndex = xlColorIndexNone