/ / Excel: Klicken Sie auf die Schaltfläche, um die Zeile in ein anderes Arbeitsblatt zu kopieren - Excel, VBA, Excel-VBA

Excel: Klicken Sie auf die Schaltfläche, um die Zeile in ein anderes Arbeitsblatt zu kopieren - Excel, VBA, Excel-VBA

Ich weiß, ich weiß. Es gibt eine Menge Vorschläge, wie man dieses spezielle Problem lösen kann, aber irgendwie scheitern sie alle bei mir.

Was ich habe (vereinfacht): Eine (Mac) Excel-Tabelle "Ausgabe" mit:

Name   Time   Date
Mike   08:00  01.01.2016

Die zweite Zeile liefert die Daten basierend auf einigen Eingaben auf einem weiteren Blatt.

Was ich brauche: Wann immer ich die zweite Zeile von "Ausgabe" ändere (d. H. Die Eingabe ändere), kann ich auf eine Schaltfläche klicken, um die gesamte zweite Zeile zu einem neuen Arbeitsblatt "Protokoll" hinzuzufügen (das auch eine Kopfzeile enthält). Im Wesentlichen Protokollierung der Daten beim Klicken auf die Schaltfläche. Die Daten können nur einmal hinzugefügt werden, mehrere Einträge derselben Daten werden gelöscht. Nach dem Protokollieren der Daten in "Protokoll" muss die zweite Zeile von "Ausgabe" nicht gelöscht werden, ich sollte jedoch nicht in der Lage sein, dieselben Daten erneut hinzuzufügen.

Irgendwelche Gedanken?

*BEARBEITEN

Ich habe den Code von hier aus geändert: http://goo.gl/48jjDo.

Sub Submit()
Application.ScreenUpdating = False

Dim refTable As Variant, trans As Variant
refTable = Array("A = A2", "B = B2", "C=C2")
Dim Row As Long
Row = Worksheets("Log").UsedRange.Rows.Count + 1
For Each trans In refTable
Dim Dest As String, Field As String
Dest = Trim(Left(trans, InStr(1, trans, "=") - 1)) & Row
Field = Trim(Right(trans, Len(trans) - InStr(1, trans, "=")))
Worksheets("Log").Range(Dest).value = Worksheets("Output").Range(Field).value
Next

Application.ScreenUpdating = True

End Sub

* Edit2

Ok, das hat mich weiter gebracht:

Sub CopyRangeFromSheet1toSheet2()
Dim lastRow As Long
lastRow = Sheets("Sheet2").Range("A100000").End(xlUp).Row + 1 " then next free   row in sheet2
Sheets("Sheet1").Range("A2:C2").Copy Destination:=Sheets("Sheet2").Range("A" &   lastRow)
End Sub

Wie überprüfe ich jetzt jedoch, ob mehrere Daten vorhanden sind? Und ich muss nur die Werte einfügen.

Antworten:

0 für die Antwort № 1

Bisher funktioniert das:

Sub CopyFormulas()
Dim sht1 As Worksheet, sht2 As Worksheet

Set sht1 = Sheets("Output")
Set sht2 = Sheets("Log")

sht1.Range("A2:C2").Copy
sht2.Cells(Rows.Count, "A").End(xlUp).Offset(1, 0).PasteSpecial xlPasteValues


Application.CutCopyMode = False

response = MsgBox("data was added")

End Sub

Es fehlt nicht nur die Prüfung auf mehrere Einträge