2010-12-08 7 views
2

Ich habe ein einfaches Makro aufgenommen, das ich in etwas Generisches machen muss, damit es für jede Zeile und die letzten vier Zellen verwendet werden kann. Hier ist meine recroded Version:Excel-Makro: machen Sie eine aufgenommene Zelle weniger spezifisch?

Selection.End(xlToRight).Select 
Selection.End(xlToRight).Select 
Selection.End(xlToRight).Select 
Selection.End(xlToRight).Select 
Selection.End(xlToLeft).Select 
Range("Q12:T12").Select 
Range("T12").Activate 
Selection.Copy 

End Sub

Wie kann ich

  • es an die letzte Zelle des ROW ich den Cursor auf die Stelle gehen machen?
  • ändern Sie die zellenspezifischen Bereiche in einen Bereich, der nur bedeutet: Wählen Sie diese Zelle und 3 weitere auf der linken Seite?

... die selection.copy glaube ich fast verwalten :)

Mike

Vielen Dank kann

+1

PRO TIPP: Wenn Sie Excel für Windows verwenden, können Sie Ihre Makros in RELATIV-Modus statt ABSOLUTE-Modus aufnehmen und eine Aufnahme erhalten, in dem alle Zellverweise auf den Ausgang Auswahl relevant sind statt absolut. –

+0

Toller Tipp, ich werde sicherstellen, dass ich das nächste Mal benutze. Danke – RocketGoal

Antwort

5

Dies wird kopieren Sie die letzten vier Zellen in jeder Zeile klicken in:

Sub CopyLastFourCellsOfRow() 
Dim lastCell As Range 
Dim rngToCopy As Range 

Set lastCell = Selection.End(xlToRight) 
Set rngToCopy = Range(lastCell, lastCell.Offset(0, -3)) 

rngToCopy.Copy 

End Sub 

Aktualisieren - Wenn Ihre Zeile Daten unterbrochen hat, dann ist der beste Ansatz, in der letzten Spalte der Tabelle (Spalte IV) zu beginnen und dann zu arbeiten. Um dies zu erreichen, die lastCell Anweisung mit der folgenden ersetzen:

Set lastCell = Cells(Selection.Row, 256).End(xlToLeft) 
+0

Viel geschätzt. – RocketGoal

+0

Geringes Problem. Einige der Zeilen haben Daten gebrochen, gibt es also eine Möglichkeit, sie bis zum Ende der REI zu durchlaufen und dann wieder zu kommen? – RocketGoal

+0

@Mike - siehe aktualisierten Code, um fehlerhafte Daten unterzubringen –

4

können Sie tatsächlich tun die einzelnen Schritte Sie über alle in einer schnellen Bewegung zu fragen. Um es zur letzten Zelle in der aktuellen Zeile zu gehen, verwenden Sie nur ActiveCell.End (xlToRight). (Use ‚Active‘, weil es entspricht ‚Auswahl‘, wenn nur eine Zelle ausgewählt ist, funktioniert aber auch dann, wenn mehrere Zellen markiert sind.)

Range(ActiveCell, ActiveCell.Offset(0, -3)).Select 

wird die aktuelle Zelle und 3 weitere auf der linken Seite auswählen. Beachten Sie, dass Sie "Selection.Copy" nicht in einem separaten Schritt ausführen müssen. gehen Sie einfach:

Range(ActiveCell, ActiveCell.Offset(0, -3)).Copy 
+0

Genau die Art von Antwort, die ich mir erhofft hatte - eine Antwort mit Bildung inbegriffen. Danke vielmals. – RocketGoal

Verwandte Themen