Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1000to1004
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Select vermeiden
11.08.2008 14:15:36
Marc
Hallo.
Ich möchte folgenden Code so ersetzen, dass kein Activate bzw. Select mehr vorkommt. Hat einer eine Idee?
Ziel.Activate
lZeile2 = Ziel.Cells(Rows.Count, 1).SpecialCells(xlLastCell).Row
lSpalte2 = Ziel.Cells(1, Columns.Count).SpecialCells(xlLastCell).Column
Ziel.Range(Cells(2, 1), Cells(lZeile2, lSpalte2)).Select
Selection.Delete
Mein Versuch mit
Ziel.Range(Cells(2, 1), Cells(lZeile2, lSpalte2)).ClearContents
hatte einen Laufzeitfehler zur Folge.
Danke

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Select vermeiden
11.08.2008 14:30:39
Tobias
Was ist "Ziel". Also nicht dein Ziel, sondern die Variable Ziel?

AW: Select vermeiden
11.08.2008 14:32:00
Hajo_Zi
Hallo Tobias,
Ziel.Range(Cells(2, 1), Cells(lZeile2, lSpalte2)).Delete

AW: Select vermeiden
11.08.2008 14:31:00
Daniel
Hi
auch innerhalb einer RANGE müssen die CELLS vollständig Referenziert werden, dh.

Ziel.Range(Ziel.Cells(), Ziel.Cells())


(die Angabe ZIEL vor Range kann oftmals enfallen, manchmal führt es aber zu einem Fehler)
da bei dieser Schreibwiese die Zeilen manchmal recht lang werden, behilft man sich mit der WITH-Klammer:
(beachte den Punkt vor RANGE und CELLS, er ersetzt ZIEL, falls es mit WITH so definiert wurde)


with Ziel
lZeile2 = .Cells(Rows.Count, 1).SpecialCells(xlLastCell).Row
lSpalte2 = .Cells(1, Columns.Count).SpecialCells(xlLastCell).Column
.Range(.Cells(2, 1), .Cells(lZeile2, lSpalte2)).Delete
end with


ich arbeite mittlerweile oft mit der Resize-Funktion, was den Code nochmals vereinfacht:


lZeile2 = Ziel.Cells(Rows.Count, 1).SpecialCells(xlLastCell).Row
lSpalte2 = Ziel.Cells(1, Columns.Count).SpecialCells(xlLastCell).Column
Ziel.Cells(2, 1).Resize(lZeile2-1, lSpalte2).Delete


Gruß, Daniel

Anzeige
AW: Select vermeiden
11.08.2008 14:34:21
Yal
Hi Marc,
mir ist nicht ganz klar, was "Ziel" darstellt:
_ eine ganze Mappe,
_ ein Bereich aus mehreren Zellen,
_ ein Bereich mit nur eine Zelle
?
Wenn Ziel ein Bereich mit mehreren Zellen wurde reichen:
ActiveSheet.Range(Ziel.Cells(2,1), Ziel.Cells.SpecialCells(xlLastCell)).ClearContents
Viel Erfolg
Yal

Re:
11.08.2008 14:37:56
Backowe
Hi,
VBA-Code:
Sub Loeschen()
Dim Zeile As Long
Dim Spalte As Integer
With Sheets("Tabelle2")
  Zeile = .Cells.Find("*", [A1], , , xlByRows, xlPrevious).Row
  Spalte = .Cells.Find("*", [A1], , , xlByColumns, xlPrevious).Column
  .Range(.Cells(2, 1), .Cells(Zeile, Spalte).Address).ClearContents
End With
End Sub
Gruß Jürgen

Anzeige
AW: Select vermeiden
11.08.2008 18:19:43
Marc
Hallo an alle.
Sorry für die späte Antwort. Ziel ist so definiert:
set Ziel= Worksheet("Tabelle1")
Werde eure Tipps testen und berichten.
Ich habe gedacht, dass in der Range das Ziel weggelasen werdern kann, da ich ohne "with Ziel" arbeite.
Gruß Marc

AW: Select vermeiden
12.08.2008 10:03:00
Yal
Hi Marc,
im Grund genommen möchtest Du alle Zellen in der Arbeitsblatt ausser die erste Zeile löschen. Richtig?
Sieht dann so aus:
Version 1 mit "With":
With Ziel
.Range(.Range("A2"),.Cells.SpecialCells(xlLastCell)).ClearContents
End With
Version 2 ohne "With":
Ziel.Range(Ziel.Range("A2"),Ziel.Cells.SpecialCells(xlLastCell)).ClearContents
Version 3, mit zuerst sicherstellen, dass wir uns im Blatt Ziel befinden (notiere das Weglassen der Punkten vor "Range" und "Cells" ggü die "With"-Version):
Ziel.Activate
Range(Range("A2"),Cells.SpecialCells(xlLastCell)).ClearContents
Viel Erfolg
Yal
Anzeige

299 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige