In Excel bestimmte zellen löschen

...komplette Frage anzeigen

1 Antwort

Hallo enduria,

Da gibt es mehrere Möglichkeiten, da deine Anforderung nicht ganz so klar formuliert war. Entweder (löscht von der Selektion aus den Bereich von der oberen bis zur neunten rechts):

Range(activecell.offset(-1, 0), activecell.offset(-1, 9)).Delete

Oder (löscht in der oberen Zeile B - K):

Dim i%
i = activecell.offset(-1, 0).Row
Range("B" & i & ":K" & i).Delete

Oder (löscht B4:K4):

Range("B4:K4").Delete

Grüsse

Higlav

PS: mach' an erster Stelle im Makro noch ein "On Error Resume Next" hin - falls versucht wird, in Zeile 0 zu löschen...

Oubyi 22.08.2013, 19:31

DH!
Vielleicht noch der Hinweis, dass mit "löschen" auch statt .Delete alternativ:
.ClearContents
gemeint sein könnte.
Einfach ausprobieren!

2
Iamiam 23.08.2013, 20:52
@Oubyi

genauer:

.Delete Shift:=xlUp

das Shift:=xlUp ist bei dieser Range möglicherweise die Vorgabe, aber sicherheitshalber...
der Cursor sollte dann automatisch nach B4 "hochrutschen".

1
enduria 26.08.2013, 11:19

Hey...klappt super. Besten Dank dafür!!!

Habe

Dim i%
i = ActiveCell.Offset(-1, 0).Row
Range("B" & i & ":K" & i).Delete

Selection.Offset(-1, 0).Select

genutzt.

Eine Frage dazu habe ich aber mal noch. Wenn ich jetzt zum Beispiel aus der Zeile die Zellen "F" und "H" nicht löschen möchte. Wie kann ich diese dann ausschließen?

Gruß enduria

ps. Da ich gerade dabei bin mir das ganze selbst beizubringen.....Kann mir jemand die Zeile

Range("B" & i & ":K" & i)

genauer erklären?

0
Higlav 26.08.2013, 17:33
@enduria

Die Klasse "Range" hat eine sogenannte "Default Property". Desshalb kann man per

Range("Adressö")

direkt auf einen Bereich zugreifen. Diese "Shared Function" hat eine Überladung:

  1. Range(Cell1 As Cell, [Cell2 As Cell])

  2. Range(Address As String)

Mit der ersten Methode lässt sich ein Bereich über die Eckpunkte oder nur einer Zelle ansprechen. Mit der zweiten Methode wird der eingegebene String 'geparst' und dann den berechneten Bereich zurückgegeben.

Und da

"B" & i & ":K" & i

"B1:K1" ergibt (vorausgesetzt, i = 1), wird der entsprechende Bereich zurückgegeben.


Eine Möglichkeit, getrennte Bereiche anzusprechen besteht darin, dass die einzelnen Bereiche mit ";" getrennt sind.

Somit ergäbe im Bezug auf deine Problemstellung folgende Lösung:

Range("B" & i & ":E" & i & ";G" & i & ";I" & i & ":K" & i)

, was, wenn i = 1 ist folgendes ergibt:

Range("B1:E1;G1;I1:K1")

Somit wäre dein neuer Code mit den Inputs folgendermassen:

Dim i%
i = ActiveCell.Offset(-1, 0).Row
Range("B" & i & ":E" & i & ";G" & i & ";I" & i & ":K" & i).ClearContents

Selection.Offset(-1, 0).Select

Grüsse

Higlav

0

Was möchtest Du wissen?