Über Schleife Routine auf Elemente anwenden

Bild

Betrifft: Über Schleife Routine auf Elemente anwenden von: Markus
Geschrieben am: 21.02.2005 16:53:00

Liebe Forum-Mitglieder,

folgendes Problem:

ich habe eine umfangreiche Routine (Mittelwertbildung, Generierung eines Histogramms, Plotten desselben) welches ich nun sukzessive auf jedes der Tabellenblätter in meinem Excelfile anwenden möchte.

Damit möchte ich vermeiden, dass ich 20 mal hintereinander im Grunde den gleichen Quatsch im Quelltext stehen habe und die Länge meines Quelltextes exponentiell anwächst.

Die Tabellenblätter haben Bezeichnungen. Es ist wichtig, dass die Bezeichnungen in der Schleife benutzt werden (letztlich der Übersicht halber).

Beispiel:

------------------------------------------------------


Klassifikationen=("blau", "schwer", "warm", "kalt")

For Each Schema in Klassifikationen

' Hier ein Teil einer Beispielroutine
'Wählen des Tabellenblatts
Sheets(Schema).Select
Sheets(Schema).Activate

i = 1
Do
i = i + 1
Loop Until ActiveSheet.Cells(i, 1) = ""

N = i - 2


'Berechnen von Mittelwert und Median
Worksheets(Schema).Activate

'Anzahl der Eintragungen
ActiveSheet.Cells(i + 1, 14).Select
ActiveSheet.Cells(i + 1, 14).Activate
ActiveCell = N

'und so weiter...

Next

--------------------------------------------------------

Dabei ist "Klassifikationen" eine Liste mit den Bezeichnungen meiner Tabellenblätter. "Schema" soll eine Laufvariable sein, deren Wert dann die Bezeichnung des gerade aktuellen Tabellenblatts ist (also ein String).

Wie müsste die Schleife richtig gesetzt sein und wie deklariere ich die Variablen "Klassifikationen" und "Schema"?

Kann mir jemand einen Tipp geben?

Vielen Dank im Voraus

Viele Grüße

Markus

Bild


Betrifft: AW: Über Schleife Routine auf Elemente anwenden von: Matthias G
Geschrieben am: 21.02.2005 17:00:37

Hallo Markus,

mal ein Beispiel, von dem du dir den Rest vielleicht selbst ableiten kannst:

Sub test()
Dim Sh As Worksheet
For Each Sh In ThisWorkbook.Sheets
    Debug.Print "Index: " & Sh.Index
    Debug.Print "Name : " & Sh.Name
    Debug.Print "in A1 steht: " & Sh.Range("A1")
Next Sh
End Sub


Noch Fragen?

GRuß Matthias


Bild


Betrifft: AW: Über Schleife Routine auf Elemente anwenden von: Markus
Geschrieben am: 21.02.2005 17:35:11

Hallo Matthias,

vielen Dank für die schnelle Antwort.
Das ist im Prinzip genau das was ich will.

For Each Sh In ThisWorkbook.Sheets

Das ist wohl ein generelles Konstrukt, was automatisch alle Tabellenblätter durchläuft.

Kann man anstatt dessen auch eine Auswahl treffen?

Vielen Dank und viele Grüße

Markus


Bild


Betrifft: AW: Über Schleife Routine auf Elemente anwenden von: Matthias G
Geschrieben am: 21.02.2005 18:58:32

Hallo Markus,

ja, z.B.
For Each Sh In Sheets(Array("Tabelle1", "Tabelle3", "Tabelle5"))

oder
For Each Sh In ActiveWindow.SelectedSheets 'alle ausgewählten Blätter

Gruß Matthias


Bild


Betrifft: AW: Über Schleife Routine auf Elemente anwenden von: Markus
Geschrieben am: 22.02.2005 08:45:41

Hallo Matthias,

funzt optimal!
Herzlichen Dank für den Tipp!

Viele Grüße
Markus


 Bild

Beiträge aus den Excel-Beispielen zum Thema "Über Schleife Routine auf Elemente anwenden"