738 Aufrufe
Gefragt in Tabellenkalkulation von b25812 Mitglied (509 Punkte)
Hallo,
ich möchte per VBA was Kopieren. Soweit ist das auch kein Problem. z.b d3-d12 und
das fügt er dann in A30 ein. Dann sind dann 10 Zellen. Nun soll er den nächsten Block
H3-H7 unten an die Spalte A anfügen. Das heißt bevor er einfügt, muss er schauen wo
war der letzte Eintrag in der Spalte A und danach soll er den nächsten Block dort
einfügen.
Habt Ihr da eine Idee ???

22 Antworten

0 Punkte
Beantwortet von m-o Profi (19.3k Punkte)
Hallo Thomas,

mit
ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row

kannst du die letzte beschriebene Zelle in Spalte A ermitteln.

Hier ein kurzer Beispielcode:

Sub kopieren()
Dim lngLetzte As Long

'letzte beschriebene Zeile ermitteln und um 1 erhöhen
lngLetzte = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row + 1

'Kopieren
Range("H3:H7").Copy Cells(lngLetzte, 1)

End Sub

Gruß

M.O,
0 Punkte
Beantwortet von b25812 Mitglied (509 Punkte)
Hallo M.O,

ich müsste noch erwähnen das ich von einer bestimmte Zelle Anfange
z.b A10 oder B20 mitdem einfügen. Und dann sollte es da in der Spalte
immer weiter gehen.
Der andere bereich wie z.B. H3:H7 ist immer Variabel.

Gruß
Thomas.
0 Punkte
Beantwortet von b25812 Mitglied (509 Punkte)
So sieht mein Code aus, vielleicht hilft das ?

' Lg_Kopieren Makro
'

'
Selection.Copy
Range("A30").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone,
SkipBlanks _
:=False, Transpose:=False
End Sub

Beim nächsten ausführen soll er dann die nächsten Werte unten
ansetzen. usw usw

Gruß Thomas
0 Punkte
Beantwortet von m-o Profi (19.3k Punkte)
Hallo Thomas,

der Code war ja nur als Beispiel gedacht. Natürlich kannst du auch eine Einfügezeile festlegen, z.B. über eine IF-Abfrage, und auch die zu kopierenden Zeilen kannst du variabel gestalten:

Sub kopieren()
Dim lngLetzte As Long

'letzte beschriebene Zeile ermitteln
lngLetzte = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row

'Einfügen erst ab Zeile 20
If lngLetzte < 20 Then
lngLetzte = 20
Else
lngLetzte = lngLetzte + 1
End If

'Kopieren
Range(Cells(3, 8), Cells(7, 8)).Copy Cells(lngLetzte, 1)

End Sub


Gruß

M.O.
0 Punkte
Beantwortet von m-o Profi (19.3k Punkte)
Hallo Thomas,

hier dein flexibler Code angepasst:

Sub kopieren()
Dim lngLetzte As Long

'letzte beschriebene Zeile ermitteln und um 1 erhöhen
lngLetzte = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row

If lngLetzte < 30 Then
lngLetzte = 30
Else
lngLetzte = lngLetzte + 1
End If

'Kopieren
Selection.Copy

With Cells(lngLetzte, 1)
.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
End With

Application.CutCopyMode = False

End Sub


Gruß

M.O.
0 Punkte
Beantwortet von b25812 Mitglied (509 Punkte)
Hallo M.O
leider bekomme ich deine Funktion in meinem Code nicht Integriert.
Kannst du mir bitte da nochmal behilflich sein ?

Gruß Thomas
0 Punkte
Beantwortet von m-o Profi (19.3k Punkte)
Hallo Thomas,

der Code kopiert die ausgewählten Zellen ab Zeile 30 in Spalte A. Ich bin davon ausgegangen, dass dein geposterter Code dein gesamtes Makro ist. Falls das so ist, dann kannst du meine Code aus Antwort normal nutzen. Ansonsten poste mal deinen gesamten Code.

Gruß

M.O.
0 Punkte
Beantwortet von b25812 Mitglied (509 Punkte)
Hallo M.O.

Das ist mein kompletter Code.
Meine ausgewählten Zellen sind im andere z.b A5:A10 dann c8:c15
oder G8:G10.
Je nachdem was ich vorher markiere. Deswegen Selection.Copy.
Ich möchte die Werte dann nur untereinander in der Spalte A zustehen
haben, angefangen von der A30

Gruß Thomas
0 Punkte
Beantwortet von m-o Profi (19.3k Punkte)
Hallo Thomas,

hast du meinen geposteten Code ausprobiert? Du musst nur mein gepostetes Makro in ein allgemeines Modul deiner Arbeitsmappe kopieren, die Zellen, die du kopieren willst markieren und dann den Code starten.

Du brauchst nichts in dein vorhandenes Makro zu integrieren.

Gruß

M.O.
0 Punkte
Beantwortet von b25812 Mitglied (509 Punkte)
Hallo M.O
Ok probiere ich aus .

Gruß Thomas
...