In Excel mit Visual Basic Zellen leeren
Hallo zusammen,
ich würde gerne über Visual Basic, wenn eine bestimmte if Bedingung erfüllt ist (bekomme ich hin), einen Zellbereich leeren (Formatirung soll erhalten bleiben, also nur Hintergrundfarbe und Inhalt löschen), z.B. 2B bis 6E. Kann mir jemand hierbei helfen? Ich weiß leider weder wie ich eine Aktion für einen Zellbereich ausführe (es werden mehrere Zellbereiche werden) noch weiß ich, wie ich über Visual Basic Zellen leeren kann.
Gruß
3 Antworten
Setz für denn Zellbereich doch einfach Value="" , damit leerst du nur den Inhalt, die Formatierungbbleibt aber erhalten.
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)
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.
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
DH!
Zum löschen NUR der Hintergrundfarbe reicht evtl. auch:
rZelle.Interior.ColorIndex = xlColorIndexNone
Und wie spreche ich einen Zellbereich an?