Excel Makro kopieren und einfügen

Hallo zusammen,

Ich habe eine wahrscheinlich sehr triviale Frage. Ich habe in einem Tabellenblatt(Basis) Daten in Zeilen stehen. Ein Teil dieser Daten (z.B die in A und B stehen) möchte ich in ein anderes Tabellenblatt kopieren und dort mit anderen Daten verheiraten. Wie kann ich eine beliebig lange „Liste“ in ein neues Tabellenblatt per Makro kopieren?

Vielen Dank und Gruß

Ich würde raten, ein Makro aufzunehmen mit den Schritten, die gemacht werden sollen, also Bereich auswählen, neues Blatt auswählen, Bereich dort hinkopieren. Mit Alt-F11 kommt man zum VBA-Editor und unter Modul1 findet man dann das erzeugte Programm.
Das kann man dann nach seinen Wünschen verändern.
Viel Erfolg beim Probieren.

dim i as long, l as long, c as long
c=0
l=1
for i=1 to 65536
if sheets(„Basis“) .cells(i,1)="" then
c=c+1
if c= 120 then
exit for
end if
else
'Zelle „“
tabelle2.cells(l,2)=sheets(„basic“).cells(i,1)
l=l+1
next i

Grüsse Sebastian

Super! Besten Dank :smile:

-)

Hallo Huggybear,
es kommt auf die Art des Bereiches an.
Spalte adressiert man z.B. mit

Range("a:a")

, Spalten mit

Range("a:c")

{hier Spalten a bis c}
Einen Zellenblock a1 bis b3 kann man mit

Range("a1:b3")

adressieren. Für dynamische Adressierung gibt es Möglichkeit mit Offset zu arbeiten. z.B.:

Range(Range("b5").Offset(0, 0).Address, Range("b5").Offset(2, 5).Address)

ergibt Bereich von b5 bis g7, Range(„b5“) könnte durch cells(5,2) ersetzt werden…

also, wie man sieht, es gibt viele Wege die zum Range führen.
Viel Spaß beim ausprobieren.
W.W.

Hallo Huggybear,

trivial ist es nicht, aber auch kein Hexenwerk. Hier Haupt-Makro und Subroutine, die die Daten kopieren, so dass sie an der aktiven Zelle oder beliebiger ander Position eingefügt werden können.

Wenn du konkretere Vorgaben für das Einfügen hast, dann kann man die natürlich auch noch ergänzen.

Gruß
Franz

'Code in einem allgemeinen Modul entweder der Datei oder der \_
 persönlichen Makroarbeitsmappe
'

Sub Daten\_Kopieren\_in\_Basis\_AB()
 'Daten in Spalten A bis B des Blattes "Basis" kopieren
 Call prcDaten\_in\_Spalten\_kopieren(SpalteVon:=1, SpalteBis:=2, \_
 Zeile\_1:=1, wks:=ActiveWorkbook.Worksheets("Basis"))
End Sub

Sub prcDaten\_in\_Spalten\_kopieren(SpalteVon As Long, SpalteBis As Long, \_
 Optional Zeile\_1 As Long = 1, Optional wks As Worksheet)
 'Daten gemäß Parametern in einem Spaltenbereich kopieren
 Dim rngBereich As Range

 If wks Is Nothing Then Set wks = ActiveSheet

 With wks
 'letzte Zeile mit Daten in den zu kopierenden Spalten
 Set rngBereich = .Range(.Columns(SpalteVon), .Columns(SpalteBis)).Find(what:="\*", \_
 After:=.Cells(1, SpalteVon), LookIn:=xlFormulas, lookat:=xlWhole, \_
 searchorder:=xlByRows, searchdirection:=xlPrevious)

 If rngBereich Is Nothing Then
 MsgBox "Keine Daten in den zu kopierenden Spalten des Blattes """ & .Name & """"
 Else
 .Range(.Cells(Zeile\_1, SpalteVon), .Cells(rngBereich.Row, SpalteBis)).Copy
 If MsgBox("Daten bereit zum Einfügen. Jetzt ab aktiver Zelle einfügen?", \_
 vbQuestion + vbYesNo, "Daten kopieren") = vbYes Then
 ActiveCell.PasteSpecial Paste:=xlPasteAll
 End If
 End If
 End With
End Sub

Mit der Tastenkombination ++ kann man Zellen von der aktuellen Cursorposition bis zum Dateiende
markieren (egal welches die letzte Zelle ist).
Sollen nur bestimmte Spalten markiert werden kann man dies mit + erreichen.

Ich hoffe das beantwortet die Frage wenn auch urlaubsbedingt etws spät.

Hallo, da kann ich dir leider nicht weiterhelfen.
Carsten

Sub Makro1()
ErsteZeile = ActiveSheet.UsedRange.Cells(1).Row
LetzteZeile = [A65536].End(xlUp).Row

Rows(ErsteZeile & „:“ & LetzteZeile).Select
Selection.Copy
Sheets(„Tabelle2“).Select
ActiveSheet.Paste
Range(„A1“).Select
End Sub

Gruß,
Ptonka