Microsoft Excel

Herbers Excel/VBA-Archiv

Select vermeiden

Betrifft: Select vermeiden von: Marc
Geschrieben am: 11.08.2008 14:15:36

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

  

Betrifft: AW: Select vermeiden von: Tobias
Geschrieben am: 11.08.2008 14:30:39

Was ist "Ziel". Also nicht dein Ziel, sondern die Variable Ziel?


  

Betrifft: AW: Select vermeiden von: Hajo_Zi
Geschrieben am: 11.08.2008 14:32:34

Hallo Tobias,

Ziel.Range(Cells(2, 1), Cells(lZeile2, lSpalte2)).Delete

GrußformelHomepage


  

Betrifft: AW: Select vermeiden von: Daniel
Geschrieben am: 11.08.2008 14:31:59

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


  

Betrifft: AW: Select vermeiden von: Yal
Geschrieben am: 11.08.2008 14:34:21

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


  

Betrifft: Re: von: Backowe
Geschrieben am: 11.08.2008 14:37:56

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
Code eingefügt mit Syntaxhighlighter 4.15


Gruß Jürgen


  

Betrifft: AW: Select vermeiden von: Marc
Geschrieben am: 11.08.2008 18:19:43

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


  

Betrifft: AW: Select vermeiden von: Yal
Geschrieben am: 12.08.2008 10:03:10

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


 

Beiträge aus den Excel-Beispielen zum Thema "Select vermeiden"