Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Anzeige
Inhaltsverzeichnis

Zellinhalte per VBA löschen

Forumthread: Zellinhalte per VBA löschen

Zellinhalte per VBA löschen
21.12.2025 15:26:01
Lutz
Hallo,
Ich möchte die Zellinhalte der Aktiven Zelle und der nächsten 10 rechts angrenzenden Zellen löschen. Formeln, Formatierungen, Schriftarten sollen bestehen bleiben.
Für einen VBA Code bedanke ich mich.

Gruß Lutz
Anzeige

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zellinhalte per VBA löschen
21.12.2025 15:30:10
RPP63
Moin!
ActiveCell.Resize(, 10).ClearContents

Gruß Ralf
AW: Zellinhalte per VBA löschen
21.12.2025 15:44:00
GerdL
Moin Lutz!
ActiveCell.Resize(1, 11).SpecialCells(xlCellTypeConstants).ClearContents

Gruß Gerd
AW: Zellinhalte per VBA löschen
22.12.2025 14:50:11
GerdL
Moin.
Noch bei Bedarf für leeren Bereich ohne Fehlerbehandlung.
Sub Unit()


Dim C As Range

For Each C In ActiveCell.Resize(1, 11).Cells
If Not C.HasFormula And Not C.HasArray Then C.ClearContents
Next

End Sub

Gruß Gerd
Anzeige
AW: Zellinhalte per VBA löschen
21.12.2025 16:06:31
RPP63
Hast ja recht, Gerd!
Schließlich sind 1 + 10 immer noch 11 ;-)
[aber Resize(1, 11) ist überflüssig, da beide Parameter optional sind]

Gruß Ralf
AW: Zellinhalte per VBA löschen
21.12.2025 18:55:10
Daniel
Naja, das Komma muss man trotzdem schreiben.
Außerdem sorgt es für mehr Klarheit, wenn man optionale Parameter mit angibt und man ist vor überrschungen sicher, falls der Default-Wert ein anderer ist als man erwartet.
Von daher ist der Rat, optionale Parameter nicht anzugeben, selten ein guter.
Anzeige
AW: Zellinhalte per VBA löschen
21.12.2025 19:08:58
RPP63
Ich hatte ja heute ohnehin einen eher schlechten Tag, Daniel!
Schließlich habe ich auch übersehen, dass Formeln nicht gelöscht werden sollen.
Daher ist Gerds Lösung mit SpecialCells(xlCellTypeConstants) die einzig zielführende.

Aber zu den optionalen Parametern habe ich dennoch eine andere Meinung.
Bei Parameter-Bandwürmern kann man sich mit Auslassen durch ,,,,-Kolonnen behelfen (wie es snb ja gern macht) oder gleich den benannten Parameter nutzen.
Bei Resize ist es Humbug, aber Resize(, 11) ist das Gleiche wie Resize(ColumnSize:=11)
Aber das weißt Du ja.

Gruß Ralf
Anzeige
AW: Zellinhalte per VBA löschen
21.12.2025 19:20:59
Luschi
Hallo Ralf,

- das Problem liegt nicht bei Resize(1, 11) bzw. Resize(, 11)
- sondern bei SpecialCells(xlCellTypeConstants)
- denn wenn es keine Zellen gibt, die diese Einschränkung erfüllen
- dann schepperts gewaltig im Gebälk
- hier ist 1 Fehlerkorrektur erforderlich, wie z.B:

Sub Machmal()

Dim rg As Range

On Error Resume Next
Set rg = ActiveCell.Resize(1, 11).SpecialCells(xlCellTypeConstants)
If Not rg Is Nothing Then
rg.ClearContents
Set rg = Nothing
On Error GoTo 0
End If
End Sub
Gruß von Luschi
aus klein-Paris
Anzeige
AW: Zellinhalte per VBA löschen
21.12.2025 19:29:55
RPP63
Die Replik solltest Du aber eher GerdL geben. ;-)
Ich verwende grundsätzlich On Error Resume Next bei SpecialCells, würde aber bei Deinem Beispiel die Reihenfolge ändern:
Sub Machmal()

Dim rg As Range

On Error Resume Next
Set rg = ActiveCell.Resize(1, 11).SpecialCells(xlCellTypeConstants)
On Error GoTo 0
If Not rg Is Nothing Then rg.ClearContents
End Sub

Begründung:
Bei Dir wird nicht gelöscht, wenn bspw. ein Blattschutz besteht und der Anwender bekommt davon nix mit (wg. On Error)
Bei mir käme zumindest der 1004er

Gruß Ralf
Anzeige

Forumthreads zu verwandten Themen

Anzeige
Anzeige