2017-05-05 4 views
-1

Ich werde immer wieder von ein paar (was ich denke) einfachen Makros eingeholt. Wörtlich nur versuchen, PasteValues ​​einen Bereich von Zellen in ein anderes Blatt zu kopieren, während Sie Offset verwenden, um die Eingaben in letzte Zeile auf dem anderen Blatt zu löschen.Passpecial in VBA-Code gibt Syntaxfehler zurück (die in Title's Post geleistete Lösung funktioniert nicht)

Großes Bild, ich versuche, eine "Eingabe" -Registerkarte in Excel zu erstellen, die dann meine verschiedenen Gesundheit & Fitnesswerte nehmen und sie in andere Registerkarten in der Arbeitsmappe einstecken, um im Laufe der Zeit verfolgen zu können. Unten ist ein Screenshot von "Input" Tab, über den ich gesprochen habe. [1]

Die VBA, die etwas funktioniert, ist unter:

Sub DataWarehouseCL() 

Sheets("Input").Range("B11").Copy Sheets("Cardio Logs").Range("A1").End(xlDown).Offset(1, 0) 
Sheets("Input").Range("B2").Copy Sheets("Cardio Logs").Range("B1").End(xlDown).Offset(1, 0) 
Sheets("Input").Range("C11:E11").Copy Sheets("Cardio Logs").Range("C1:E1").End(xlDown).Offset(1, 0) 
Range("B11:E11").Select 
Selection.ClearContents 
Sheets("Cardio Logs").Select 
Range("B2").Select 
Range(Selection, Selection.End(xlDown)).Select 
Selection.Copy 
ActiveWindow.SmallScroll Down:=-255 
Range("B2").Select 
Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _ 
xlNone, SkipBlanks:=False, Transpose:=False 
Sheets("Input").Select 
Range("B2").Select 

End Sub 

Aber ich denke, dass ein wenig mehr ist ... und wollen nicht zu übertreiben und sich mit Fragen auf der Straße landen. Die VBA unter dieser ist die, die ich denke sollte funktionieren, aber hält mir einen Syntaxfehler.

Sub DataWarehouseWL() 

Sheets("Input").Range("B6").Copy Sheets("Workout Logs").Range("A1").End(xlDown).Offset(1, 0).PasteSpecial(xlPasteValues) 
Sheets("Input").Range("B2").Copy Sheets("Workout Logs").Range("B1").End(xlDown).Offset(1, 0).PasteSpecial(xlPasteValues) 
Sheets("Input").Range("C6:F6").Copy Sheets("Workout Logs").Range("C1:F1").End(xlDown).Offset(1, 0).PasteSpecial(xlPasteValues) 
Range("B6:F6").Select 
Selection.ClearContents 
Sheets("Input").Select 
Range("B2").Select 

End Sub 

Nicht sicher, ob, wie ich es beschrieben habe, einen Sinn ergibt.

[Input Tab][2] 
[One of the tabs that I'd like to populate using Input Tab][3] 
+0

.Kopie Destination: = Syntax ist keine .PasteSpecial Operation – Jeeped

Antwort

0

kann nicht herausfinden, wie Sie Ihre Antwort zu markieren, @Jeeped, wie mir erlaubt, meine erste Frage zu beantworten. Ich konnte Ihre ".Value" -Ende verwenden und replizierte sie einfach für jede Zelle. Ich weiß, nicht optimal, aber es wird funktionieren und was ich tue ist wirklich nur zu versuchen, meine eigenen Gesundheits - und Fitnessmessungen, Makros (Kohlenhydrate/Proteine ​​/ Fette), Gewinne/Verluste, etc. zu verfolgen, damit ich ein bauen kann Programm einzigartig für meinen Körper und optimieren meine Leistung. Nochmals vielen Dank, dass Sie sich die Zeit genommen haben, meine erste Frage zu lesen und zu beantworten!

@Jeeped Antwort:

Sub DataWarehouseWL()

WorkSheets("Workout Logs").Range("A1").End(xlDown).Offset(1, 0) = _ 
    WorkSheets("Input").Range("B6").Value 
WorkSheets("Workout Logs").Range("B1").End(xlDown).Offset(1, 0) = _ 
    WorkSheets("Input").Range("B2").Value 
WorkSheets("Workout Logs").Range("C1:F1").End(xlDown).Offset(1, 0) = _ 
    WorkSheets("Input").Range("C6:F6") 
Range("B6:F6").ClearContents 'what worksheet does this belong to...? 
Sheets("Input").Select 
Range("B2").Select 

End Sub

Lösung nach kleineren Replikationen:

Sub DataWarehouseWL()

WorkSheets("Workout Logs").Range("A1").End(xlDown).Offset(1, 0) = _ 
    WorkSheets("Input").Range("B6").Value 
WorkSheets("Workout Logs").Range("B1").End(xlDown).Offset(1, 0) = _ 
    WorkSheets("Input").Range("B2").Value 
Worksheets("Workout Logs").Range("C1").End(xlDown).Offset(1, 0) = _ 
    Worksheets("Input").Range("C6").Value 
Worksheets("Workout Logs").Range("D1").End(xlDown).Offset(1, 0) = _ 
    Worksheets("Input").Range("D6").Value 
Worksheets("Workout Logs").Range("E1").End(xlDown).Offset(1, 0) = _ 
    Worksheets("Input").Range("E6").Value 
Sheets("Input").Range("F1").Copy Sheets("Workout 
    Logs").Range("F6").End(xlDown).Offset(1, 0) 
Range("B6:F6").ClearContents 
Sheets("Input").Select 
Range("B2").Select 

End Sub

0

Verwenden Sie die direkte Wertübertragung, um xlValues zu passieren.

Sub DataWarehouseWL() 

    WorkSheets("Workout Logs").Range("A1").End(xlDown).Offset(1, 0) = _ 
     WorkSheets("Input").Range("B6").Value 
    WorkSheets("Workout Logs").Range("B1").End(xlDown).Offset(1, 0) = _ 
     WorkSheets("Input").Range("B2").Value 
    WorkSheets("Workout Logs").Range("C1:F1").End(xlDown).Offset(1, 0) = _ 
     WorkSheets("Input").Range("C6:F6") 
    Range("B6:F6").ClearContents 'what worksheet does this belong to...? 
    Sheets("Input").Select 
    Range("B2").Select 

End Sub 

Der einfachste Weg, Einfügen Werte und Formate zu kopieren, sind eine Vereinigung von discontiguous Zellen zu kopieren, in dem eine offball leere Zelle auf den ursprünglichen Bereich hinzugefügt wird. Ohne Ihre Daten zu sehen, kann ich nichts vorschlagen, aber die Spalte Z unter der Annahme, dann leer ist,

Sub DataWarehouseWL() 

    WorkSheets("Input").Range("B6, Z6").Copy Destination:=WorkSheets("Workout Logs").Range("A1").End(xlDown).Offset(1, 0) 
    WorkSheets("Input").Range("B2, Z2").Copy Destination:=WorkSheets("Workout Logs").Range("B1").End(xlDown).Offset(1, 0) 
    WorkSheets("Input").Range("C6:F6, Z6").Copy Destination:=WorkSheets("Workout Logs").Range("C1").End(xlDown).Offset(1, 0) 
    Range("B6:F6").Select 
    Selection.ClearContents 
    Sheets("Input").Select 
    Range("B2").Select 

End Sub 
+1

Whoa ... y'alls Follow-up war verrückt schnell, danke! Ich werde das erst morgen bestätigen können, aber danke, dass du dir die Zeit genommen hast, eine Antwort zu geben! –

Verwandte Themen