2016-08-09 109 views
-1

Ich möchte in der Lage sein, ein Makro zu erstellen, das Zelleninhalt leicht von einer Tabelle in eine andere übertragen kann. Lassen Sie mich genauer ausführen: Ich habe derzeit zwei Tabellen geöffnet. Siehe picture. Das linke Arbeitsblatt funktioniert über ein Button-Makro, das ich erstellt habe (nicht im Bild enthalten) und generiert drei verschiedene benachbarte Werte. Jedes Mal, wenn ich auf die Schaltfläche klicke, wird also eine neue Ausgabe generiert.Makro-Schaltfläche zum Übertragen von Informationen aus bestimmten Zellen in einer Tabelle in eine andere Tabelle

Was ich gerne tun könnte ist, diese Informationen aus dem Arbeitsblatt links in das Arbeitsblatt rechts in die Spalten G, H und I zu übertragen (indem man möglicherweise auf den Knopf auf dem rechten Arbeitsblatt klickt) und dann geht es zur nächsten leeren Zeile, um sich auf die nächste Runde erzeugter Werte vorzubereiten.

Ich habe ein bisschen Mühe beim Aufbau dieses (Anfänger). Könnten Sie etwas Hilfe anbieten?

Hier ist, was ich bisher:

Sub Button1_Click() 
If Not Intersect(ActiveCell, Range("G:G")) Is Nothing Then 
    If ActiveCell.Offset(1, 0) <> vbNullString Then 
     ActiveCell.Offset(1, 0).Select 
     ActiveCell.Value = Workbooks("Model.xlsx").Worksheets("Optimization").Range("C100").Value 
     ActiveCell.Offset(0, 1).Value = Workbooks("Model.xlsx").Worksheets("Optimization").Range("D100").Value 
     ActiveCell.Offset(0, 2).Value = Workbooks("Model.xlsx").Worksheets("Optimization").Range("E100").Value 
    End If 
End If 
End Sub 

Dank!

+0

Willkommen bei S.O arbeiten! Hast du irgendwas probiert? Wenn ja, bitte geben Sie den Code an, schauen Sie sich die [tour] (http://stackoverflow.com/tour) und [how to ask] an (http://stackoverflow.com/help/how-to-ask). Freundliche Erinnerung: StackOverflow ist kein "wir Code für Sie" -Dienstanbieter. [Einführung in VBA] (https://blog.udemy.com/excel-macros-tutorial/) – Sgdva

+0

Entschuldigung. Ich habe meinen aktuellen Code hinzugefügt. –

Antwort

0

Dies sollte

Sub Button1_Click() 
Const RowToTakeInformation = 100 
Const ColumnToTakeInformation = 3 
Const ColToWriteIn = 7 
Dim WBDesired As Workbook: Set WBDesired = Workbooks("Model.xlsx") 
Dim WSDesired As Worksheet: Set WSDesired = Worksheets("Optimization") 
'If everything is in the same WB, I don't see a valid reason why to set it 
Dim RowToInsert As Long 
Dim CounterColumnsToWrite As Long 

    If WBDesired.Worksheets(WSDesired.Name).Cells(RowToTakeInformation, ColumnToTakeInformation).Value <> "" Then ' 1. If WBDesired.Worksheets(WSDesired.Name).Cells(RowToTakeInformation, ColumnToTakeInformation).Value <> "" 
    'here I'm assuming it's a table or something like it that automatically recalculates when something is inserted in between 
    RowToInsert = Cells(Rows.Count, ColToWriteIn).End(xlUp).Row - 1 
    Rows(RowToInsert).Insert Shift:=xlDown 
    For CounterColumnsToWrite = 0 To 2 
    Cells(RowToInsert, ColToWriteIn + CounterColumnsToWrite).Value = WBDesired.Worksheets(WSDesired.Name).Cells(RowToTakeInformation, ColumnToTakeInformation + CounterColumnsToWrite) 
    Next CounterColumnsToWrite 
    End If ' 1. If WBDesired.Worksheets(WSDesired.Name).Cells(RowToTakeInformation, ColumnToTakeInformation).Value <> "" 
End Sub 
+0

Danke, viel! Ich erhalte anscheinend einen Fehler in Set WSDesired = Worksheets ("Optimization") Worksheets, in denen behauptet wird, dass der Index außerhalb des gültigen Bereichs liegt. Ich bin ziemlich sicher, dass der Name des Arbeitsblatts korrekt ist. –

+0

Excel kann nicht dort liegen, Haben Sie die Rechtschreibung überprüft? Wenn ja, dann sind wahrscheinlich Leerzeichen dazwischen. – Sgdva

+1

benötigen Sie wahrscheinlich 'Set WSDesired = WBDesired.Worksheets (" Optimierung ")'. Um sicher auf '" Optimierung "' Arbeitsblatt der Datei "Model.xlsx" verweisen. "Set WSDesired = Worksheets (" Optimization ")' würde sich auf das Arbeitsblatt "Optimierung" der gerade aktiven Arbeitsmappe beziehen. Dann benutze es im ganzen Code! – user3598756