Daten übertragen?

13/03/2010 - 21:22 von Peter Schürer | Report spam
Hallo Zusammen,

XL2002.

Ich kopiere per Makro Daten aus dem Blatt "Datenerfassung" in das Blatt
"Daten2010".
Die Daten in "Datenerfassung" stehen im Bereich C6:L33 und werden
Zeilenweise, beginnend in der ersten leeren Zelle in Spalte A, in das
Blatt "Daten2010" eingetragen. Nach einem Klick auf den Button "Daten
übertragen" wird das Blatt "Daten2010" aktiviert, die erste leere Zelle
in Spalte A (ab A4) gesucht und die Daten eingetragen. Danach springt
das Makro in das Blatt "Datenerfassung" zurück und eine làngere
Berechnung wird gestartet.
Wie kann ich jetzt diesen Blattwechsel vermeiden?
Ich möchte im Blatt "Datenerfassung" auf den Button "Daten übertragen"
klicken, das Makro übertràgt die Daten in das Blatt "Daten2010" ohne in
dieses Blatt zu wechseln.

Hier mein Code:

Sub DatSpeichern()
' [DatErf] = Blatt "Datenerfassung"
' [ProdDat] = Blatt "Daten2010"

Z = [DatErf].Range("M5") 'Zàhler für die Schleife wird gesetzt, wie oft
Werte in Spalte C
PDat = ActiveSheet.Range("D3") 'Datum
PBand = ActiveSheet.Range("G3") 'Band
PSchicht = ActiveSheet.Range("J3") 'Schicht

[ProdDat].Activate
For I = 1 To Z

AZelle = [DatErf].Range("C" & I + 5) 'Erste Zelle im Datenbereich
"Position" C6

ActiveCell.Value = PDat
ActiveCell.Offset(0, 1).Value = PBand
ActiveCell.Offset(0, 2).Value = PSchicht
ActiveCell.Offset(0, 3).Value = AZelle 'Wert aus C6 Stück Soll
ActiveCell.Offset(0, 4).Value = [DatErf].Range("C" & I +
5).Offset(0, 1).Value 'Modell
ActiveCell.Offset(0, 5).Value = [DatErf].Range("C" & I +
5).Offset(0, 2).Value 'Packteil
ActiveCell.Offset(0, 6).Value = [DatErf].Range("C" & I +
5).Offset(0, 3).Value 'Stück Ist
ActiveCell.Offset(0, 7).Value = [DatErf].Range("C" & I +
5).Offset(0, 4).Value 'MA Band
ActiveCell.Offset(0, 8).Value = [DatErf].Range("C" & I +
5).Offset(0, 5).Value 'P-Zeit
ActiveCell.Offset(0, 9).Value = [DatErf].Range("C" & I +
5).Offset(0, 6).Value 'TR
ActiveCell.Offset(0, 10).Value = [DatErf].Range("C" & I +
5).Offset(0, 7).Value 'ST
ActiveCell.Offset(0, 12).Value = [DatErf].Range("C" & I +
5).Offset(0, 8).Value 'MA Dispo
ActiveCell.Offset(0, 13).Value = [DatErf].Range("C" & I +
5).Offset(0, 9).Value 'MA Zulief.
ActiveCell.Offset(0, 14).Formula = "=TEXT(PDatum,""MMMM"")"
ActiveCell.Offset(0, 14).Copy
ActiveCell.Offset(0, 14).PasteSpecial xlPasteValues
Application.CutCopyMode = False

ActiveCell.Offset(1, -14).Activate
Next
[DatErf].Range("G3").ClearContents
[DatErf].Range("D3").ClearContents
[DatErf].Range("C6:J33").ClearContents
[DatErf].Select
Range("D3").Select

End Sub

Danke schon mal im Voraus :-)
Peter
 

Lesen sie die antworten

#1 Andreas Killer
14/03/2010 - 09:31 | Warnen spam
Peter Schürer schrieb:

Blatt "Daten2010" eingetragen. Nach einem Klick auf den Button "Daten
übertragen" wird das Blatt "Daten2010" aktiviert, die erste leere Zelle
in Spalte A (ab A4) gesucht und die Daten eingetragen. Danach springt
das Makro in das Blatt "Datenerfassung" zurück und eine làngere
Berechnung wird gestartet.
Wie kann ich jetzt diesen Blattwechsel vermeiden?


Indem Du nicht mit ActiveCell, Select, Activate, Selection arbeitest,
sondern stattdessen die entsprechenden Bereiche referenzierst / direkt
ansprichst.

Also statt

Sheets("Daten2010").Select
Range("A1").End(xlDown).Activate
ActiveCell.Offset(1,0) = "qwe"
ActiveCell.Offset(2,0) = "asd"

dann

dim R as Range
set R = Sheets("Daten2010").Range("A1").End(xlDown)
with R
.Offset(1,0) = "qwe"
.Offset(2,0) = "asd"
end with

das geht aus jedem Blatt heraus. Ändere den Code nach diesem Muster.

Andreas.

Ähnliche fragen