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)
 
	 
 
	
	
	
		
	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)