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?
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
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.