Andere VBA Anweisung für - ActiveCell.Row

Bild

Betrifft: Andere VBA Anweisung für - ActiveCell.Row
von: udo
Geschrieben am: 10.11.2003 14:33:41

Hallo und schönen Mittag zusammen,

wüsste mir bei folgender Aufstellung Jemand bitte einen Rat ?, Habe da nochmals so ein
Problem bei EXCEL 8 , welches aber auf XP läuft , komisch.

Es handelt sich nur um die Aufstellung best. definierter Zellen der gerade aktiven Zeile.

Sprich es handelt sich um einen Ausschnitt aus einem Makro, das in einer Tabelle in einer best, Spalte nacheinander nach unten hüpft ( Zellenweise ), und wenn es dann auf einen best.
Wert trifft, da sollen, oder werden von dieser Zeile einige Zellen gelöscht, und die restlichen Zellen jeweils unterhalb rutschen dann hoch.
Das funktioniert auch schon, zumindest auf XP, aber EXCEL 2000 & 97 meckern mal wieder.

Zum Fehler:

Der Debugger bringt mir den mit Range def. Bereich komplett gelb als Fehler ???

Wüsste Jemand eine andere Art der Darstellung dieses Range …. , damit ich in der aktiven Zeile beispielsweise dann die Zellen der Spalten:

Spalte 8 bis 14 und 51 bis 54 gleichzeitig anspreche, und dann die weitere Anweisung dann greift,
das wäre dann zB. Selection.Delete Shift:=xlUp

Es existiert kein Blattschutz usw. , lediglich in Spalte 51 bis 54 sind Formeln, diese Zellen sollen dann aber dennoch verschwinden, da ja der Bezug in 8 bis 14 auch gelöscht wird.

Hier mal mein Beispiel wie ich es seither beschrieben hatte :

With Cells(ActiveCell.Row, 8).Address & ":" & Cells(ActiveCell.Row, 14) .Address & _
Cells(ActiveCell.Row, 51).Address & ":" & Cells(ActiveCell.Row, 54).Address
Selection.Delete Shift:=xlUp
End With

Oder :

Range(Cells(ActiveCell.Row, 8).Address & ":" & Cells(ActiveCell.Row, 14).Address & _
Cells(ActiveCell.Row, 51).Address & ":" & Cells(ActiveCell.Row, 54).Address).Select

Selection.Delete Shift:=xlUp


Hab es auch schon mal ohne .Address probiert, funktionierte aber leider auch nicht.

Weis mir Jemand noch eine andere Möglichkeit der Auflistung.

Bin für jede Hilfe dankbar, Lieben Gruß einstweilen
udo D.
------------------------------------------------------------------------------

kann sein dass ich demnächst kurz wed muss, und mich später dann zurückmelde, wäre aber um eine rasche Antwort nicht unverbdn.
Danke euch allen schon mal im Voraus, ...

Bild


Betrifft: AW: Andere VBA Anweisung für - ActiveCell.Row
von: Yal
Geschrieben am: 10.11.2003 15:02:56

Hallo Udo,

Du kannst mit "Delete" nur aneinander stehende Zellen löschen. Daher muß Du den Vorgang in 2 Schritten erledigen:


Sub Delete2Blöcke()
    Range(Cells(ActiveCell.Row, 8), Cells(ActiveCell.Row, 14)).Delete Shift:=xlUp
    Range(Cells(ActiveCell.Row, 51), Cells(ActiveCell.Row, 54)).Delete Shift:=xlUp
End Sub


Du siehst ebenfalls die etwa abgekürzte Variante der Definition eines Range: wir geben die oberste linke und unterste rechte Zellen als Objekte (statt "Address"), da Cells ein Untertyp von Range ist. Range baut damit das gesamte quadratische Bereich. Wir brauchen auch nicht unbedingt zu selectieren und anschliesend Selection abrufen (diese Gewöhnheit kommt vom Makro-Aufzeichner :-)

Dabei immer prüfen, dass die Makro im gezielte Blatt aggiert, da Daten gelöscht werden.

Yal


Bild


Betrifft: Super , ganz arg herzlichen Dank an Dich ,...
von: Yal
Geschrieben am: 10.11.2003 22:30:04

Vielen lieben Dank, das wusste ich auch noch nicht. Das komische war nämlich
das es in meiner EXCEL 10 Version daheim, funktionierte.

Trotzdem Danke, Gruß udo


Bild

Beiträge aus den Excel-Beispielen zum Thema " Andere VBA Anweisung für - ActiveCell.Row"