Anzeige
Archiv - Navigation
1092to1096
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
Inhaltsverzeichnis

With-Anweisung

With-Anweisung
Michel
hallo forum,
ich möchte mit einem makro in 15 tabellenblätter immer den zellenbereich e7:e15 löschen lassen.
wenn ich diese anweisung nun durch den makro-recorder aufzeichnen lasse, erzeugt es für jedes tabellenblatt den löschbefehl "clearcontents".
ist es möglich, alle diese einzelnen löschbefehle mit einer "with"-anweisung für alle 15 tabellenblätter in einem einzigen löschbefehl zusammenzufassen? wenn ja, wie?
hoffe das geht und hat zudem einen positiven einfluss auf die geschwindigkeit...
gruss & danke zum voraus

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

Betreff
Benutzer
Anzeige
AW: With-Anweisung
10.08.2009 16:27:35
Daniel
HI
naja, mit WITH geht das in diesem Fall nicht so gut, aber vielleicht so:
Sheets(Array("Tabelle1", "Tabelle2", "Tabelle3")).Select 'Hier bis Tabelle 15 fortsetzen
Range("e7:e15").select
Selection.ClearContents
das funktioniert so, als würdest du die Blätter anklicken und dabei die STRG-Taste gedrückt halten und dann den Zellbereich löschst, dann wird das auch auf allen ausgewählten Blättern ausgeführt.
Wenn du es allerdings etwas anders als der Recorder formulierst, dann sollte auch das einzelne Löschen kein Geschwindigkeitsproblem sein:
Sheets("Tabelle1").Range("e7:e15").ClearContents
Sheets("Tabelle2").Range("e7:e15").ClearContents
Sheets("Tabelle3").Range("e7:e15").ClearContents
Sheets("Tabelle15").Range("e7:e15").ClearContents

Gruß, Daniel
Anzeige
AW: With-Anweisung
11.08.2009 09:13:20
Michel
hallo daniel, hary
daniel: die zusammenfassung mit der array-anweisung funktioniert super. geschwindigkeit nun auch top, danke!
hary: deine anweisung würde auch funzen (und wäre vorallem viel kürzer!). nur kann/darf ich sie nicht einsetzen, weil bei einem tabellenblatt nun doch der löschbereich anders ist und ich mit der löscheanweisung, welche für alle tabellenblätter gilt, dort formeln löschen würde.
oder gibt es eine möglichkeit, für das betroffene tabellenblatt einen spezifischen löschbereich einzubauen?
gruss michel
AW: With-Anweisung
10.08.2009 16:32:59
hary
Hi
wenn die Mappe nur aus den 15 Blaettern besteht, geht's auch so.

Sub n()
Dim wks As Worksheet
For Each wks In ActiveWorkbook.Worksheets
wks.Range("E7:E15").ClearContents
Next
End Sub

Gruss hary
Anzeige
AW: With-Anweisung
11.08.2009 10:02:04
hary
Moin Moin
Dann nimm Daniel's Code. Da muesste sonst noch eine if Anweisung rein,dadurch wuerde der Code laenger.
Gruss Hary
AW: testmakro
11.08.2009 10:18:06
hary
Hallo
ich nochmal. Hab mal umgeaendert. Vieleicht sag er Dir doch zu.

Sub n()
Dim wks As Worksheet
For Each wks In ActiveWorkbook.Worksheets
If wks.Name  "Tabelle2" Then 'statt Tabelle2 kommt die ausnahme
wks.Range("E7:E15").ClearContents
End If
Next
Sheets("Tabelle2").Range("A1:A10").ClearContents 'hier Ausnahme Tabelle und bereich aendern
End Sub

Gruss hary
AW: testmakro
11.08.2009 10:45:26
Michel
hallo hary,
danke für die anweisung.
funktioniert auch.
gruss michel
Anzeige
AW: testmakro
11.08.2009 11:38:06
Daniel
Hi
das schreibt man dann aber besser so:
Sub n()
Dim wks As Worksheet
For Each wks In ActiveWorkbook.Worksheets
Select Case wks.Name
Case "Tabelle2"
wks.Range("A1:A10").ClearContents
Case "Tabelle3"
wks.Range("B2:B3").ClearContents
Case Else
wks.Range("E7:E15").ClearContents
End select
next
End Sub
dh. die Ausnamen definierst du unter "Case" mit angabe des spezifischen Namens, das was dann für den Rest gilst, passiert dann unter "Case Else"
Gruß, Daniel
AW: testmakro
11.08.2009 12:29:49
Michel
hallo daniel,
ok, wirklich noch eleganter (und vorallem flexibler, falls weitere ausnahmen definiert werden müssen).
danke.
gruss michel
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige