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

Forumthread: Daten ohne überschreiben in Tabelle einfügen

Daten ohne überschreiben in Tabelle einfügen
02.01.2015 09:52:50
Frank
Hallo zusammen und ein frohes neues Jahr,
ich habe eine Tabelle in Excel (also dass, was Excel Tabelle nennt). In diese Tabelle fülle ich Meldungen von externen Dienstleistern und unsere Bearbeitungsvermerke ein. Das alles geschieht per Copy & Paste aus einer anderen Anwendung. Danach erstelle ich mit anderen Formeln und Auswertungen hieraus einen Bericht für uns.
Es tritt häufiger auf, dass ich unsere Bearbeitunsmeldungen erst nachträglich einstellen kann. Hierzu möchte ich per VBA die Möglichkeit schaffen, dass Excel
1. ... die Daten ohne überschreiben in die Tabelle einfügt. Es müsste also geprüft werden, wieviele Zeile aus der Zwischenablage kommen und entsprechend viele Zeile in die Tabelle eingefügt werden. Alternativ könnten auch z. B. 10 Zeilen pauschal erstellt, der Inhalt hineinkopiert und die leeren Zeilen dann gelöscht werden.
2. ... die erste Zeile dieser "Einfügung" müsste wieder gelöscht werden, weil hier immer die Spaltenüberschriften der Datenquelle aufgeführt werden. Dies könnte m. E. entwender gehen, wenn Excel die Einfügeposition nutzen kann (als die Zeile, in der die neuen Daten beginnen) oder indem die Überschrift erkannt wird (beginnt immer mit "Einsteller").
Da an meiner "echten Datei" noch einige Formeln für weitere Auswertungen hängen, kann ich die Sache leider nicht anders darstellen.
Ich hoffe, ich habe mein Problem verständlich machen können, ansonsten schickt mir Unklarheiten bitte. Als Muster habe ich hier eine Datei für Euch: https://www.herber.de/bbs/user/94693.xlsx
Besten Dank
Frank

Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Daten ohne überschreiben in Tabelle einfügen
02.01.2015 10:54:33
fcs
Hallo Frank,
Excel kann den Inhalt der Zwischenablage nicht oder nur in eingeschränktem Umfang analysieren.
Deshalb die Variante 10 Leerzeilen einfügen und anschließend löschen.
Gruß
Franz
'Makro in einem allgemeinen Modul
Sub ExterneInhalteEinfuegen()
Dim wks As Worksheet
Dim Zeile As Long, Zeile2 As Long
Set wks = ActiveSheet
Zeile = ActiveCell.Row
If MsgBox("Inhalt aus Zwischenablage ab Zeile """ & Zeile & """ einfügen?") = vbOK Then
With wks
'10 Leerzeilen einfügen
.Range(.Rows(Zeile), .Rows(Zeile + 9)).Insert
'Einfügezelle selektieren
.Cells(Zeile, 1).Select
'Daten einfügen
ActiveSheet.Paste
'leere Zeilen und 1. Zeile wieder löschen
For Zeile2 = Zeile + 9 To Zeile Step -1
If .Cells(Zeile2, 2) = "" Or Zeile2 = Zeile Then
.Rows(Zeile2).Delete shift:=xlShiftUp
End If
Next
'Einfügezelle wieder selektieren
.Cells(Zeile, 1).Select
End With
End If
End Sub

Anzeige
AW: Daten ohne überschreiben in Tabelle einfügen
06.01.2015 12:11:41
Frank
Hallo Franz,
super, das klappt. Ich hab noch ein bischen an dem Makro rumgeschraubt und es meiner Datei angepasst. Sie sieht es jetzt aus:
'Makro in einem allgemeinen Modul
Sub ExterneInhalteEinfuegen()
Dim wks As Worksheet
Dim Zeile As Long, Zeile2 As Long
Set wks = ActiveSheet
Zeile = ActiveCell.Row
'Entsperren
ActiveSheet.Unprotect "*****"
On Error Resume Next
Application.Run "Bildschirmaktualisierung_ausschalten"
If MsgBox("Inhalt aus Zwischenablage unter Zeile """ & Zeile & """ einfügen?", vbOKCancel) = _
vbOK Then
With wks
'5 Leerzeilen einfügen
.Range(.Rows(Zeile + 1), .Rows(Zeile + 5)).Insert
'Einfügezelle selektieren
.Cells(Zeile + 1, 1).Select
'Daten einfügen
ActiveSheet.Paste
'leere Zeilen und 1. Zeile wieder löschen
For Zeile2 = Zeile + 5 To Zeile Step -1
If .Cells(Zeile2, 4) = "" Or Zeile2 = Zeile + 1 Then
.Rows(Zeile2).Delete Shift:=xlUp
End If
Next
End With
'wenn Cancel, Prozedur verlassen
Else
Exit Sub
End If
'Formel aus Spalte Status, Zeile 2 nach unten kopieren und so wieder aktualisieren
'Ausgangsformel in Zwischenablage
Range("Q2").Select
'In Spalte Status einfügen
Selection.Copy
Selection.AutoFill Destination:=Range("Tabelle2[Status]"), Type:= _
xlFillDefault
'Zelle über Einfügezeile,Spalte Status wieder selektieren
wks.Cells(Zeile, 16).Select
'Optimale Zeilenhöhe
Application.Run "Optimale_Höhe"
'Schutz einstellen
ActiveSheet.Protect "*****"
Application.Run "Bildschirmaktualisierung_einschalten"
End Sub
Besten Dank
Frank

Anzeige
AW: Daten ohne überschreiben in Tabelle einfügen
02.01.2015 15:54:39
NöHabIchNicht
Hallo
bsp mit auslesen der zwischenablage:
Private Sub CommandButton1_Click()
Dim r As Long
Dim c As Long
Dim z As Long
Dim sf() As String
With CreateObject("new:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")
.GetFromClipboard
sf() = Split(.GetText, vbCrLf)
End With
r = ActiveCell.Row + 1
c = ActiveCell.Column
z = r + UBound(sf)
With Tabelle1
.Range(.Rows(r), .Rows(z)).Insert
.Range(Cells(r, c), Cells(z, c)) = WorksheetFunction.Transpose(sf())
.Range(.Rows(r), .Rows(r)).Delete
End With
End Sub

Anzeige
AW: Daten ohne überschreiben in Tabelle einfügen
06.01.2015 12:08:58
Frank
Hallo NöHabIchNicht,
ich habe Franz Lösung bereits eingebaut, er hatte schon vorher gepostet. Aber Deine Lösung klappt grundsätzlich aus. Nur bekomme ich unterhalb meiner gefüllten Zeile noch Leerzeilen angezeigt. Aber wie gesagt, Franz hatte schon vorher geantwortet.
Gruß und besten Dank
Frank
Anzeige

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Daten in Excel einfügen, ohne bestehende Inhalte zu überschreiben


Schritt-für-Schritt-Anleitung

Um in Excel Daten einzufügen, ohne bestehende Inhalte zu überschreiben, kannst du ein einfaches VBA-Makro verwenden. Hier ist eine Schritt-für-Schritt-Anleitung:

  1. Öffne die Excel-Datei und drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Füge ein neues Modul hinzu: Rechtsklick auf "VBAProject (deine_datei.xlsx)" > Einfügen > Modul.

  3. Kopiere den folgenden Code in das Modul:

    Sub ExterneInhalteEinfuegen()
       Dim wks As Worksheet
       Dim Zeile As Long, Zeile2 As Long
       Set wks = ActiveSheet
       Zeile = ActiveCell.Row
    
       If MsgBox("Inhalt aus Zwischenablage ab Zeile """ & Zeile & """ einfügen?") = vbOK Then
           With wks
               '10 Leerzeilen einfügen
               .Range(.Rows(Zeile), .Rows(Zeile + 9)).Insert
               'Einfügezelle selektieren
               .Cells(Zeile, 1).Select
               'Daten einfügen
               ActiveSheet.Paste
               'leere Zeilen und 1. Zeile wieder löschen
               For Zeile2 = Zeile + 9 To Zeile Step -1
                   If .Cells(Zeile2, 2) = "" Or Zeile2 = Zeile Then
                       .Rows(Zeile2).Delete shift:=xlShiftUp
                   End If
               Next
               'Einfügezelle wieder selektieren
               .Cells(Zeile, 1).Select
           End With
       End If
    End Sub
  4. Schließe den VBA-Editor und kehre zu Excel zurück.

  5. Wähle die Zelle aus, unter der die Daten eingefügt werden sollen, und führe das Makro aus (z.B. über ALT + F8).

Mit diesem Makro kannst du problemlos Daten aus der Zwischenablage einfügen, ohne bestehende Inhalte zu überschreiben.


Häufige Fehler und Lösungen

  • Excel kann die Daten nicht einfügen: Stelle sicher, dass du genug freie Zeilen unterhalb der Zielzelle hast. Wenn nicht, kann es zu Problemen kommen.
  • Leere Zeilen bleiben nach dem Einfügen: Überprüfe den Code und stelle sicher, dass die Bedingungen zum Löschen der leeren Zeilen korrekt sind.

Alternative Methoden

Falls du kein VBA verwenden möchtest, gibt es auch manuelle Methoden:

  1. Manuelles Einfügen: Wähle die Zelle aus, unter der du die neuen Daten haben möchtest, und klicke mit der rechten Maustaste. Wähle "Einfügen" und dann "Zellen einfügen" aus.
  2. Kopiere mehrere Zeilen: Du kannst mehrere Zeilen kopieren und dann die gewünschten Leerzeilen manuell einfügen, um die bestehenden Daten nicht zu überschreiben.

Praktische Beispiele

Angenommen, du hast Daten in einer externen Anwendung, die du in deine Excel-Tabelle einfügen möchtest. Verwende das Makro, um die Daten ohne Überschreibung der bestehenden Zeilen zu integrieren:

  • Beispiel: Wenn du 10 Zeilen aus einer Anwendung kopierst, kannst du sie direkt unterhalb der letzten gefüllten Zeile in deiner Excel-Tabelle einfügen, indem du das oben beschriebene Makro ausführst.

Tipps für Profis

  • Shortcut für das Einfügen: Wenn du häufig kopierte Zellen einfügen möchtest, kannst du einen Shortcut für dein Makro erstellen, um den Prozess zu beschleunigen.
  • Datenüberprüfung: Implementiere eine Datenüberprüfung vor dem Einfügen, um sicherzustellen, dass keine ungewollten Daten überschrieben werden.

FAQ: Häufige Fragen

1. Wie kann ich mehrere Zeilen kopieren und einfügen, ohne zu überschreiben?
Verwende das VBA-Makro, um die genaue Anzahl an Leerzeilen zu erstellen, die du benötigst, bevor du die Daten einfügst.

2. Gibt es eine Möglichkeit, das Einfügen schneller zu machen?
Ja, du kannst einen Shortcut für das Makro definieren, damit du es schneller ausführen kannst, ohne jedes Mal ins Menü zu gehen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige