Hallo Andi,
eine allgemeine Erläuterung zum Select:
Der Makrorekorder ist nur begrenzt dazu fähig "vernünftigen" Code zu erzeugen. Er zeichnet genau die Schritte auf die der Nutzer tätigt, d.h. wenn der Nutzer eine Zelle anklickt, wird sie markiert / ausgewählt - das ist dieses Select.
Im Makro ansich ist das jedoch gar nicht notwendig, ja sogar hinderlich (mehr Aktionen die durchgeführt werden müssen = mehr Zeit, die in Summe benötigt wird, um das Makro abzuarbeiten).
Angenommen du kopierst (entspricht STRG + C) die markierten Zellen anschließend, dann stünde im vom Makrorekorder erzeugten Code:
Range("I3:I14").Select
Selection.Copy
Also zwei Schritte die du so durchgeführt hast - logisch. Allerdings geht das viel einfacher, nur weiß der Makrorekorder das nicht, bzw. er ist nicht fähig diese Vereinfachung (man könnte auch sagen: Optimierung) durchzuführen. Diese sieht so aus:
Range("I3:I14").Copy
Man entfernt also die aufeinander folgenden Selection und Select und rückt beide Ausdrücke zusammen.
Ganz einfach, oder?
Wenn du jetzt mit verschiedenen Bereichen im Code arbeitest, ist es sinnvoll dafür Variablen zu deklarieren (Dim-Anweisung) und zu initialisieren (Set var = Range("I3:I14")).
Beispiel:
Option Explicit 'Variablendeklaration erzwingen (beugt Tippfehlern vor)
Public Sub Test
Dim rngBaustellen As Excel.Range
Dim rngBaustelle As Excel.Range
Set rngBaustellen = Worksheets("Tabelle1").Range("A3:I14")
' Set rngBaustelle = rngBaustellen.Columns(3) ' 3. Baustelle (3. Spalte im referenzierten Bereich)
' ODER für alle Baustellen:
'Spalte für Spalte im Bereich "Baustellen" durchgehen
For Each rngBaustelle in rngBaustellen.Columns
'Select und Stop dienen hier nur zur Visualisierung
'd.h. um sehen zu können was in Excel passiert
rngBaustelle.Select
Stop 'weiter mit der Taste F5
Next
End Sub
Anmerkung: Du hast etwas davon geschrieben, dass du Zellen verbindest. Das ist hier noch nicht berücksichtigt worden, da ich nicht weiß ob eine Baustelle aus einer oder mehreren Spalten besteht (verbundene Zellen machen zudem oft Ärger). Dementsprechen müsste man ggf. die For-Schleifen noch anpassen (wenn z.B. eine Baustelle immer 2 Spalten umfasst).
Das müsstest du dann noch näher erläutern.
Gruß
|