Thema Datum  Von Nutzer Rating
Antwort
04.07.2014 19:00:27 Andi
Solved
Blau Makro nur auf makierte Zellen anwenden
04.07.2014 21:00:49 Gast69383
Solved

Ansicht des Beitrags:
Von:
Gast69383
Datum:
04.07.2014 21:00:49
Views:
682
Rating: Antwort:
 Nein
Thema:
Makro nur auf makierte Zellen anwenden

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ß


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
04.07.2014 19:00:27 Andi
Solved
Blau Makro nur auf makierte Zellen anwenden
04.07.2014 21:00:49 Gast69383
Solved