Registriert seit: 02.01.2022
Version(en): 2019
Hallo Profis,
diese Script hier kopiert die Formel aus Bereich AA2:AC2 und wird das dann in Zelle G2 eingefügt und schließlich nach unten kopiert und zwar bis der letzte nicht Leere Zelle in Spalte A (als Bezug).Wenn die letzte Zelle in Spalte A die en Text oder Wert enthält die die Zelle A20 entspricht, dann wird von Bereich G2:I2 nach unten bis G20:I20 kopiert.
Das funktioniert auch gut! Nur ich möchte nicht ab G2 runterziehen (kopieren) sondern ab aktive Zelle.
Z.B. wenn G7 markiert ist (aktiv), dann soll ab G7 nach unten kopiert werden (G7:I7) anstatt von G2
" Range("AA2:AC2").Select
Selection.Copy
If IsEmpty([G2]) Then
[G2].Select
Else
[G1].End(xlDown).Offset(1).Activate
End If
ActiveSheet.Paste
Application.CutCopyMode = False
Dim letzte&
letzte = Cells(Rows.Count, 1).End(xlUp).Row
Range("G2:I" & letzte - 0).FillDown "
Die letzte Zeile in Rot ist das problem , hab versucht mit "ActiveCel" anstatt "G2:I" ging nicht und sowas auf Google zu suchen ist nicht einfach.
Danke vielmals Im Voraus
ms2000
Registriert seit: 03.04.2020
Version(en): Office 365 und 2010
Hallo,
ein Profi bin ich sicherlich nicht in VBA. - Versuche einmal diese Lösung. Entgegen Deinem Wunsch die aktive Zelle automatisch zu erkennen und die Werte einzufüllen, habe ich Dir eine Lösung gemacht, in der Du in einer Input Box die Gewünschte Zelle angeben kannst, ab welcher die Werte eingefügt werden sollen. Dies geht nach meinem Wissen nur mit einer Schleife. - Vielleicht kann einer der Profis im Forum das noch einfacher ausgestalten.
Code:
Sub Test()
Dim letzte&
Dim rng As Range
letzte = Cells(Rows.Count, 1).End(xlUp).Row
Range("AA2:AC2").Select
Selection.Copy
If IsEmpty([G2]) Then
[G2].Select
ActiveSheet.Paste
Range("G2:I" & letzte - 0).FillDown
Application.CutCopyMode = False
Else
Set rng = Application.InputBox("Range:", Type:=8)
Sheets("Tabelle1").Range("A2:C2").Copy
For i = 1 To letzte
rng.Cells(i, 1).PasteSpecial xlPasteValues
Next
Application.CutCopyMode = False
End If
End Sub
Grüße
Norbert
Registriert seit: 04.11.2014
Version(en): Office 365 Beta
Hi,
so grundsätzlich, da Du VBA ja offenbar noch lernst, würde ich Dir empfehlen, Objekte sauber zu referenzieren (und nicht zu [evaluieren]) sowie alle Parameter eine Funktion/Methode - wie in Deinem Code z.B. bei
Offset(1) - explizit anzugeben:Code:
Offset(rowoffset:=1, columnoffset:=0)
Oder zumindest:Das gibt Dir ein Gefühl für die Syntax bzw. vorhandene Parameter.Zudem nimmst Du Dir mit der [Evaluierung]auch die Unterstützung durch die Intellisense, die Dir beimit Eingabe des Punktes zur Hilfe eilt
Registriert seit: 03.04.2020
Version(en): Office 365 und 2010
Hi Boris,
danke für die Infos. - Kann ich immer gebrauchen!
Hab noch einmal klarer strukturiert, die Evaluierungen herausgenommen und in beiden Fällen eine Schleife eingebaut:
Code:
Sub Test1()
Dim letzte&
Dim rng As Range
Dim i As Integer
letzte = Cells(Rows.Count, 1).End(xlUp).Row
If IsEmpty(Sheets("Tabelle1").Range("G2")) Then
Sheets("Tabelle1").Range("AA2:AC2").Copy
For i = 2 To letzte
Tabelle1.Cells(i, 7).PasteSpecial xlPasteValues
Next
Application.CutCopyMode = False
Else
Set rng = Application.InputBox("Range:", Type:=8)
Sheets("Tabelle1").Range("AA2:AC2").Copy
For i = 1 To letzte
rng.Cells(i, 1).PasteSpecial xlPasteValues
Next
Application.CutCopyMode = False
End If
End Sub
Mir war nur nicht klar, worauf sich Dein Hinweis auf "offset" in diesem Zusammenhang bezieht.
Grüße
Norbert
Registriert seit: 04.11.2014
Version(en): Office 365 Beta
Hi,
Code:
Mir war nur nicht klar, worauf sich Dein Hinweis auf "offset" in diesem Zusammenhang bezieht.
In Deiner Eingangsfrage hing auch dieser Codeschnipsel bei:
If IsEmpty([G2]) Then [G2].Select Else [G1].End(xlDown).Offset(1).Activate End IfZitat:danke für die Infos. - Kann ich immer gebrauchen!
Dann noch 2 Infos zu Deinen Variablen:Dim letzte&Die Typenkürzel (hier: & für Long) sind zwar schick, aber für den Anfang (und eigentlich auch darüber hinaus) nicht wirklich hilfreich.Und zuDim i As IntegerDa es eine Variable für den Zeilenzähler ist, sollte diese (vorsichtshalber) stets vom Typ Long sein, da für Integer bei 32768 Schicht im Schacht ist, Excel aber deutlich mehr Zeilen hat.
Registriert seit: 02.01.2022
Version(en): 2019
Danke sehr. Werde ich es am Wochenende Versuchen.
Nochmals, vielen Dank.
PS: Kennt vielleicht jemand von Euch (ohne das Ich jetzt ein neue Thread öffne) der Grund weshalb 2 Gleiche Excel Dateien A.xlsm und B.xlsm unterschiedlich lange brauchen zum Starten bzw. berechnen? A.xlsm ist viel schneller, B.xlsm extrem langsam als wäre die Datei mit Millionen von Formel belastet!!
Ich versuche gerade von A nach B step by Step rüber zu kopieren, das ist aber alles nicht normal!!!! Irgendwann passiert das wieder und dann? Na ja, das kann ganz schön Stressen, am bestens so wenig wie möglich mit Excel arbeiten. Entmutigend!
Registriert seit: 10.04.2014
Version(en): 97-2019 (32) + 365 (64)
Hallöchen,
Zitat:2 Gleiche Excel Dateien A.xlsm und B.xlsm ... Ich versuche gerade von A nach B step by Step rüber zu kopieren
falscher Ansatz. Besser: Speichern unter A als B
. \\\|/// Hoffe, geholfen zu haben.
( ô ô ) Grüße, André aus G in T
ooO-(_)-Ooo (Excel 97-2019+365)