ein kleines Problem und würde mich über eure Anregungen und Hilfe sehr freuen
Ich bin in Sachen Makro relativer Anfänger, habe aber in den letzten Wochen relativ viel gelernt, sodass ich Makros aufzeichnen kann.
Aber hier bin ich jetzt mit meinem (kleinen) Latein am Ende:
Ich soll einen Button erstellen, der die Daten einer makierten Zeile in eine andere Arbeitsmappe übernimmt, allerdings nur bestimmter Spalten:
markierte Zelle aus Spalte… in Arbeitsmappe1 -> in Zeile… neue Arbeitsmappe2
B ->B4
A ->B5
K ->B6
M ->B10
H ->B11
C ->B12
D ->B13
E ->B15
F ->B16
G ->B17
N ->B19
Hat jemand eine Idee, wie ich das aufzeichnen oder schreiben könnte?
Aufzeichnen ist eine „Krücke“. Man kann damit die ersten, etwas unbeholfenen Schritte erlernen. Du solltest dich aber dann rasch zum „aufrechten Gang“ fortentwickeln. Der zeigt sich z.B. darin, dass du dann kaum noch SELECT und ACTIVATE … verwenden wirst.
Ich soll einen Button erstellen, der die Daten einer makierten
Zeile in eine andere Arbeitsmappe übernimmt, allerdings nur
bestimmter Spalten:
markierte Zelle aus Spalte… in Arbeitsmappe1 -> in
Zeile… neue Arbeitsmappe2
B ->B4
A ->B5
K ->B6
M ->B10
H ->B11
C ->B12
D ->B13
E ->B15
F ->B16
G ->B17
N ->B19
Du wählst also z.B. Zeile 33; dann wird B33 nach B4 in der neuen Mappe kopiert.
Heisst das, dass du für jeden Vorgang eine neue Mappe erstellst, da du ja immer in dieselben Zellen kopierst? Oder machst du das immer mit derselben „neuen“ Mappe; dann möchtest du wohl diese zweite Serie nicht in die Spalte B, sondern z.B. C kopieren? und die nächste nach D …?
Sobald das klar ist, kann ich dir rasch ein Makro dazu schreiben.
Gruss
Erich
danke für dein Hilfsangebot! Ich weiß, das mit dem auzeichnen ist nicht der Hammer, aber als Anfänger ist man schon darüber glücklich denn die letzten Versuche zu Programmieren liegen in der Schulzeit und waren nicht sonderlich erfolgreich
Das Ding soll folgendes machen:
Ich habe eine Mappe 1, in der ich eine Zeile 1 anklicke und aus dieser Zeile soll ein Bericht 2 (als neue Arbeitsmappe) entstehen, in der die Information Zeile 1 übertragen werden.
Wenn ich also Zeile 5 markiere und den Button betätige, soll eine neue Berichtmappe entstehen, in die die Infos der Mappe 1 übernommen werden soll:
wenn die markierte Zeile 5 ist, sollen die Infos aus Zelle B5-Mappe1 in die Zelle B4-Mappe2 übernommen werden, aus Zelle A5-Mappe1 in die Zelle B5-Mappe zwei, aus Zelle K5-Mappe1 in Zelle B6-der Mappe2…
wenn die markierte Zeile 5 ist, sollen die Infos aus Zelle B6-Mappe1 in die Zelle B4-Mappe3 übernommen werden, aus Zelle A6-Mappe1 in die Zelle B5-Mappe3, aus Zelle K6-Mappe1 in Zelle B6-der Mappe3…
korrespondierend hiermit:
markierte Zelle aus Spalte… in Arbeitsmappe1 -> in
Zeile… neue Arbeitsmappe2
B ->B4
A ->B5
K ->B6
M ->B10
H ->B11
C ->B12
D ->B13
E ->B15
F ->B16
G ->B17
N ->B19
und mit jedem Buttonklick soll eine neue Mappe mit den Infos der momentan markierten Zeile erstellt werden.
Das ist irgendwie so kompliziert, ich hoffe, ich konnte es verständlich rüberbringen.
Hast du zufällig noch einen Buchtipp auf Lager, um die ganze Sache ein bisschen zu lernen? …aber bitte einfach
markierte Zelle aus Spalte… in Arbeitsmappe1 -> in
Zeile… neue Arbeitsmappe2
B ->B4
A ->B5
K ->B6
M ->B10
H ->B11
C ->B12
D ->B13
E ->B15
F ->B16
G ->B17
N ->B19
und mit jedem Buttonklick soll eine neue Mappe mit den Infos
der momentan markierten Zeile erstellt werden.
Option Explicit
Sub erzuege()
Dim Quelle, Ziel As String, N As Integer, wb1 As Workbook, Zei As Long
Set wb1 = ThisWorkbook
Quelle = Array("B", "A", "K", "M")
Ziel = "B4"
Zei = ActiveCell.Row
Workbooks.Add
With ActiveWorkbook
For N = 0 To UBound(Quelle)
wb1.Worksheets(1).Range(Quelle(N) & Zei).Copy Destination:=.Worksheets(1).Range("B" & 4 + N)
Next N
End With
End Sub
Hi Martina und Reinhard
Die elegante Lösung von Reinhard kam rasch wie immer, aber es gibt darin noch ein ungelöstes Problem! Kann Reinhard das auch wegzaubern?
For N = 0 To UBound(Quelle)
wb1.Worksheets(1).Range(Quelle(N) & Zei).Copy
Destination:=.Worksheets(1).Range(„B“ & 4 + N)
Die Liste von Martina enthält total 11 Werte und deren Zeile im neuen Blatt geht von B4, B5, B6, auf B10, 11,12,13 15,16 17,19; das kann nicht mit der angegebenen einfachen Schleife gemacht werden. Wie kann man die richtigen Zeilen hineinbringen?
Erich
Die Liste von Martina enthält total 11 Werte und deren Zeile
im neuen Blatt geht von B4, B5, B6, auf B10, 11,12,13 15,16
17,19; das kann nicht mit der angegebenen einfachen Schleife
gemacht werden. Wie kann man die richtigen Zeilen
hineinbringen?
Hallo Erich,
danke für die Blumen, hab das vollkommen überlesen daß es nicht linear geht, dann so:
Sub erzuege()
Dim Quelle, Ziel, N As Integer, wb1 As Workbook, Zei As Long
Set wb1 = ThisWorkbook
Quelle = Array("B", "A", "K", "M")
Ziel = Array("B4", "B5", "B6", "B10")
Zei = ActiveCell.Row
Workbooks.Add
With ActiveWorkbook
For N = 0 To UBound(Quelle)
wb1.Worksheets(1).Range(Quelle(N) & Zei).Copy Destination:=.Worksheets(1).Range(Ziel(N))
Next N
End With
End Sub
Vielen Dank für eure schnelle Hilfe,
nur noch eine kleine Frage
meine beiden Blätter heißen Testspecification (Quelle) und Testreport (Ziel)… wo schreibe ich das rein?
Und noch was: wenn ich eine Kopie des Testreports mache, um dann aus einer anderen markierten Zeile die Infos zu übernehmen, also um einen anderen Testreport zu erstellen, ändert sich das Ziel des Buttons dann automatisch oder müsste man das dann noch einmal festlegen… was die Sache aus meinen Augen unglaublich kompliziert macht!! *Angstschweiß steht auf der Stirn*
Vielen Dank für eure schnelle Hilfe,
nur noch eine kleine Frage
meine beiden Blätter heißen Testspecification (Quelle) und
Testreport (Ziel)… wo schreibe ich das rein?
Sub erzeuge()
Dim Quelle, Ziel, N As Integer, wb1 As Workbook, Zei As Long
Set wb1 = ThisWorkbook
Quelle = Array("B", "A", "K", "M")
Ziel = Array("B4", "B5", "B6", "B10")
Zei = ActiveCell.Row
Workbooks.Add
With ActiveWorkbook
.Worksheets(1).Name = "Testreport"
For N = 0 To UBound(Quelle)
wb1.Worksheets("Testspecification").Range(Quelle(N) & Zei).Copy Destination:=.Worksheets(1).Range(Ziel(N))
Next N
End With
End Sub
Und noch was
Schau an, zum Locken „nur eine Frage“ schreiben und dann…
wenn ich eine Kopie des Testreports mache, um
dann aus einer anderen markierten Zeile die Infos zu
übernehmen, also um einen anderen Testreport zu erstellen,
ändert sich das Ziel des Buttons dann automatisch oder müsste
man das dann noch einmal festlegen… was die Sache aus meinen
Augen unglaublich kompliziert macht!! *Angstschweiß steht auf
der Stirn*
Schweiß ist billiger als Feuchtikeitslotion für die Haut.
Zur Frage, ich sage mal nein, aber habs vielleicht nicht ganz verstanden.
wenn ich eine Kopie des Testreports mache, um
dann aus einer anderen markierten Zeile die Infos zu
übernehmen, also um einen anderen Testreport zu erstellen,
ändert sich das Ziel des Buttons dann automatisch oder müsste
man das dann noch einmal festlegen… was die Sache aus meinen
Augen unglaublich kompliziert macht!! *Angstschweiß steht auf
der Stirn*
Zur Frage, ich sage mal nein, aber habs vielleicht nicht ganz
verstanden.
ich glaub, ich hab jetzt langsam einen Knoten im Kopf, das is so komplex, deshalb versuch ich nochmal zu erklären, was ich meine:
ich hatte die ganze Sache so geplant:
Es gibt in Testreport einen Button, der bei jedem Klick einen zweiten Testreport und einen dritten,… erstellt.
Im Testreport-Blatt gibt es einen Button - zu dem du mir ja dieses schöne Makro gemacht hast - mit dem man die Informationen der markierten Zeile aus der Testspecification übernehmen kann.
Besteht dann die Möglichkeit, das Ding so zu programmieren, dass automatisch der Button im zweiten Testreport als Ziel die Mappe des zweiten Testreports wählt?