Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: VBA: Zeile in Variable speichern und einfügen

VBA: Zeile in Variable speichern und einfügen
16.04.2014 17:17:25
Isha
Hallo
Wie kann ich mit VBA in einem Tabellenblatt eine Zeile in einer Variablen speichern, damit ich diese Zeile später wieder einfügen kann?
Vor dem Einfügen muss ich die Zeile aber löschen. Ich habe folgendes versucht:
.Rows(i).Cut
.Rows(i).Delete
(weiterer Code)
.Rows(DestinationRow).Insert Shift:=xlDown
Dies funktioniert nicht, da nach dem Löschen die Zeile nicht mehr eingefügt werden kann. Vorheriges Löschen ist aber erforderlich.
Gruss, Isha

Anzeige

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
relRow=.Rows(i) u. später relRow auf Leerzeile orT
16.04.2014 17:43:59
Luc:-?
Gruß & FrOst, Luc :-?

AW: relRow=.Rows(i) u. später relRow...
16.04.2014 17:58:54
Isha
Funktioniert leider nur wenn nicht "Option explicit"
Wie muss die Variable deklariert werden?
Danke.

AW: relRow=.Rows(i) u. später relRow...
16.04.2014 18:09:49
Hajo_Zi
Zeilen sollte man as Long Definieren.

Anzeige
AW: relRow=.Rows(i) u. später relRow...
16.04.2014 18:17:14
Isha
As Long ergibt einen Laufzeitfehler 13: Typen unverträglich.
Noch eine Idee?
Gruss, Isha

AW: relRow=.Rows(i) u. später relRow...
16.04.2014 18:18:40
Hajo_Zi
Halo Isha,
keine Idde, was wohkl daran liegt das ich den Code nicht sehe.

AW: relRow=.Rows(i) u. später relRow...
17.04.2014 07:31:49
Isha
Hier der Code:
Option Explicit
Sub Test()
Dim relRow As Long
relRow = Rows(1)
Rows(10) = relRow
End Sub
Gruss, Isha

Anzeige
AW: relRow=.Rows(i) u. später relRow...
17.04.2014 08:09:12
Isha
Hier der Code:Option Explicit
Sub Test()
Dim relRow As Long
relRow = Rows(1)
Rows(10) = relRow
End Sub

Gruss, Isha

AW: relRow=.Rows(i) u. später relRow...
17.04.2014 09:54:28
Rudi
Hallo,
mit deinem Code speicherst du den Inhalt der Zeile 1, nicht die Zeilennummer.
Dim relRow as Variant
oder nur
Dim relRow
Gruß
Rudi
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Zeilen in einer Variable speichern und einfügen mit Excel VBA


Schritt-für-Schritt-Anleitung

Um mit Excel VBA eine Zeile in einer Variablen zu speichern und später wieder einzufügen, kannst du die folgenden Schritte befolgen:

  1. Öffne den VBA-Editor: Drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Erstelle ein neues Modul: Klicke mit der rechten Maustaste auf „VBAProject (deine Arbeitsmappe)“ und wähle „Einfügen“ > „Modul“.

  3. Deklariere die Variable: Lege eine Variable für die Zeilennummer fest. Es ist empfehlenswert, die Zeilennummer als Long zu deklarieren.

    Dim relRow As Long
  4. Speichere die Zeilennummer: Weise der Variable die Zeilennummer zu, die du speichern möchtest. Zum Beispiel:

    relRow = ActiveCell.Row
  5. Lösche die Zeile: Verwende den Delete-Befehl, um die Zeile zu löschen.

    Rows(relRow).Delete
  6. Füge die Zeile wieder ein: Um die Zeile wieder einzufügen, kannst du den Insert-Befehl verwenden:

    Rows(relRow).Insert Shift:=xlDown
  7. Führe das Makro aus: Speichere deinen Code und führe das Makro aus.


Häufige Fehler und Lösungen

  • Laufzeitfehler 13: Typen unverträglich: Dieser Fehler tritt häufig auf, wenn du versuchst, einen Wert in eine falsche Datentyp-Variable zu speichern. Stelle sicher, dass du die Variable korrekt deklariert hast, z.B. Dim relRow As Long.

  • Aktive Zelle nicht korrekt gespeichert: Wenn du die aktive Zelle nicht richtig speicherst, überprüfe, ob der Code zur Zuweisung der Zeilennummer korrekt ist. Verwende ActiveCell.Row, um die aktuelle Zeilennummer zu speichern.


Alternative Methoden

Wenn du die Zeile nicht direkt löschen und einfügen möchtest, kannst du auch den Inhalt der Zeile in eine andere Variable speichern. Hier ist ein Beispiel:

Dim rowData As Variant
rowData = Rows(relRow).Value  ' Speichern des Wertes der Zeile
Rows(relRow).Delete           ' Zeile löschen
Rows(DestinationRow).Value = rowData  ' Wert wieder einfügen

Diese Methode ist besonders nützlich, wenn du die Daten der Zeile zwischenzeitlich bearbeiten möchtest.


Praktische Beispiele

Hier ist ein einfaches Beispiel, wie du die aktive Zelle in eine Variable speichern kannst:

Option Explicit
Sub Beispiel()
    Dim relRow As Long
    relRow = ActiveCell.Row  ' Aktive Zeilennummer speichern
    Rows(relRow).Delete      ' Zeile löschen
    Rows(relRow).Insert Shift:=xlDown  ' Zeile einfügen
End Sub

Nutze dieses Beispiel als Ausgangspunkt für deine eigenen VBA-Skripte.


Tipps für Profis

  • Verwende Option Explicit: Dieses Schlüsselwort zwingt dich, alle Variablen zu deklarieren, was Laufzeitfehler vermeiden kann.

  • Nutze Variant für flexible Datentypen: Wenn du dir nicht sicher bist, welchen Datentyp du benötigst, kannst du Dim relRow As Variant verwenden. Dies kann helfen, Typkonflikte zu vermeiden.

  • Teste deinen Code schrittweise: Führe deinen Code zeilenweise aus, um sicherzustellen, dass alles wie gewünscht funktioniert.


FAQ: Häufige Fragen

1. Wie speichere ich den Wert der aktiven Zelle in einer Variablen?
Du kannst den Wert der aktiven Zelle speichern, indem du Dim cellValue As Variant verwendest und cellValue = ActiveCell.Value zuweist.

2. Was ist der Unterschied zwischen Long und Variant?
Long ist ein Datentyp, der nur ganze Zahlen speichert, während Variant flexibel ist und verschiedene Datentypen speichern kann. Verwende Variant, wenn du dir nicht sicher bist, welchen Typ du brauchst.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige