Freigeben über

VBA: Kopieren einer Zeile in eine andere mit Hilfe einer Variablen, die Position einer gesuchten Zeile bestimmt.

Anonym
2022-04-21T15:58:27+00:00

Hallo,

ich bin absoluter Neuling (seit Gestern angefangen) und versuche einfach nur im Rahmen meines Werkstudentenjobs mit Excel VBA ein Code zusammenzubekommen.
Das meiste funktioniert, aber an einer Stelle komme ich nicht weiter und setze deshalb auf die Hilfe der Community.

Dies ist mein Versuch:

Dim cell As Range

Dim cell2 As Range

Dim SWalt As String

SWalt = Range("Q2").Value. #entnehme Wert aus Zelle

Set cell = Range ("C3:200").Find("Quick test of " & SWalt)# die Variable cell nutze ich, um den Suchtext zu speichern und die Reihe mit dem Eintrag zu finden

Set cell2 = cell.Offset(1,0)

Ich möchte eine Leerzeile einfügen für einen neuen Eintrag mit einer neueren SW Version. Dies funktioniert problemfrei:

Worksheets("Table").Range(cell.Address(False,False)).EntireRow.Insert

Jetzt beginnen meine Probleme: Der alte Eintrag aus der zuvor gesuchten Zeile muss in die neue leere Zeile kopiert werden. Dafür habe ich cell2 als Variable genutzt, um die durch das Insert verschobene Zeile nachzuverfolgen. Die Zeilennummer verändert sich durch den Insert.

Ich versuche das dann folgendermaßen zu kopieren:

Worksheets("Table").Range(????).Copy. Destination:=Worksheets("Table").Range(?????). # normalerweise würde an der Stellen z.B. Range("136:136") stehen. Wie kann ich das in der Situation lösen? Wenn ich Einträge (an Stelle der Fragezeichen) mit den Variablen cell und cell2 versuche funktioniert es nicht. Gibt es da eine besondere Schreibweise oder muss ich zuerst die Variable umformen?

Ich hoffe das ist einigermaßen verständlich erklärt.

Mit freundlichen Grüßen,
V. Gust

Microsoft 365 und Office | Excel | Geschäftlich | Windows

Gesperrte Frage. Diese Frage wurde aus der Microsoft-Support-Community migriert. Sie können darüber abstimmen, ob sie hilfreich ist, aber Sie können keine Kommentare oder Antworten hinzufügen oder der Frage folgen.

0 Kommentare Keine Kommentare
Antwort, die vom Frageautor angenommen wurde
  1. Anonym
    2022-04-21T17:23:49+00:00

    Hallo Volker,

    das geht mit

    Range("A" & c.Row)

    Claus

    Eine Person fand diese Antwort hilfreich.
    0 Kommentare Keine Kommentare
Antwort, die vom Frageautor angenommen wurde
  1. Anonym
    2022-04-21T16:29:24+00:00

    Hallo Volker,

    probiere es mal so:

    Sub Test() 
    
    Dim c As Range 
    
    Dim SWalt As String 
    
    SWalt = "Quick test of " & Range("Q2") 
    
    Set c = Range("C3:C200").Find(SWalt, lookat:=xlWhole) 
    
    Rows(c.Row + 1).Insert 
    
    Rows(c.Row).Copy Rows(c.Row + 1) 
    

    End Sub

    Falls das nicht die gesuchte Lösung ist, erkläre mal dein Vorhaben genauer.

    Claus

    Eine Person fand diese Antwort hilfreich.
    0 Kommentare Keine Kommentare

2 zusätzliche Antworten

Sortieren nach: Am hilfreichsten
  1. Anonym
    2022-04-21T17:34:53+00:00

    Ach so einfach...Aber kennen müsste man es.

    Vielen Dank, damit sind meine Probleme gelöst.

    Schöne Woche!

    0 Kommentare Keine Kommentare
  2. Anonym
    2022-04-21T17:16:43+00:00

    Hallo Claus,

    die Lösung funktioniert super, vielen Dank!

    Jetzt ist aber ein neues Problem aufgetreten. Vllt. kannst du mir auch hierbei helfen.
    Ich muss in der Zeile c.Row in der Spalte A noch den Integerwert einer Variablen "no" einfügen.
    Ich weiß aber nicht, wie ich die Spalte A ansprechen kann.

    Beste Grüße,
    V. Gust

    0 Kommentare Keine Kommentare