"Gehe zum letzten ActiveSheet"

17/09/2008 - 15:36 von Harri Märki | Report spam
Hallo zusammen

Ich bin an der Bearbeitung einer Exceltabelle mit mehreren Registern. In
Register 1 ist eine Gesamtübersicht. In Register 2 bis 35 sind Daten
verschiedener Geràte enthalten. Hier kann es zu Änderungen kommen. In
Register 36 ist ein Schadensprotokoll.

Ich habe nun ein Makro erstellt, welches mir die Daten aus verschiedenen
Zellen eines Registers, z.B Register 2, in das Register 36
"Schadensprotokoll" kopiert und danach druckt.

Das Makro für ein Register zu erstellen ist kein Thema. Ich möchte aber ein
einzelnes Makro für alle Register (2 - 35) verwenden können, also nicht für
jedes Register ein separates Makro erstellen müssen.

Mein aktuelles Makro:

Sub Schaden_Pen()
'
' Schaden_Pen Makro
'
Sheets("01").Select
Range("D2").Select
Selection.Copy
Sheets("Schadensmeldung").Select
Range("D13:G16").Select
ActiveSheet.Paste
Range("D9:G12").Select
Sheets("01").Select
Range("D3").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Schadensmeldung").Select
ActiveSheet.Paste
Range("K9:N12").Select
Sheets("01").Select
Range("A13").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Schadensmeldung").Select
ActiveSheet.Paste
Range("K13:N16").Select
Sheets("01").Select
Range("B13").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Schadensmeldung").Select
ActiveSheet.Paste
Range("D17:N20").Select
Sheets("01").Select
Range("C13").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Schadensmeldung").Select
ActiveSheet.Paste
Range("D21:N24").Select
Sheets("01").Select
Range("D13").Select
Application.CutCopyMode = False
Selection.Copy
Application.CutCopyMode = False
Selection.Copy
Sheets("Schadensmeldung").Select
ActiveSheet.Paste
Range("D25:N28").Select
Sheets("01").Select
Range("E13").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Schadensmeldung").Select
ActiveSheet.Paste
Range("D29:N32").Select
Sheets("01").Select
Range("F13").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Schadensmeldung").Select
ActiveSheet.Paste
Range("D9:G12").Select
Application.CutCopyMode = False
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
Sheets("01").Select
Rows("13:13").Select
Selection.Insert Shift:=xlDown
Range("A13").Select
End Sub

Gibt es eine Möglichkeit, das Makro so zu programmieren, dass immer aus dem
letzten aktiven Register diese Daten geholt werden? Also wenn ich dies aus
Register "02" starte, immer die Daten aus diesem Register geholt werden, bei
Register "06" immer nur die aus eben diesem Register?

Gibt sowas wie einen Befehl: "LastActiveSheet.Select" statt des Befehls
"Sheets("01").Select" ??

Gruss
Harri
 

Lesen sie die antworten

#1 Claus Busch
17/09/2008 - 15:54 | Warnen spam
Hallo Harri,

du musst nicht selektieren. Das geht auch einfacher, z.B. so:
Sheets("01").Range("D1").Copy _
Destination:=Sheets("Schadensmeldung").Range("A1")
Dies kopiert dir D1 aus Blatt 01 nach Schadensmeldung A1.

Zu deiner Frage müsstest du noch einiges nàher erlàutern. Was soll aus
den Blàttern kopiert werden? Immer die letzte Zeile? Oder nur wenn
Schadensmeldung? Wenn ja, woran erkennt man, dass diese Zeile eine
Schadensmeldung ist? Wohin soll eingefügt werden? Immer wieder in die
erste freie Zeile oder wird der Inhalt nach dem Drucken gelöscht und
immer vorne eingefügt?


Mit freundlichen Grüssen
Claus Busch
Win XP Prof SP2 / Vista Ultimate
Office 2003 SP2 / 2007 Ultimate

Ähnliche fragen